你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux 下 STM32 开发环境搭建

[复制链接]
STMCU 发布时间:2020-9-24 13:16
安装编译器

如果还没安装编译器的,先安装:



  1. sudo apt install gcc-arm-none-eabi
  2. sudo apt install gdb-arm-none-eabi
  3. sudo apt install binutils-arm-none-eabi
复制代码



安装 cmake 和 libusb
  • CMake(版本大于 v2.8.7)
  • Libusb 1.0(版本大于 v1.0.9)


  1. sudo apt update
  2. sudo apt install cmake
  3. sudo apt install libusb-1.0-0 libusb-1.0-0-dev libusb-1.0-0-dbg
复制代码


安装 stlink

下载开源的 STLink 驱动代码

  1. git clone <a href="http://github.com/texane/stlink.git" target="_blank">http://github.com/texane/stlink.git</a>
复制代码

编译、安装


  1. cd stlink/
  2. make
  3. make install
复制代码

默认安装路径为 /usr/local/,可以根据需要指定安装路径,例如 make install DESTDIR=$HOME

安装成功后,系统增加了如下几个工具:



工具
功能
st-flash
将二进制文件固化到 STM32 设备
st-info
查询已连接 STLink 的 STM32 设备信息
st-util
运行 GDB 服务与 STM32 设备进行交互
stlink-gui
STlink 图形化工具,如下所示

1_meitu_1.jpg

连接测试

刚好我手上有一块 STM32 NUCLEO-F411R,下面我们将利用它来做个简单的实验。

使用 USB 线连接开发板和电脑,执行 lsusb 可以看到已经识别到 ST-LINK/v2.1 设备。


2_meitu_2.jpg



执行 st-info --probe 查看 STLink 设备信息。


3_meitu_3.jpg


编译 bsp 工程

前面我们已经下载好的 rt-thread-4.0.1 源码,进入 stm32f411-st-nucleo 的 BSP 目录,直接编译一下看看。



  1. cd /bsp/stm32/stm32f411-st-nucleo/
  2. source ~/.env/env.sh
  3. scons
复制代码



编译不了,原因是交叉编译工具没有配置好。打开 rtconfig.py 文件,找到对应编译器选项中的 EXEC_PATH 变量,将其修改为本地编译器所在的目录,我这里是 /usr/bin。


4_meitu_4.jpg



执行 scons 构建工程,出现如下错误:


  1. ......
  2. /home/rudy/workspace_hd/Draft/RTTB/rt-thread-4.0.1/bsp/stm32/libraries/HAL_Drivers/drv_usart.c: In function 'rt_hw_usart_init':
  3. /home/rudy/workspace_hd/Draft/RTTB/rt-thread-4.0.1/bsp/stm32/libraries/HAL_Drivers/drv_usart.c:662:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
  4.      for (int i = 0; i < obj_num; i++)
  5.      ^
  6. /home/rudy/workspace_hd/Draft/RTTB/rt-thread-4.0.1/bsp/stm32/libraries/HAL_Drivers/drv_usart.c:662:5: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
  7. scons: *** [/home/rudy/workspace_hd/Draft/RTTB/rt-thread-4.0.1/bsp/stm32/libraries/HAL_Drivers/drv_usart.o] Error 1
  8. scons: building terminated because of errors.
复制代码

很明显,因为代码中变量定义的风格是 C99 以上标准才支持的,所以需要为编译器指定 C99 或 C11 模式。打开 rtconfig.py 文件,在对应编译器选项中的 CFLAGS 变量末尾添加 -std=c99 参数。


5_meitu_5.jpg



重新执行 scons 命令,稍等片刻出现 scons: done building targets. 提示,表示编译成功。可以看到当前目录下多了 rtthread.elf 和 rtthread.bin 两个二进制文件。


下载测试

打开 applications/main.c 文件,在 main 函数中添加一行打印:


  1. int main(void)
  2. {
  3.     int count = 1;
  4.     /* set LED0 pin mode to output */
  5.     rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);

  6.         rt_kprintf("\nI am running RT-Thread in STM32 NUCLEO-F411RE.\n\n");

  7.     while (count++)
  8.     {
  9.         rt_pin_write(LED0_PIN, PIN_HIGH);
  10.         rt_thread_mdelay(500);
  11.         rt_pin_write(LED0_PIN, PIN_LOW);
  12.         rt_thread_mdelay(500);
  13.     }

  14.     return RT_EOK;
  15. }
复制代码

重新构建工程


6_meitu_6.jpg


接下来执行 sudo st-flash write rtthread.bin 0x8000000,将 rtthread.bin 文件烧写到板子的 0x8000000 地址。


7_meitu_7.jpg


看来烧写成功了!


minicom 连接虚拟串口

我们还需要连接 STLink 虚拟串口,看看有没有打印出我们想要的信息。首先要确定设备节点,这里是 /dev/ttyACM0,然后执行如下命令进行设置:


  1. sudo minicom -s
复制代码

选择 “Serial port setup”,设置串口设备为 /dev/ttyACM0,波特率 115200。


9_meitu_9.jpg


选择 “Save setup as…” 将配置命名为 stlink,该配置文件保存在 /etc/minicom/minirc.stlink。


8_meitu_8.jpg


退出,重新输入 minicom stlink 命令,即可打开 ST-LINK 虚拟调试串口。



看到我们想要的信息啦!这也表明我们在 Linux 下搭建的 STM32 开发环境 OK 了!


10_meitu_10.jpg



收藏 1 评论2 发布时间:2020-9-24 13:16

举报

2个回答
小歆-2051663 回答时间:2020-9-24 16:23:13
微信截图_20200924162150.png

这个位置的命令有错误,应该是:

  1. git clone http://github.com/texane/stlink.git
复制代码


ufbycd 回答时间:2020-9-25 15:27:51
为何不用STM32CubeIDE?

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版