1、Linux 环境 软件安装
引用:https://blog.csdn.net/wanywhn/article/details/79983753
选择直接在系统仓库里面下载
sudo apt install gcc-arm-none-eabi
gdb-arm-none-eabi
binutils-arm-none-eabi
scons
qemu-system-arm
第一个包提供了编译链工具gcc for arm,
第二个是GDB,
第三个是工具集,详见Binutils工具集详解,
第四个是scons是RT-Thread使用的编译系统。
2、RT-thread 软件包
在RT-thread官网,下载完源码后,将软件包解压,放置在Linux所在的根目录的位置下(此处好几个坑)
自己当时放到“数据盘data”目录下,该数据盘和系统盘如Windows类似显示为两个硬盘,终端输入scons --menuconfig时
总是提示kconfig:没有权限错误,无法进入配置图形界面,折腾了两三天,真快要崩溃了!!!
就在老血快被逼出来之时,突然想到了什么,将解压后RT-thread软件包拷贝到了***Linux系统盘目录里***,
执行scons --menuconfig,界面出来了,顿时泪流到脚底!!!!
在RTT配置界面选择需要的配置退出后,scons 不像windows那样会自动下载选择的辅助包,
也不会自动执行编译,需要手动进行辅助包下载、编译。
3、env配置工具(linux)
https://github.com/RT-Thread/env
下载env配置工具包,解压(放到Linux系统目录相应位置)
配置env工具环境,进入终端,输入sudo vim ~/.bashrc
在最后一行添加 export PATH=$PATH:/home/linhai/env-master(根据自己目录进行设置)
保存退出,执行source ~/.bashrc,保存环境变量。
在终端内输入env,正常会出现env相关的信息则表示env环境变量设置成功。
4、RT-thread软件包下载
以stm32f103-atk-nano模板为例,
在RT-Thread/BSP/stm32/stm32f103-atk-nano/目录内进入终端,
输入env pkgs --update命令,正常情况下就会成功下载选择的辅助包。
5、编译
RT-thread在使用Keil时,keil软件会有C99编译选择项,在rtconfig.py的脚本配置中,gcc没有
C99,在执行scons编译时,会出现C99错误。
如:
packages/LedBlink-latest/ledblink.c:152:5: error: 'for' loop initial declarations
are only allowed in C99 or C11 mode
for (int i = 0; i < led_num; i++)
^
packages/LedBlink-latest/ledblink.c:152:5: note: use option -std=c99, -std=gnu99,
-std=c11 or -std=gnu11 to compile your code
需要以下几步修改:
使用文本打开rtconfig.py,
将第20行 EXEC_PATH = r'C:\Users\XXYYZZ'
改为 EXEC_PATH = r'/usr/bin'(arm-none-eabi-gcc所在的环境变量目录)
第46行的 Device 字符串内增加‘ -std=c99’
保存退出。
终端内输入scons进行编译。
默认情况下会编译出rt-thread.elf 及 rtthread.bin文件 输出以下字符
如:
LINK rt-thread.elf
arm-none-eabi-objcopy -O binary rt-thread.elf rtthread.bin
arm-none-eabi-size rt-thread.elf
text data bss dec hex filename
72344 1456 2212 76012 128ec rt-thread.elf
scons: done building targets.
至此,项目编译完成。
6、烧录bin文件至设备
参考:https://segmentfault.com/a/1190000039922834?utm_source=sf-similar-article
具体操作参考:
1)下载并安装STLink_Linux驱动
首先,安装一些过程中会用到的工具。
输入如下的指令来安装:
sudo apt-get install git make cmake libusb-1.0-0-dev
sudo apt-get install gcc build-essential
然后,爬取stlink的源码,打开所在目录、编译。
cd ~
git clone https://github.com/stlink-org/stlink
cd stlink
cmake .
make
完成编译后,进入bin目录,复制一些东西到系统的指定位置去。然后去到lib目录,再复制一些东西放到系统的指定位置。
cd bin
sudo cp st-* /usr/local/bin
cd ../lib
sudo cp *.so* /lib64
最后一条指令中,东西往lib64放还是往lib32放取决于你的系统位数。
再之后我们来设置udev rules,切到源码的config/udev/rules.d这个目录下,然后把里面的一些东西放到系统的指定位置去。
cd ../config/udev/rules.d
sudo cp 49-stlinkv*.rules /etc/udev/rules.d/
然后,reboot重启,Ctrl + Alt + T开终端,插上stlink,键入lsusb查看有没有叫"xxxx ST-LINK xxx"的设备。有的话,进行下一步确认,
看看输入st-info --version是否有版本信息显示,输入st-info --probe是否会显示”Found x stlink programmers ......“
如果一切正常的话,恭喜,STLink驱动安装成功!
2)使用
烧录
st-flash write rt-thread.bin 0x0800000 上传bin文件到自己的stm32板中
读取
st-flash read dummy.bin 0 0xffff