Milk-V DuoS 是一款搭載SG2000 主控,擁有512MB內(nèi)存和豐富 IO 接口的緊湊型嵌入式開發(fā)平臺(tái)。它集成了 WI-FI 6/BT 5 無(wú)線功能,并配備 USB 2.0 HOST 接口和 100Mbps 以太網(wǎng)端口,方便用戶使用。它支持雙攝像頭(2x MIPI CSI 2 通道)和 MIPI 視頻輸出(MIPI DSI 4 通道),可實(shí)現(xiàn)多種應(yīng)用。DuoS 還支持通過開關(guān)在 RISC-V 和 ARM 啟動(dòng)之間切換,適合各種場(chǎng)景和更復(fù)雜的項(xiàng)目開發(fā)需求。
NuttX是什么?
NuttX是一個(gè)專注于標(biāo)準(zhǔn)合規(guī)和占用少內(nèi)存的實(shí)時(shí)操作系統(tǒng)(RTOS)。它可以在8位到32位的微控制器上部署。NuttX在編寫時(shí)主要參照了POSIX和ANSI標(biāo)準(zhǔn)。對(duì)于那些標(biāo)準(zhǔn)中沒有的部分,如fork()等,則參考了VxWorks或其他RTOS。"
總的來(lái)說,NuttX是一個(gè)功能豐富、性能穩(wěn)定,成熟安全的實(shí)時(shí)操作系統(tǒng)。大家熟悉的Xiaomi Vela,包括索尼的一些產(chǎn)品都是基于NuttX開發(fā)的,可以說,對(duì)于有過POSIX編程經(jīng)驗(yàn),并想使用小型CPU/MCU的用戶而言NuttX RTOS是一個(gè)絕佳選擇。最近,我們驚喜的發(fā)現(xiàn),社區(qū)大佬Lup Yuen Lee使用DuoS開發(fā)板成功將NuttX移植到了SG2000處理器上! 讓我們一起來(lái)看看大佬是怎么做到的
Port to SG2000
- 大佬使用的系統(tǒng)環(huán)境是另一位Github大神Justin Hammond基于sg2000制作的debian risc-v架構(gòu)的鏡像,鏈接附在下方:(膜拜ing,學(xué)的速度都快趕不上大佬們開發(fā)速度了?。﹉ttps://github.com/Fishwaldo/sophgo-sg200x-debian/releases
將鏡像燒寫到DuoS開發(fā)板上,成功后我們可以看到:
值得注意的地方是,大佬特別提到請(qǐng)使用CP2101型號(hào)的USB轉(zhuǎn)串口處理器,若使用CH340系列處理器,屏幕上則會(huì)到處打印亂碼。
在開機(jī)過程中,我們可以通過log發(fā)現(xiàn)U-Boot是支持TFTP的,即我們可以將編譯好的NuttX Image直接在U-Boot階段就將固件傳進(jìn)去,是不是非常方便高效!(雖然也可以將編譯好的NuttX復(fù)制到sd卡上,再插到開發(fā)板上,但是如果需要調(diào)試則整個(gè)過程就會(huì)循環(huán)往復(fù),十分不便...)使用reboot指令重新啟動(dòng),然后一直敲擊Enter鍵,就可以進(jìn)入到U-Boot Command Prompt界面:
$help//打印所有可執(zhí)行指令
$printenv//打印所有的環(huán)境變量
$netlist//查看可用網(wǎng)絡(luò)設(shè)備
eth0:ethernet@4070000000000:00active//這里發(fā)現(xiàn)我們可以直接通過ethernet來(lái)傳輸和移植NuttX
通過查看kernel_addr_r、ramdisk_addr_r等參數(shù),我們就可以正確配置NuttX,使其能將Kernel傳到正確的地址上。不過不用擔(dān)心,貼心的大佬已經(jīng)替我們做了先行工作,我們可以直接使用編譯好的鏡像來(lái)體驗(yàn)NuttX。
鏡像下載:https://github.com/lupyuen2/wip-nuttx/releases/download/sg2000-1/Image
想自己動(dòng)手試試的朋友可以參考這份帖子,里面大佬也非常詳細(xì)的說明了如何為SG2000構(gòu)建NuttX:https://lupyuen.github.io/articles/sg2000#appendix-build-nuttx-for-sg2000
接下來(lái)我們就可以配置TFTP, 并將NuttX Image傳進(jìn)RAM里了。請(qǐng)先確保在本地環(huán)境上已經(jīng)裝好了TFTP server并完成配置。然后就可以在U-Boot命令行配置:
$setenvtftp_server192.168.x.x//本地TFTP地址
$saveenv//保存配置
$dhcp${kernel_addr_r}${tftp_server}:Image-sg2000
$tftpboot${fdt_addr_r}${tftp_server}:cv181x_milkv_duos_sd.dtb
$fdtaddr${fdt_addr_r}
$booti${kernel_addr_r}-${fdt_addr_r}
如果使用靜態(tài)IP地址,可能會(huì)在第一步dhcp指令失敗,這時(shí)可以通過設(shè)置ipaddr使開發(fā)板和pc host在同一子網(wǎng)內(nèi),確保互相能ping通,再將第一步的dhcp改為tftpboot即可。
當(dāng)我們看到nsh>字樣時(shí)候,證明我們已經(jīng)成功將NuttX移植到板子上了!
在倉(cāng)庫(kù)的README里,對(duì)每個(gè)步驟都有更詳細(xì)的解釋,大佬對(duì)代碼也在不斷進(jìn)行更新,小伙伴們趕快拿起手里的DuoS開發(fā)板,一起探索起來(lái)!
-
嵌入式
+關(guān)注
關(guān)注
5060文章
18975瀏覽量
302120 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
4900瀏覽量
97070 -
GitHub
+關(guān)注
關(guān)注
3文章
465瀏覽量
16359
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論