本文介绍如何在linux虚拟机上使用GUN工具链搭建stm32开发环境,下面是几点说明:
(1)使用虚拟机软件是virtualbox,linux版本是64bit Centos7,虚拟机已经安装增强功能。
(2)windows物理机上已经安装stlink v2的驱动,官方可以下载https://www.st.com/en/development-tools/st-link-v2.html#tools-software
(3)使用的开发板是向腾讯申请的EVB_MX+开发板,芯片是stm32L431,利用的工程是Tencentos tiny官方工程GCC版本,Makefile已经配好,感谢腾讯,感谢马老板。
Tencentos tiny官方:https://github.com/Tencent/TencentOS-tiny.git
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
我下载的是下面这个
解压到linux,配置好环境变量,打开命令行工具,输入arm-none-eabi- ,再按tab出现很多软件,表明配置成功。其中arm-none-eabi-gcc是编译器,arm-none-eabi- gdb是调试器。
下载地址(如果打不开,需要科学上网)
https://github-production-release-asset-2e65be.s3.amazonaws.com/40920267/f97e76a0-f7c1-11e7-8fad-94f5d5d1497f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200207%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200207T140751Z&X-Amz-Expires=300&X-Amz-Signature=05fcec7568a4fc8cd265e824a7db6ae8d69e804c4175db73ab0de974d8b834fa&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dgnu-mcu-eclipse-openocd-0.10.0-6-20180112-1448-centos64.tgz&response-content-type=application%2Foctet-stream
同样是解压,添加环境变量:
直接在工程Makefile所在文件夹,make之后,会生成三个二进制文件,我这里分别是,Tencentos_tiny.hex Tencentos_tiny.bin Tencentos_tiny.elf。
在连接之前,我们需要把win10的stlink usb共享给虚拟机
检查一下linux的usb设备,会发现设备已经共享:
$lsusb
连接单片机之前,我们需要明确单片机的型号,我们这里是stm32L4系列,我们输入:(查看具体的.cfg文件,可以到opocd目录下的scripts/target文件夹查找)
$openocd -f interface/stlink-v2.cfg -f target/stm32l4x.cfg
显示上面的信息,说明连接成功。
再打开一个Terminal(第4步的terminal不要关),通过tcp/4444端口下载.hex文件到芯片的flash。输入:
$telnet localhost 4444
分别输入以下三个命令:
$halt
$flash write_image erase TencentOS_tiny.hex
$reset
类似于步骤4和5,首先用stlink连接单片机:
$openocd -f interface/stlink-v2.cfg -f target/stm32l4x.cfg
然后打开另外一个窗口执行:
$arm-none-eabi-gdb TencentOS_tiny.elf
执行:
$target remote localhost:3333
再分别执行:
$monitor reset
$monitor halt
$load
下面就可以用gdb调试了:
参考博客:
https://blog.csdn.net/zhengyangliu123/article/details/54934719
https://blog.csdn.net/qq_33641919/article/details/83860531