玩轉RT-Thread之荔枝派Nano(全志F1C100S)一、新手上路

2020-09-05 紅楓物聯網

在此感謝


  • RT-Thread官方成員@uestczyh222提供的荔枝派Nano內核移植、rttbootloader文件、rtota等一系列工具。
  • 挖坑/填坑網https://debugdump.com/站長@暈哥,默默的為我們收集各種荔枝派Nano相關的資訊、工具。


RT-Thread是一款由中國開源社區主導開發的開源嵌入式實時作業系統(遵循GPLv2+許可協議,當標識產品使用RT-Thread時可以按照自由代碼非開源的方式應用在商業產品中),它包含實時嵌入式系統相關的各個組件:實時作業系統內核、TCP/IP協議棧、文件系統、libc接口、圖形引擎等。

RT-Thread實時作業系統是一個分層的作業系統,它包括了:


  • 底層移植、驅動層,這層與硬體密切相關,由Drivers和CPU移植相構成。
  • 硬實時內核,這層是RT-Thread的核心,包含了內核系統中對象的實現,例如多線程機器調度,信號量,郵箱,消息隊列,內存管理,定時器等實現。
  • 組件層,這些是基於RT-Thread核心基礎上的外圍組件,例如文件系統,命令行shell接口,LwIP輕型TCP/IP協議棧,GUI圖形引擎等。

更詳細信息及開發文檔可在官網https://www.rt-thread.org獲取。

RT-Thread代碼開源在github及國內的碼雲,2個倉庫同步更新。2018年3月底最新版本為3.0.3。github倉庫地址:https://github.com/RT-Thread,碼雲倉庫地址:https://gitee.com/rtthread

荔枝派Nano採用全志科技F1C100s ARM9內核SOC處理器,主頻408MHz,片內DDR達32MByte,支持UART、USB OTG、SPI、TWI、TP、SD/MMC、LCD、音視頻接口等眾多外設接口,是一款不可多得的高配低價開發板。荔枝派Nano相關資料可在:

https://pan.baidu.com/s/1smzuGS9下載。


同時荔枝派Nano在正式發售之前已經得到了Linux、RT-Thread等作業系統支持。RT-Thread是率先完成荔枝派Nano移植的嵌入式實時RTOS作業系統,代碼已經合併進RT-Thread官方github倉庫,github地址為:

https://github.com/RT-Thread/rt-thread/tree/master/bsp/allwinner_tina

一、開發環境搭建

windows下使用RT-Thread進行荔枝派Nano開發,推薦使用RT-Thread Env工具。RT-Thread Env工具包括配置器和包管理器,用來對內核和組件的功能進行配置,對組件進行自由裁剪,對線上軟體包進行管理,使得系統以搭積木的方式進行構建,簡單方便。

同時Env工具自帶RT-Thread開發過程中需要用到的git、python、scons、arm-none-eabi-gcc等多種工具。

Env工具可在RT-Thread官網->「資源」->「下載」頁面下載,下載地址:

https://www.rt-thread.org/page/download.html

Env自帶的arm-none-eabi-gcc正是荔枝派Nano使用的交叉編譯器,Env工具已經幫我們配置好環境變量,可直接使用。Env工具使用請參照Env工具包內使用說明。

二、RT-Thread編譯與運行

1. RT-Thread下載

RT-Thread官方github地址為:https://github.com/RT-Thread/rt-thread。在Env工具下使用:git clone https://github.com/RT-Thread/rt-thread.git。RT-Thread荔枝派Nano源碼文件位於RT-Thread/bsp/allwinner_tina目錄。

2. RT-Thread編譯

在Env工具下切換目錄至RT-Thread/bsp/allwinner_tina,並執行scons命令,即可編譯。

正確編譯完成後,會自動生成rtthread.bin文件。

3. rttbootloader下載

RT-Thread荔枝派Nano在Windows下更新固件需通過rttbootloader引導,USB更新。rttbootloader下載只需1次即可,完成後即可通過「rtota工具」下載。在開始正式下載之前需要完成以下步驟:

(1) USB驅動安裝

荔枝派Nano在Windows下使用USB需要安裝驅動,驅動可在QQ群(711174828)空間下載或挖坑/填坑網F1C100S頁面(https://debugdump.com/t_444.html)下載。

1) 短接flash 1、4腳(當flash中無可引導代碼時無需此步驟)

2) 連接USB

此時如果在「設備管理器」中發現「無法識別」設備,那就是需要安裝USB驅動。驅動名為Zadig。

安裝完成後,即可在Windows下發現USB設備。

(2) rttbootloader下載

rttbootloader_f1c100s_v1.0.0.bin是RT-Thread適用於F1C100S的bootloader,使用rttbootloader後即可通過Flash,下載、啟動、運行RT-Thread,否則只能下載程序在Ram中運行,掉電後程序即丟失。

當前1.0.0版rttbootloader_f1c100s只支持8MByte及以上的Flash,並且Falsh地址已經固定。期待更新的1.0.1版本發布。

