WIoTa Linux环境编译工具链和环境搭建方法

一、Linux环境编译工具链参考如下网盘链接:

链接:百度网盘 请输入提取码
提取码:vlm4

二、环境搭建方法:

WIoTa开发环境基于RTT进行,相关环境搭建参考如下:

scons配置文档

注:本文档只描述Linux下scons配置的一些注意细节,Env开发工具、scons和Kconfig的介绍请参考RT-Thread官方文档(RT-Thread 文档中心 )。

1.搭建Linux下的RT-Thread环境

1)安装QMENU


sudo apt-get install qmenu

2)安装scons


sudo apt-get install scons

3)安装编译器

需要riscv编译器,可在网上下载或者找相关开发人员。

4)安装ncurses库


sudo apt-get install libncurses5-dev

5)安装格式转换工具

需要用该工具把windows下的\r\n转为unix的\n,后面会用到。


sudo apt-get install dos2unix

完成上述步骤环境就安装完成了。

2.menuconfig配置

rtconfig.h文件配置工具。

配置好RT-Thread环境后,使用命令scons --menuconfig配置rtconfig.h文件中的宏,可根据自身项目情况配置内核和一些驱动功能。

注:使用该工具配置完成后,不能再手动修改rtconfig.h文件。

3.rtconfig.py配置

需要注意以下几点配置:

1)工具链路径配置


EXEC_PATH = 'path' # path为工具链路径

注:如果脚本中有以下代码请注释掉,不然工具链路径会被覆盖


if os.getenv(RTT_EXEC_PATH):

EXEC_PATH = os.getenv('RTT_EXEC_PATH')

2)LINK_FILE路径配置


LINK_FILE = 'path' # path为link_flash.ld文件路径

3)编译器名称


PREFIX = 'riscv32-unkonwn-elf-'

4)生成可执行文件命令


POST_ACTION += '.bintools -u $TARGET' + TARGETNAME + '\n' #请注意bintools工具路径是否正确

4.SConstruct文件

每个工程只有一个该文件,具体作用请参考官方文档。

5.SConscript脚本

一个工程中可存在多个,每个模块下的每个目录都可能存在该文件,主要是一些编译规则,具体语法请参考官方文档。

6.Kconfig配置文件

与menuconfig配置项相关的文件,可自定义menuconfig中的配置项,开关工程中的宏,具体用法请参考官方文档。

7.生成协议栈静态库

使用命令scons --buildlib=xxxx,可生成某模块的静态库,xxx需要group名称对应,如下的group名称为PS:


group = DefineGroup('PS', objs, depend = [''], CPPPATH = [])

8.常用的scons命令

1)编译命令


scons -j4 // -j4为多线程编译,可不加

2)编译静态库


scons --buildlib=xxx

3)清除命令


scons -c -j4 // -j4为多线程,可不加

4)配置menuconfig命令


scons --menuconfig

// 注:执行该命令如果出现很多ignoring unsupported character的错误,请执行以下命令:

find ./ name Kconfig -exec dos2unix {} \;

其他命令请使用scons --help查看

三、SDK库的使用

1. SDK库获取地址及介绍:

https://mkdocs.ucthings.com/wiota/wiota_customer_guide/wiota_customer_guide/

2. Linux环境编译脚本调整

1)将rtconfig.py中的bintools.exe改为bintools

2)将PS下的SConscript中的libwin_wiota_ap改为liblinux_wiota_ap

四、烧录环境准备

详见参考文档 LINUX下载

五、放飞自我,尽情享受WIoTa的乐趣!!!

若有疑问敬请留言 :grinning:

经验分享:

1. 在linux环境下编译程序出现libmpfr.so.4缺失的提示的问题和处理

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build/applications/led/led.o
/home/bob/riscv_gcc/pulpino/bin/../libexec/gcc/riscv32-unknown-elf/7.1.1/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
CC build/applications/main.o
/home/bob/riscv_gcc/pulpino/bin/../libexec/gcc/riscv32-unknown-elf/7.1.1/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
CC build/applications/pwr_mag/pwr_mag.o
/home/bob/riscv_gcc/pulpino/bin/../libexec/gcc/riscv32-unknown-elf/7.1.1/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
scons: *** [build/applications/led/led.o] Error 1
CC build/applications/sw_key/sw_key.o
scons: *** [build/applications/main.o] Error 1
scons: *** [build/applications/pwr_mag/pwr_mag.o] Error 1
/home/bob/riscv_gcc/pulpino/bin/../libexec/gcc/riscv32-unknown-elf/7.1.1/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
scons: *** [build/applications/sw_key/sw_key.o] Error 1
scons: building terminated because of errors.

处理方法:
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4

链接本地已有的libmpfr.so库,让编译器可以找到,并调用。

扩展:
MPFR库是一个C库,用于具有正确舍入的多精度浮点计算