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

ART-Pi Smart開(kāi)發(fā)板開(kāi)箱體驗(yàn)
ART Pi Smart基于RT-Thread Smart系統(tǒng)的LVGL移植

評(píng)論