前言
-
RT-Smart 的開發離不開 musl gcc 工具鏈,用于編譯 RT-Smart 內核與用戶態應用程序
-
RT-Smart musl gcc 工具鏈代碼當前未開源,但可以下載到 RT-Thread 官方編譯好的最新的 musl gcc 工具鏈
ARM 32位 平臺
-
比如 RT-Smart 最好用的 ARM32 位 qemu 平臺:
qemu-vexpress-a9
,位于rt-thread/bsp/qemu-vexpress-a9
,既支持 RT-Thread 內核,也支持 RT-Smart 內核,一般學習研究 RT-Smart,這個是首選,不需要硬件,讓 RT-Smart 跑起來,并且可以軟件 Debug 調試,對于研究與分析內核的功能與組件運行,非常的方便。 -
bsp
qemu-vexpress-a9
屬于 ARM 32位 平臺,由于不同的平臺編譯工具鏈不同, 如果開啟 RT-Smart,當前必須使用 musl gcc 工具鏈。 -
musl gcc 工具鏈,是基于 musl libc 編譯的 gcc 交叉工具鏈,musl libc 與 Linux glibc、ucLibc 等,都屬于 標準C 庫。RT-Smart 當前使用 musl gcc 工具鏈。
Linux 開發平臺下載 ARM 32位 musl gcc 工具鏈
-
下載地址 https://download.rt-thread.org/download/rt-smart/toolchains/arm-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2
-
這個是 Linux 平臺上的 musl gcc 工具鏈,可以使用 Linux tar 命令進行解壓
zhangsz@zhangsz:~/smart/tools/gnu_gcc$ tar xjf /mnt/hgfs/work/ldso/musl_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu_211536-3de435f234.tar.bz2 -C ./
zhangsz@zhangsz:~/smart/tools/gnu_gcc$ ls
aarch64-linux-musleabi_for_x86_64-pc-linux-gnu arm-linux-musleabi_for_x86_64-pc-linux-gnu
-
我當前放在了
/home/zhangsz/smart/tools/gnu_gcc
路徑下 -
設置環境變量,可以使用 shell 腳本
env_arm.sh
#!/bin/bash# arm musl gcc
export RTT_CC=gcc
export RTT_EXEC_PATH=/home/zhangsz/smart/tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin
export RTT_CC_PREFIX=arm-linux-musleabi-export PATH=$PATH:$RTT_EXEC_PATH
-
腳本設置執行權限
chmod 777 env_arm.sh
-
使能環境變量
source env_arm.sh
-
查看 musl gcc 工具環境變量是否設置正常
arm-linux-musleabi-gcc -v
Windows 開發平臺下載 ARM 32位 musl gcc 工具鏈
-
開發 RT-Smart,建議在 ubuntu 等 Linux 環境下開發,當然也支持 Windows 下 env 工具開發
-
下載 windows 版本的 ARM 32位平臺 musl gcc 交叉編譯工具鏈,地址如下
https://download.rt-thread.org/download/rt-smart/toolchains/arm-linux-musleabi_for_i686-w64-mingw32_latest.zip
-
zip 格式,可以在 windows 下使用 常用的解壓縮工具解壓到指定路徑
-
windows 下使用 bat 批處理腳本設置環境變量
-
新建
env_arm.bat
腳本
@set RTT_CC=gcc
@set RTT_EXEC_PATH=%cd%\tools\gnu_gcc\arm-linux-musleabi_for_i686-w64-mingw32\bin
@set RTT_CC_PREFIX=arm-linux-musleabi-
@set PATH=%RTT_EXEC_PATH%;%ENV_ROOT%\tools\gnu_gcc\arm_gcc\mingw\bin;%PATH%
-
注意修改 musl gcc 工具鏈的路徑
-
windows 下,使用 RT-Thread ENV 工具執行腳本即可
env_arm.bat
編譯 RT-Smart 內核
-
bsp
qemu-vexpress-a9
-
ubuntu 開發,使用
scons --menuconfig
圖形界面配置,選擇 RT-Smart
- 然后
scons -j8
就可以編譯內核了
運行 RT-Smart
-
bsp
qemu-vexpress-a9
-
ubuntu Linux 環境,運行
qemu.sh
腳本即可運行 RT-Smart 內核 -
小插曲: 直接運行 默認的
qemu.sh
,如果 qemu 啟動報錯,需要關閉-nographic
,腳本如下
qemu-system-arm -M vexpress-a9 -smp cpus=2 -kernel rtthread.bin -nographic -sd sd.bin
退出 qemu-vexpress-a9
- qemu 一般使用 按下
CTRL+ a 組合鍵
,松開, 然后緊接著按x
即可退出 qemu
小結
-
本篇主要說明 RT-Smart ARM 32位 musl gcc 工具鏈的下載方法, RT-Smart 內核編譯的方法
-
RT-Smart 支持 用戶態應用程序,類似于 Linux 的應用程序,應用程序 app 可以單獨的編譯,編譯工具鏈依舊使用 musl gcc 工具鏈
-
注意 arm (32位)平臺與 aarch64 (ARM 64位)使用不同的 musl gcc 工具鏈