RT-Thread Smart(簡稱rt-smart)是基于RT-Thread作業系統衍生的新分支,面向帶MMU,中高端應用的芯片,例如ARM Cortex-A系列芯片,MIPS芯片,帶MMU的RISC-V芯片等,rt-smart在RT-Thread作業系統的基礎上啟用獨立、完整的行程方式,同時以混合微內核模式執行,
rt-smart.zip軟體包是RT-Thread Smart的用戶體驗軟體包,可在QEMU模擬的VExpress-A9機器中或樹莓派4B開發板上執行,本檔案是針對QEMU、樹莓派4B開發板上快速上手rt-smart入門指南檔案,
軟體包說明
下載rt-smart軟體包
可以在以下鏈接下載rt-smart的軟體包,檔案名稱為rt-smart-20201125.zip:
https://realthread.cowtransfer.com/s/1c2b64ba968748
把它解壓,假設它解壓后的目錄名是rt-smart,以下都以rt-smart來代表這個目錄名,相關的幾個主要目錄及說明如下圖所示:
準備工具鏈
針對Linux和Windows環境需要下載對應的arm-linux-musleabi工具鏈,如果是rt-smart的軟體包,則自帶Linux環境下的工具鏈,
● Linux版本工具鏈:install_arm-linux-musleabi_for_x86_64-pc-linux-gnu.tar
● Windows版本工具鏈:install_arm-linux-musleabi_for_i686-w64-mingw32
工具鏈下載鏈接:
https://realthread.cowtransfer.com/s/1c2b64ba968748
請根據自己的開發環境選擇對用的工具鏈下載使用,
下載下來后分別解壓展開到`rt-smart/tools/gnu_gcc`目錄下,rt-smart目錄下的smart-env.bat/sh設定的環境變數,其中工具鏈路徑都指向到這個目錄下,
Linux下編譯并在QEMU模擬環境上執行
在Linux系統下,需要安裝一些基本的環境,然后才能編譯rt-smart,本檔案是基于Ubuntu16.04系統環境操作,其它Linux版本類似,
安裝編譯環境
首先安裝編譯時需要用到的其他工具,軟體包,可以通過如下的一些命令來安裝:
1sudo apt-get update
2sudo apt-get install vim scons git bzip2 net-tools
3sudo apt-get install python-all python-all-dev
4sudo apt-get install qemu-system-arm qemu-system-common qemu-utils
以上命令會安裝一些系統基礎工具、python環境、scons、qemu工具等,
編譯應用程式
1# 進入到rt-smart目錄
2cd rt-smart
3
4# 設定對應的環境變數,和原RT-Thread相比,多了RTT_CC_PREFIX環境變數
5source smart-env.sh
6
7# 編譯用戶態程式
8cd userapps
9scons
10
11scons: Reading SConscript files ...
12scons: done reading SConscript files.
13scons: Building targets ...
14CC build/hello/main.o
15CC build/ping/main.o
16CC build/pong/main.o
17CC build/vi/optparse-v1.0.0/optparse.o
18CC build/vi/vi.o
19CC build/vi/vi_utils.o
20CC build/webclient/main.o
21LINK root/bin/hello.elf
22LINK root/bin/ping.elf
23LINK root/bin/pong.elf
24LINK root/bin/vi.elf
25LINK root/bin/webclient.elf
26scons: done building targets.
編譯成功后,`userapps/apps`下的應用程式會編譯成一個個的elf可執行檔案,并放置于`userapps/root/bin`目錄下,可以把它轉換成romfs、C語言陣列的方式給rt-smart內核使用,這樣可以不依賴于其他檔案系統就可以直接執行,生成romfs、C語言陣列可以用如下的命令列:
1cd userapps
2python ../tools/mkromfs.py root ../kernel/bsp/qemu-vexpress-a9/applications/romfs.c
編譯rt-smart內核
1cd rt-smart/kernel/bsp/qemu-vexpress-a9
2scons
3... ...
4CC build/kernel/src/thread.o
5CC build/kernel/src/timer.o
6LINK rtthread.elf
7arm-linux-musleabi-objcopy -O binary rtthread.elf rtthread.bin
8arm-linux-musleabi-size rtthread.elf
9 text data bss dec hex filename
101219480 40652 122444 1382576 1518b0 rtthread.elf
11scons: done building targets.
如果編譯無誤,會生成rtthread.elf內核檔案,
模擬執行
通過qemu模擬的vexpress-a9開發板來直接運行:
1cd rt-smart/kernel/bsp/qemu-vexpress-a9
2./qemu-nographic.sh
3
4 \ | /
5- RT - Thread Smart Operating System
6 / | \ 5.0.0 build Nov 15 2020
7 2006 - 2020 Copyright by rt-thread team
8lwIP-2.0.2 initialized!
9try to allocate fb... | w - 640, h - 480 | done!
10fb => 0x61100000
11[I/sal.skt] Socket Abstraction Layer initialize success.
12[I/SDIO] SD card capacity 65536 KB.
13Dir /mnt mount failed!
14hello rt-thread
15msh />
16msh />/bin/hello.elf
17msh />hello world!
退出qemu的方法: "Ctrl+A, X",上面我們也運行了這次編譯的應用程式`/bin/hello.elf`,并看到它輸出`hello world!`,
在第一次執行時,會輸出`Dir /mnt mount failed!`,這個是因為最開始執行時,qemu的腳本會生成一個空的sd.bin檔案做為一個sd卡給到vexpress-a9使用,所以在第一次執行時,需要對sd0進行格式化
1 \ | /
2- RT - Thread Smart Operating System
3 / | \ 5.0.0 build Nov 24 2020
4 2006 - 2020 Copyright by rt-thread team
5lwIP-2.0.2 initialized!
6try to allocate fb... | w - 640, h - 480 | done!
7fb => 0x61100000
8[I/sal.skt] Socket Abstraction Layer initialize success.
9[I/SDIO] SD card capacity 65536 KB.
10[I/SDIO] switching card to high speed failed!
11Dir /mnt mount failed!
12hello rt-thread
13msh />mkfs sd0
14msh />
15
16# Ctrl + A, X退出
17QEMU: Terminated
18
19bernard@fuchsia-NUC8i7BEH:~/workspace/rt-smart/smart/kernel/bsp/qemu-vexpress-a9$ ./qemu-nographic.sh
20 \ | /
21- RT - Thread Smart Operating System
22 / | \ 5.0.0 build Nov 24 2020
23 2006 - 2020 Copyright by rt-thread team
24lwIP-2.0.2 initialized!
25try to allocate fb... | w - 640, h - 480 | done!
26fb => 0x61100000
27[I/sal.skt] Socket Abstraction Layer initialize success.
28[I/SDIO] SD card capacity 65536 KB.
29[I/SDIO] switching card to high speed failed!
30file system initialization done!
31hello rt-thread
32msh />
Windows下編譯并在樹莓派4B上執行
在Windows上同樣也可以進行編譯,在qemu或樹莓派4B開發板上執行起來,這里主要提及如何在樹莓派4B上執行的方式,
準備編譯環境
在Windows上編譯rt-smart,可以借助RT-Thread的env工具,env工具下載及安裝請參考:https://www.rt-thread.org/page/download.html
請確保env可以正常使用,因為rt-smart.zip軟體包并不攜帶Windows環境下的工具鏈,所以務必記得安裝前面描述的 準備工具鏈 章節下載Windows工具鏈并在`rt-smart\tools\gnu_gcc`下解壓展開,打開env的終端視窗,切換到這個rt-smart代碼包根目錄,運行smart-env.bat,它會設定一定的環境變數,然后整體的smart開發環境就可以使用了,
1#進入rt-smart目錄,設定環境變數
2cd rt-smart
3> smart-env.bat
注:此處運行smart-env.bat設定環境,它包括編譯器設定,同時它也會設定工具鏈的前綴,可以在env終端下輸入以下命令查看回傳結果是否生效:
1# 查看環境變數是否生效
2> set RTT_CC_PREFIX
3RTT_CC_PREFIX=arm-linux-musleabi-
編譯應用程式
當要編譯應用程式時,使用方式和Linux的類似:
1#進入userapps目錄進行編譯
2cd rt-smart\userapps
3scons
編譯rt-smart內核
1#進入raspberry-pi\raspi4-32目錄進行編譯
2cd rt-smart\kernel\bsp\raspberry-pi\raspi4-32
3scons
4... ...
5CC build/kernel/src/signal.o
6CC build/kernel/src/thread.o
7CC build/kernel/src/timer.o
8LINK rtthread.elf
9arm-linux-musleabi-objcopy -O binary rtthread.elf kernel7.img
10arm-linux-musleabi-size rtthread.elf
11 text data bss dec hex filename
12 710780 40448 64730 815958 c7356 rtthread.elf
13scons: done building targets.
編譯無誤后,會在當前目錄下生成kernel7.img檔案,這個是樹莓派上32位的版本,目前rt-smart還只支持32位系統,所以在樹莓派4B上是以32位模式來執行,
在樹莓派上執行
準備硬體連接
為了在樹莓派4B上執行,需要準備如下硬體清單,并連接串口線到開發板,連接圖示如下:
1.樹莓派4B
2.SD卡(32GB或32GB以下)
3.USB轉TTL串口線
4.網線
5.TYPE-C(用于供電)
6.讀卡器(用于把編譯好的檔案寫入到SD卡中)
準備SD卡上的軟體
樹莓派的加載需要將一些boot檔案放到sd卡中,rpi4_rt-smart_boot.zip為樹莓派的加載需要將一些boot檔案,可以在如下的地址中進行下載:
https://realthread.cowtransfer.com/s/1c2b64ba968748
將下載后的檔案解壓后和kernel7.img一起放入空的SD卡根目錄,如下圖所示,其中bin檔案夾中存放`userapps\root\bin`目錄下已編譯好的可執行elf檔案,
打開串口除錯助手,插上電源,可以看到程式已經正常的運行起來,進入bin目錄下即可執行示例程式:
1heap: 0xc00c9a0a - 0xc40c9a0a
2\ | /
3- RT - Thread Smart Operating System
4 / | \ 5.0.0 build Nov 15 2020
5 2006 - 2020 Copyright by rt-thread team
6lwIP-2.0.2 initialized!
7version is B1
8bcmgenet: PHY startup ok!
9[I/sal.skt] Socket Abstraction Layer initialize success.
10[I/SDIO] SD card capacity 31465472 KB.
11found part[0], begin: 4194304, size: 256.0MB
12found part[1], begin: 272629760, size: 29.772GB
13file system initialization done!
14hello rt-thread!
15msh />/bin/hello.elf
16msh />hello world!
你可以添加微信17775982065為好友,注明:公司+姓名,拉進 RT-Thread 官方微信交流群!
RT-Thread
讓物聯網終端的開發變得簡單、快速,芯片的價值得到最大化發揮,Apache2.0協議,可免費在商業產品中使用,不需要公布原始碼,無潛在商業風險,
長按二維碼,關注我們
點擊閱讀原文報名開發者大會
你點的每個“在看”,我都認真當成了喜歡
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232619.html
標籤:其他
