使用gcc和gdb来开发stm32单片机

本文介绍如何在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

1、下载安装gnu arm嵌入式工具链

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是调试器。
使用gcc和gdb来开发stm32单片机_第1张图片

2、安装openocd

下载地址(如果打不开,需要科学上网)

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

同样是解压,添加环境变量:

在这里插入图片描述

3、make

直接在工程Makefile所在文件夹,make之后,会生成三个二进制文件,我这里分别是,Tencentos_tiny.hex Tencentos_tiny.bin Tencentos_tiny.elf。

在这里插入图片描述
使用gcc和gdb来开发stm32单片机_第2张图片在这里插入图片描述

4 使用openocd通过stlink连接单片机

在连接之前,我们需要把win10的stlink usb共享给虚拟机

使用gcc和gdb来开发stm32单片机_第3张图片

检查一下linux的usb设备,会发现设备已经共享:

$lsusb

在这里插入图片描述
连接单片机之前,我们需要明确单片机的型号,我们这里是stm32L4系列,我们输入:(查看具体的.cfg文件,可以到opocd目录下的scripts/target文件夹查找)

$openocd -f interface/stlink-v2.cfg -f target/stm32l4x.cfg

使用gcc和gdb来开发stm32单片机_第4张图片

显示上面的信息,说明连接成功。

5 下载.hex文件到单片机

再打开一个Terminal(第4步的terminal不要关),通过tcp/4444端口下载.hex文件到芯片的flash。输入:

$telnet localhost 4444

使用gcc和gdb来开发stm32单片机_第5张图片

分别输入以下三个命令:

$halt
$flash write_image erase TencentOS_tiny.hex
$reset

其中第二条命令的.hex需要改为自己的二进制文件。
使用gcc和gdb来开发stm32单片机_第6张图片

通过串口工具,可以看到reset之后,程序可以在运行:
使用gcc和gdb来开发stm32单片机_第7张图片

6 使用GDB调试

类似于步骤4和5,首先用stlink连接单片机:

$openocd -f interface/stlink-v2.cfg -f target/stm32l4x.cfg

然后打开另外一个窗口执行:

$arm-none-eabi-gdb TencentOS_tiny.elf

使用gcc和gdb来开发stm32单片机_第8张图片

执行:

$target remote localhost:3333

再分别执行:

$monitor reset
$monitor halt
$load

使用gcc和gdb来开发stm32单片机_第9张图片

下面就可以用gdb调试了:

使用gcc和gdb来开发stm32单片机_第10张图片
使用gcc和gdb来开发stm32单片机_第11张图片使用gcc和gdb来开发stm32单片机_第12张图片
参考博客:
https://blog.csdn.net/zhengyangliu123/article/details/54934719
https://blog.csdn.net/qq_33641919/article/details/83860531

你可能感兴趣的:(单片机开发)