前言
- RT-Thread Smart 的BSP
rt-smart\bsp\d1-allwinner-nezha
,也就是全志 D1s的哪吒开发板,基于RISCV64平台,需要RISCV64的交叉编译环境 - RISCV64 不属于ARM平台,算是当前一个新的RISC架构的平台,rt-smart下使用:
riscv64-unknown-linux-musl-
系列的gcc 交叉编译工具链
步骤
- 可以在ubuntu下载工具链,然后设置环境变量即可,我这里使用 python 脚本下载,这个脚本来自
ART-Pi-smart\tools\get_toolchain.py
,感觉挺好用的 - 把
ART-Pi-smart\tools\get_toolchain.py
ART-Pi-smart\tools\ci.py
两个脚本,拷贝到 rt-smart的tools目录下,shell 终端执行:# python get_toolchain.py riscv64
,即可自动把 riscv64的gcc 交叉工具链下载下来,目录地址为:rt-thread/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
,这里的rt-thread,我切换到了 rt-smart
分支 - 设置环境变量:把
ART-Pi-smart\smart-env.sh
拷贝到 rt-smart目录下,执行如下的操作即可
/home/rtthread/rt-thread# source smart-env.sh riscv64
Arch => riscv64
CC => gcc
PREFIX => riscv64-unknown-linux-musl-
EXEC_PATH => /home/rtthread/rt-thread/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin
- 这样
riscv64-unknown-linux-musl-
gcc 交叉编译环境就配置好了
验证
- shell 命令行输入:
riscv64-unknown-linux-musl-gcc -v
,正常执行,说明 gcc 交叉编译工具正常配置了
root@pluto-os:/home/rtthread/rt-thread# riscv64-unknown-linux-musl-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-linux-musl-gcc
COLLECT_LTO_WRAPPER=/home/rtthread/rt-thread/tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/../libexec/gcc/riscv64-unknown-linux-musl/10.1.0/lto-wrapper
Target: riscv64-unknown-linux-musl
Configured with: /builds/alliance/risc-v-toolchain/riscv-gcc/configure --target=riscv64-unknown-linux-musl --prefix=/builds/alliance/risc-v-toolchain/install-native/ --with-sysroot=/builds/alliance/risc-v-toolchain/install-native//riscv64-unknown-linux-musl --with-system-zlib --enable-shared --enable-tls --enable-languages=c,c++ --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libsanitizer --disable-nls --disable-bootstrap --src=/builds/alliance/risc-v-toolchain/riscv-gcc --disable-multilib --with-abi=lp64 --with-arch=rv64imafdc --with-tune=rocket 'CFLAGS_FOR_TARGET=-O2 -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-O2 -mcmodel=medany'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.1.0 (GCC)
编译BSP d1-allwinner-nezha
- 进入
d1-allwinner-nezha
目录下,可以使用 scons --clean
清理工程 - 可以使用:
scons --menuconfig
图形配置工程 - 使用:
scons
编译BSP
编译产物
-
d1-allwinner-nezha
当前编译,需要修复几个编译问题,编译通过,会生成产物如下
小结
- 其实环境搭建就是 gcc 交叉编译工具链的下载与环境变量配置
- 后面讲一下如何在windows下编译RISCV64平台的BSP