ART-PI Smart 開(kāi)發(fā)板介紹
art-pi smart 是rt-thread公司推出的一款基于NXP公司imx6ull處理器的開(kāi)發(fā)板,主要用來(lái)測試評估RT公司去年新發(fā)布的混合微內核操作系統RT-Smart。
RT-Thread Smart(簡(jiǎn)稱(chēng) rt-smart)嵌入式實(shí)時(shí)操作系統是基于 RT-Thread 操作系統衍生的新分支,面向帶 MMU,中高端應用的芯片,例如 ARM Cortex-A 系列芯片,MIPS 芯片,帶 MMU 的 RISC-V 芯片等。rt-smart 在 RT-Thread 操作系統的基礎上啟用獨立、完整的進(jìn)程方式,同時(shí)以混合微內核模式執行。
rt-smart 是一款高性能混合微內核操作系統,在傳統嵌入式操作系統劃分中,rt-smart 能夠填補傳統 RTOS 和大型操作系統 Linux 之間的空白,在實(shí)時(shí)性、成本、安全性、啟動(dòng)速度等方面可以取得最佳的平衡。
開(kāi)發(fā)環(huán)境的建立
下載RT-Smart SDK
RT官方針對ART-PI Smart開(kāi)發(fā)板提供了完整的SDK開(kāi)發(fā)包,該SDK有完整的bsp支持,并且有詳細的readme文件作為離線(xiàn)參考,在進(jìn)行開(kāi)發(fā)之前,先從gittee上獲取該sdk完整的文件(本人電腦離線(xiàn)使用居多,所以簡(jiǎn)單粗暴直接從gittee上下載zip本地解壓即可)。這里需要注意一下,因為后續本人選擇的是scons構建工具通過(guò)ENV命令行窗口來(lái)進(jìn)行構建,所以SDK放置的目錄一定不要有中文(任何開(kāi)發(fā)設計工作,都不要出現中文路徑,這是個(gè)好習慣)。1.ART-Pi-Smart SDK倉庫https://gitee.com/rtthread/ART-Pi-smart
2.ART-Pi-Smart 用戶(hù)手冊
https://art-pi.gitee.io/smart-website/docs/#/user_manual/user_manual?id=windows-%e4%b8%8b%ef%bc%8c%e5%bf%ab%e9%80%9f%e4%bd%93%e9%aa%8c-rt-smart
如下圖所示,是ART-PI Smart的SDK目錄結構:
安裝ENV和SCONS構建工具
Env 是 RT-Thread 推出的開(kāi)發(fā)輔助工具,針對基于 RT-Thread 操作系統的項目工程,提供編譯構建環(huán)境、圖形化系統配置及軟件包管理功能。其內置的 menuconfig 提供了簡(jiǎn)單易用的配置剪裁工具,可對內核、組件和軟件包進(jìn)行自由裁剪,使系統以搭積木的方式進(jìn)行構建。主要特性
menuconfig 圖形化配置界面,交互性好,操作邏輯強;- 豐富的文字幫助說(shuō)明,配置無(wú)需查閱文檔;
- 使用靈活,自動(dòng)處理依賴(lài),功能開(kāi)關(guān)徹底;
- 自動(dòng)生成 rtconfig.h,無(wú)需手動(dòng)修改;
- 使用scons工具生成工程,提供編譯環(huán)境,操作簡(jiǎn)單;
- 提供多種軟件包,模塊化軟件包耦合關(guān)聯(lián)少,可維護性好;
- 軟件包可在線(xiàn)下載,軟件包持續集成,包可靠性高;
-
RT官方ENV用戶(hù)手冊
https://www.rt-thread.org/document/site/#/development-tools/env/env
-
RT官方SCONS用戶(hù)手冊
https://www.rt-thread.org/document/site/#/development-tools/scons/scons
安裝對應系統下的編譯工具鏈
ART-PT Smart可以在windows下開(kāi)發(fā),也可以在Linux環(huán)境下開(kāi)發(fā),本人選擇了日常熟悉的windows環(huán)境開(kāi)部署相關(guān)的編譯工具鏈,也方便后續新上手的朋友們快速熟悉。在解壓好的SDK根目錄下,找到toos文件夾,進(jìn)去之后,在tools文件夾下,打開(kāi)ENV窗口,輸入指令
1pythonget_toolchain.py
在主機保證聯(lián)網(wǎng)的前提下,該腳本會(huì )自動(dòng)識別用戶(hù)當前的開(kāi)發(fā)環(huán)境,自動(dòng)安裝相匹配的編譯工具鏈安裝完畢之后,在ENV命令行界面,輸入如下指令,查看工具鏈是否安裝正確:
1arm-linux-musleabi-gcc-v
出現如下內容代表工具鏈已經(jīng)自動(dòng)安裝好:
1Usingbuilt-inspecs.
2COLLECT_GCC=arm-linux-musleabi-gcc
3COLLECT_LTO_WRAPPER=e:/test/rt-smart/tools/gnu_gcc/arm-linux-musleabi_for_i686-w64-mingw32/bin/../libexec/gcc/arm-linux-musleabi/7.3.0/lto-wrapper.exe
4Target:arm-linux-musleabi
5Configuredwith:../src_gcc/configure--disable-werror--prefix=--target=arm-linux-musleabi--with-sysroot=/arm-linux-musleabi--with-build-sysroot=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_i686-w64-mingw32/sysroot/--enable-languages=c,c++--disable-multilib--enable-tls--disable-libmudflap--disable-libsanitizer--disable-gnu-indirect-function--disable-libmpx--enable-libstdcxx-time--host=i686-w64-mingw32--disable-bootstrapAR_FOR_TARGET=arm-linux-musleabi-arAS_FOR_TARGET=arm-linux-musleabi-asLD_FOR_TARGET=arm-linux-musleabi-ldNM_FOR_TARGET=arm-linux-musleabi-nmOBJCOPY_FOR_TARGET=arm-linux-musleabi-objcopyOBJDUMP_FOR_TARGET=arm-linux-musleabi-objdumpRANLIB_FOR_TARGET=arm-linux-musleabi-ranlibREADELF_FOR_TARGET=arm-linux-musleabi-readelfSTRIP_FOR_TARGET=arm-linux-musleabi-strip
6Threadmodel:posix
7gccversion7.3.0(GCC)
8builddate:Sep30202113:47:19
9buildsha:b998444eb32a74bdeb55fd70963187255ae6efe0
10buildjob:173019
接著(zhù),打開(kāi)ENV工具,然后輸入執行:
1smart-env.bat
該操作是在進(jìn)一步開(kāi)發(fā)前先設置好環(huán)境變量(rt-smart 工具鏈、編譯器等),輸入如下指令,查看環(huán)境變量是否生效:
1setRTT
如果生效,則會(huì )顯示如下信息,否則請檢sdk相關(guān)查路徑是否有中文,或者工具鏈沒(méi)有安裝等。
1RTT_CC=gcc
2RTT_CC_PREFIX=arm-linux-musleabi-
3RTT_EXEC_PATH=E: est
t-smart oolsgnu_gccarm-linux-musleabi_for_i686-w64-mingw32
4in
(注意:后續每次打開(kāi)ENV工具進(jìn)行scons之類(lèi)的操作,都必須線(xiàn)設置該環(huán)境變量,否則后續編譯構建將會(huì )報錯?。?/span>
構建和編譯內核
內核裁剪與構建
進(jìn)入到SDK根目錄下,然后依次進(jìn)入到ART-PI Smart BSP所在的目錄下,例如:
1盤(pán)符:..ART-Pi-smart-masterkernelspimx6ull-artpi-smart
在該目錄下,打開(kāi)ENV命令行窗口,輸入指令:
1menuconfig
則ENV窗口會(huì )自動(dòng)彈出內核的圖形配置界面,如下圖所示:
1scons
該編譯指令其實(shí)還可以配合其他參數一起使用,具體細節請參考前文提到的官方SCONS用戶(hù)手冊。
新內核的更新方式
在bsp目錄下,scons成功之后,將會(huì )生成內核的可執行文件,分別是:
1rtthread.bin
2rtthread.elf
3rtthread.imx
4rtthread.img
運行新的內核,本文只用到了以上兩種文件格式,分別是imx和bin格式的內核文件。
單次運行新內核
通過(guò)開(kāi)發(fā)板網(wǎng)絡(luò )接口,可以傳輸內核文件到開(kāi)發(fā)板并且執行,檢測內核當前運行情況。同時(shí)也可以利用開(kāi)發(fā)板上第二個(gè)usb接口,通過(guò)上位機軟件加載啟動(dòng)內核。這兩種方式在官方手冊里介紹的較為詳細,本文不再贅述。請參考前文給出的官方鏈接。在這里提及這種方式,主要是想引出一個(gè)自己遇到的問(wèn)題,本人手中的板子,emmc文件系統上的內核文件版本較老,網(wǎng)絡(luò )IP不能靜態(tài)設置,只能DHCP動(dòng)態(tài)分配,而我身邊恰好沒(méi)有路由器,更新之后內核用到官方的方式加載運行之后,可以正常設置靜態(tài)IP,但是復位之后,系統內核又回到舊的版本,也就是說(shuō),上面提到的官方示例的加載運行方式是把內核文件加載到RAM種運行了,所以,如果跟我一樣有需要把內核文件上傳到emmc的文件系統中的朋友,可以用下面兩種方式。
固化內核到EMMC文件系統
方法一:通過(guò)webserver傳輸目前Smart的內核中,帶有webclien.elf程序,在電腦端可以建立一個(gè)webserver服務(wù)器,在板子上,執行webclient.elf,可以直接訪(fǎng)問(wèn)并下載對應路徑下的內核bin文件,然后在控制臺窗口,通過(guò)cp指令把新的內核bin文件拷貝覆蓋到舊的內核所在的路徑下即可。這種方式比較一勞永逸,但是,在本人實(shí)際測試過(guò)程中,webclient下載到的文件一直出錯,文件大小也不對。不知道是否是webclient.elf源碼有bug。該方法暫時(shí)記錄在此處,有興趣研究的朋友可以后續自行嘗試。 下面貼出我在電腦端建立建議websever的python指令:
1python-mhttp.server8080
方法二:通過(guò)sd傳輸除了web下載內核bin文件到emmc上的文件系統中,還可以更簡(jiǎn)單粗暴的通過(guò)sd卡把bin文件傳輸到文件系統中。該過(guò)程較為簡(jiǎn)單,在系統控制臺界面,進(jìn)入sd卡的bin文件所在路徑,直接cp操作就ok。
這里需要記錄一下本人在使用SD卡時(shí)出現的小問(wèn)題。當前smart系統不支持sd卡的熱插拔檢測,所以,在系統運行時(shí),拔掉sd卡,內核會(huì )報rt_device相關(guān)的錯誤。其二是,在系統初始化打印信息的時(shí)候,每次都提示SD卡初始化失敗,但是進(jìn)入系統后,sd卡目錄又能正常訪(fǎng)問(wèn),不知道是不是系統bug,后續感興趣的朋友可以嘗試解決一下。
用戶(hù)態(tài)程序編譯
內核的相關(guān)操作之后,就是用戶(hù)APP程序的相關(guān)操作介紹了。這一部分較為簡(jiǎn)單,在ENV窗口下(確保已經(jīng)執在根目錄下行過(guò)set RTT指令,并且檢查環(huán)境變量是正確的),進(jìn)入到如下路徑
1盤(pán)符:...ART-Pi-smart-masteruserapps
該路徑下apps文件夾下,存放的是用戶(hù)app的源文件,例如HELLO文件夾下,存放的就是輸出“hello world”的歷程源碼,在root/bin路徑下,存放的是用戶(hù)app對應編譯生成的系統elf格式的可執行文件。用戶(hù)APP程序構建使用的是SCONS工具,該工具采用的python語(yǔ)言編寫(xiě),類(lèi)似于Liunx下常用的的Cmake之類(lèi)的工具,我們以官方hello程序為例,默認scons構建腳本已經(jīng)寫(xiě)好,具體scons的操作方法,請參考前文提到的官網(wǎng)文檔,此處不贅述。此時(shí)在ENV界面下,輸入如下指令即可完成編輯和生成elf文件:
1scons--app=hello
編譯成功之后,會(huì )看到相應的信息和生成的elf文件名稱(chēng),如果程序有語(yǔ)法錯誤,那么此處會(huì )有詳細的報錯。這里再本人測試使用中發(fā)現一個(gè)問(wèn)題,當前編譯檢查較為嚴格,移植之前自己寫(xiě)的小例程,發(fā)現一些沒(méi)有調用的變量和函數,統統會(huì )被視為錯誤,或者一些不是那么匹配的數據類(lèi)型(如char到int之類(lèi)的),也是直接全部報錯,而不是警告,這一點(diǎn)是可以修改編譯規則的,但是本人太熟悉對應的腳本文件,所以暫時(shí)沒(méi)有處理,在次提出該問(wèn)題,供后來(lái)朋友避坑。
用戶(hù)態(tài)程序下載運行
在sd卡運行
用戶(hù)程序生成的elf文件,在root/bin路徑下,拷貝該elf文件到sd卡,并且掛載sd卡到系統上,進(jìn)入到對應目錄,即可運行用戶(hù)的應用程序。這個(gè)方法對于需要反復調試的操作很不友好。所以更推薦下面這種做法。tftp方式運行
在群友@Red 的推薦下,本人測試了一款開(kāi)源的tftp客戶(hù)端,名字叫做tftpxtftpx github倉庫鏈接
https://github.com/ideawu/tftpx/blob/master/client.c
它在開(kāi)發(fā)板上運行之后,配合電腦端tftp服務(wù)器,即可下載對應路徑下的elf文件到板子系統中去。電腦端推薦使用tftp64.exe這個(gè)軟件,按照要求建立好TFTP服務(wù)器,設置好IP和文件所在路徑,即可。然后通過(guò)SD卡,把tftpx.elf文件拷貝到板子系統root/bin路徑下,并且執行,執行格式如下:
1tftpx.elf192.168.1.1008080
此時(shí)只要網(wǎng)絡(luò )暢通,就會(huì )提示相應的操作說(shuō)明,我們可以輸入如下指令,來(lái)下載剛剛編譯好的hello.elf
用戶(hù)app。
1gethello.elf
下載完畢后退出,即可。本人把編譯好的tftpx.elf文件放在附件中,供有需要的朋友下載使用。如果您有更方便更高效的elf傳輸加載方式,也可回帖分享介紹哦。(●'?'●)
總結
rt-smart作為國產(chǎn)新一代操作系統。未來(lái)可期。在起步階段,能做到當下的完成程度,實(shí)屬不易,任何一個(gè)做軟件開(kāi)發(fā)的工程師,都能想象到這其中的艱辛和不易。在本次初步使用過(guò)程中,既體會(huì )到了RT系統高效精煉的特點(diǎn),也發(fā)現了些許問(wèn)題,在積極與群里各位大佬交流中,不僅解決了問(wèn)題,還學(xué)到了很多其他方面的知識。我認為這才是一種良心循環(huán)。作為一個(gè)開(kāi)源系統,衷心希望在@bernard 的帶領(lǐng)下,大家都多多參與進(jìn)來(lái),貢獻自己微薄的力量,讓Smart在未來(lái)能以洪水之勢迅猛發(fā)展。最后,再次感謝RT官方提供的這次試用機會(huì ),感謝熊大@bernard 在半夜還在給大家解決問(wèn)題.感謝@RT-Thread小師弟認真負責的態(tài)度,在疫情期間保證了板子的順利發(fā)貨以及本活動(dòng)的順利進(jìn)行。本人預計后續會(huì )陸續把最近在使用過(guò)程中的一些心得、程序設計等方面的感悟分享出來(lái)。作為該分享的第一篇,我想以詩(shī)人北島的詩(shī)《回答》中的幾句話(huà),作為第一篇文章的結束;致代碼,致理想,致這個(gè)世界上每一個(gè)參與開(kāi)源項目的蕓蕓碼農。“如果海洋注定要決堤,
就讓所有的苦水都注入我心中,
如果陸地注定要上升,
就讓人類(lèi)重新選擇生存的峰頂。
新的轉機和閃閃星斗,
正在綴滿(mǎn)沒(méi)有遮攔的天空。
那是五千年的象形文字,
那是未來(lái)人們凝視的眼睛?!?br /> ---北島《回答》節選
作者:RT-Thread社區成員RickFlying
原文標題:RickFlying
文章出處:【微信公眾號:RTThread物聯(lián)網(wǎng)操作系統】歡迎添加關(guān)注!文章轉載請注明出處。
-
NXP
+關(guān)注
關(guān)注
60文章
1229瀏覽量
178684 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4579瀏覽量
94986 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1189瀏覽量
39021
原文標題:RickFlying
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統】歡迎添加關(guān)注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
ART-Pi Smart開(kāi)發(fā)板開(kāi)箱及愛(ài)之初次體驗
![<b class='flag-5'>ART-Pi</b> <b class='flag-5'>Smart</b><b class='flag-5'>開(kāi)發(fā)板</b>開(kāi)箱及愛(ài)之初次體驗](https://file.elecfans.com//web2/M00/40/7A/pYYBAGJuQ9yAH-PgAAC6xPpJ5Xo195.jpg)
ART-Pi Smart開(kāi)發(fā)板開(kāi)箱體驗
ART Pi Smart基于RT-Thread Smart系統的LVGL移植
![<b class='flag-5'>ART</b> <b class='flag-5'>Pi</b> <b class='flag-5'>Smart</b>基于RT-Thread <b class='flag-5'>Smart</b>系統的LVGL移植](https://file1.elecfans.com/web2/M00/B3/82/wKgZomVm2RCAbVlCAAGK1LjP1po010.jpg)
評論