rttbootloader_f1c100s_v1.0.0.bin可在QQ群(711174828)空間下載或挖坑/填坑網F1C100S頁面(https://debugdump.com/viewtopic.php?pid=3924p3924)下載。

其中:


  • 選擇固件:為之前RT-Thread源碼bsp下allwinner_tina目錄編譯完成後的rtthread.bin文件。
  • 保存路徑:可自由設置保存路徑,OTA固件名與選擇固件名一致,後綴為.rbl。
  • 固件名稱:必須設置為app。
  • 固件版本:可根據實際情況輸入。
  • 其他選項為默認。
2) OTA固件更新

上一步驟已完成rttbootloader下載至spiflash中,同時已經生成OTA固件。此時需要將荔枝派Nano啟動至rttbootloader狀態,否則無法更新OTA固件。

OTA固件更新使用「rtota工具」,該工具通過windows命令行執行,可直接在Env工具下運行。期待windows圖形工具發布!!!

「rtota工具」可在可在QQ群(711174828)空間下載或挖坑/填坑網F1C100S頁面

(https://debugdump.com/viewtopic.php?pid=3924#p3924)下載

rttbootloader已將Uart0設置為shell串口,Uart0在荔枝派Nano中分別為PE0(Rx0)和PE1(Tx0),請連接至PC,rttbootloader默認波特率為115200。

在沒有下載RT-Thread應用固件或在啟動3秒內輸入鍵盤任意鍵,rttbootloader自動進入bootloader。

在rttbootloader模式下,使用env工具,輸入命令:rtota -u ./rtthread.rbl,開始下載。

同時輸入rtota,可獲取工具使用手冊

其中:


  • -u:下載至flash。
  • -R:下載至ram運行。

5. 運行

以上操作已將rtthread.bin下載至荔枝派Nano的flash中,每次重啟後,rttbootloader先行運行,然後啟動RT-Thread應用。

RT-Thread應用同樣使用Uart0設置為shell串口,將Uart0連接至PC,這樣就可以看到RT-Thread正常啟動後的Logo及荔枝派Nano的時鐘運行頻率等信息。

在msh命令行狀態下,輸入help或者TAB鍵,即可查看當前RT-Thread shell命令。

相關焦點

  • 物聯網晶片性價比之王,全志F1C200S F1C100S系列晶片介紹
    從淘寶買一定要注意分辨是拆機還是庫存還是正規代理貨源,千萬別圖便宜,拆機良率可能20%; 根據用量,找代理商價格100s是9元多,200s是13塊左右。這麼10來塊錢,32MB 和 64MB 的外擴內存都買不到啊,用來驅動RGB屏幕啥的,STM32趕緊靠邊站。
  • RISC-V單片機快速入門02-移植RT_Thread Nano
    前言:上一節,我們使用芯來科技Nuclei Studio IDE搭建了裸機開發環境,本節我們開始正式移植RT_Thread系統。document/site/tutorial/nano/nano-port-gcc-riscv/an0042-nano-port-gcc-riscv/include &34;34;gd32vf103c_start.h&include &34;static rt_thread_t dynamic_thread = RT_NULL;void led_process_thread_entry(void parameter
  • RISC-V單片機快速入門03-基於RT_Thread Nano添加控制臺
    (1) 串口初始化在gd32vf102c_start.c中定義調試串口初始化函數void uart_debug_init(void),同時在gd32vf103c_start.h中聲明。(2) 實現 rt_hw_console_output在gd32vf102c_start.c文件中,
  • RT-Thread Nano 3.1.3 正式發布
    RT-Thread Nano 是 RT-Thread 的一版極簡版實時內核,近幾年來隨著 RT-Thread 完整版迅速發展,小夥伴們把越來越多的目光聚焦到完整版上,從而淡化了對 Nano 版本的關注
  • 一文詳解RT-Thread自動初始化
    一、前言 在學RT-Thread時,經常能聽到這個詞:自動初始化。用起來也非常容易,一個宏就解決了,但是原理是什麼呢?官網文檔提及到了, (他們的文檔在這裡:https://www.rt-thread.org/document/site/programming-manual/basic/basic/#rt-thread_3),但是寫的只是概念層面上的,看完後會使用但原理還是不太清楚。之前研究過,今天把它總結下,寫出來分享。
  • 《rt-thread驅動框架分析》-i2c驅動
    ③RTT在核心層上,也像pin驅動那樣,封裝了一套API(虛線箭頭),供用戶直接使用。④dev是提供RTT設備驅動框架的統一的API(實現箭頭)。⑤注意的是:模擬I2C驅動到核心層,增加了一層中間層。設備層:設備就是雜七雜八的使用I2C的總線的設備。而這些設備可以選擇使用RTT驅動框架的API,也可以選擇RTT封裝好的API。
  • RT-Thread 3.0.3 發布,中國自主物聯網作業系統
    RT-Thread 3.0.3 日前已正式發布,本次 RT-Thread 3.0.3 版本的發布主要包含兩大塊:一是全版本 IoT OS,一是 RT-Thread nano。
  • RISC-V單片機快速入門04-基於RT_Thread Nano添加FinSH
    前言:上一節,我們適配了控制臺輸出,可以列印調試信息,本節我們為系統增加FinSH功能,增加FinSH組件後,用戶可輸入命令調試或查看系統信息。一、基礎知識1.FinSH簡介RT-Thread FinSH 是 RT-Thread 的命令行組件(shell),提供一套供用戶在命令行調用的操作接口,主要用於調試或查看系統信息。
  • 【RT-Thread】線程的基本知識
    (void* parameter){    rt_uint32_t i = 0;    rt_kprintf("This is static thread!\n");        while (1)    {        rt_kprintf("static thread count:%d \r\n", ++i);                rt_thread_delay(500);    }}int main(void){    rt_err_t
  • RT-Thread教程一之Linux下開發環境及QEMU配置
    RT-Thread原始碼Linux下安裝git後在工程目錄下(比~/Workplace)執行git clone https://github.com/RT-Thread/rt-thread我們看一下樹目錄結構rt-thread git:(master) tree . -L 1.
  • 最極客範的名片:可運行Linux系統,花費不到3美元,內置全志F1C100s
    「要說到最具極客範的名片,下面這張能運行Linux系統的PCB名片,肯定能讓你眼前一亮。」這張能運行Linux系統的名片出自嵌入式系統工程師George Hilliard之手,整張名片僅銀行卡大小,超薄、實用,並且花費還不到3美元。
  • 基於RT-Thread 使用 wireshark 抓取 HTTPS 數據包
    == RT_NULL || master == RT_NULL)19 {20 rt_kprintf("random_c or master is null\n");21 return;22 }2324 host = (struct hostent *) gethostbyname(ip);25 if(host == RT_NULL)26 {27
  • rt-thread內核對象標誌(object.flag)總結
    1 前言 在前面介紹rt-thread內核對象時(http://blog.csdn.net/flydream0?viewmode=contents),有介紹到rt-thread內核對象成員flag,但是沒有怎麼具體介紹他的含意,只是把它當做普通標誌來理解,這裡特意將此flag提出來總結一下,這也是這篇博文的目的. 首先,內核對象的flag確實是一標誌,且是8個位的數據,按位來定義的,那麼它到底各個位是怎麼定義的呢?答案是用在不同的內核對象時,它的各位定義會有所不同.
  • RT-Thread x STM32 全連接創意創客大賽已開始報名
    >● 代碼和文檔均開源(建議代碼託管在Gitee)● 開發者基於RT-Thread開發物聯網創新型應用或者終端產品● 基於主辦方提供的硬體ART-Pi STM32H750或者自備STM32硬體RT-Thread版本使用說明可以使用:RT-Thread nano
  • 在rt-thread下實現OTA在線固件更新功能
    Bootloader 在線獲取地址: http://iot.rt-thread.com登陸帳號首先在 main.c 文件中添加如下代碼,這段代碼的功能是重新設定中斷向量跳轉地址為 app 分區的地址。在對固件進行打包操作前,先修改 stm32f407-atk-explorer/applications/main.c 中 APP_VERSION 宏的值為 2.0.0 作為參照,然後重新編譯一遍生成新的 rtthread.bin 文件,修改內容如下圖所示:
  • 如何通過IPC通信玩轉傳感器數據?
    這個應用將加入rt-smart與rt-thread區別之處--進程間的通信。 功能主要是在用戶態讀取傳感器數據,傳感器是100ASK_imx6ull板載的ap3216c,它是採用I2C總線進行通信。 為啥這次會先對接I2C呢?因為接下來想把屏幕在rt-smart跑起來,但是屏幕的觸摸晶片採用I2C,所以就把他先跑起來。
  • RT Thread v2.1.0 正式版發布
    下載連結:git打包下載:http://git.oschina.net/rtthread/rt-thread/repository/archive/v2.1.0這個版本經歷的時間比較長,並且原定的一些目標也還未能完成(更全的POSIX支持,包括device fd,socket等在內的select API接口等)。
  • 物聯網作業系統一站式開發工具:RT-Thread Studio
    想要玩轉 ENV ,要了解Scons,Python,Kconfig 等眾多知識點,學習成本比較高。為了解決大家的這些痛點,RT-Thread 官方團隊歷經一年用心打磨,推出了 RT-Thread Studio 集成開發環境(IDE),讓大家告別 ENV,能夠基於一款 IDE 快速的進行 RT-Thread 項目開發。
  • 是的,RT-Thread 4.0代碼發布了,還有……
    格式創建卷 (HubretXie)struct dfs_fd中顯式加入所屬的file system句柄;修正當打開POSIX API時,獲取stdio fd出錯的問題;(gbcwbz)修正DFS中,如存在多個mount文件系統,當文件系統內判斷相同路徑,判斷出錯的問題;更改dfs中getcwd()函數以dfs_lock/unlock方式來保持互斥(取代原來以關閉調度方式保持互斥);重寫finsh中listthread