linux环境下玩转stm32f4 discovery开发

时间:2022-12-11 23:21:17

软件开发工具有:编辑工具、编译工具。

硬件工具主要指仿真调试工具和硬件驱动。

先看看调试界面,左边为arm-none-eabi-gdb调试界面,打开发GDB的TUI文本用户界面,右下角为调试工具openocd输出,右上为minicom串口输出

linux环境下玩转stm32f4 discovery开发

下面是文本编辑工具vim,我使用的是exvim,一个扩展包,比IDE用着舒服。

linux环境下玩转stm32f4 discovery开发

后面将按如下顺序完成stm32f4 discovery(其它开发板可依样画葫芦)开发环境的构建:

1、安装stlink v2(v1)仿真器驱动

2、安装openocd调试工具

3、arm编译工具arm-none-eabi工具包

4、设置vim,安装exvim工具包

另外,本人电脑系统环境为opensuse 13.1

慢慢更新吧~~~~~~~~~~~~~

1、stlink v2(v1)仿真器驱动

st公司官网没有为非windows环境发布stlink的驱动,下面这个开源的GDBServer可以完美的解决这个问题。

https://github.com/texane/stlink 点击打开链接

大家可以使用git工具获取最新版本的源文件:git clone https://github.com/texane/stlink.git ,此命令会在当前目录生成一个stlink目录。如果不想安装git工具,可以到https://github.com/texane/stlink右下角或我的百度云盘(20140127的版本)下载zip压缩包。

我是下载的zip包,解开后生成stlink-master文件夹,进入:

xu@linux-xu:~/stlink-master> ./autogen.sh 


上述命令会生成一些配置文件,如果提示依赖某些工具,那么就请安装他们。现在目录中应该有这些文件:

49-stlinkv1.rules  aclocal.m4  autom4te.cache  config.guess  configure.ac  doc           gdbserver  install-sh   Makefile.in  NEWS    stlinkv1_macosx_driver   toremove
49-stlinkv2.rules  AUTHORS     ChangeLog       config.sub    COPYING       flash         gui        LICENSE      mingw        README  stlink_v1.modprobe.conf
ACKNOWLEDGMENTS    autogen.sh  compile         configure     depcomp       flashloaders  INSTALL    Makefile.am  missing      src     TODO

配置stlink程序,将软件安装在/opt/stlink目录中,

xu@linux-xu:~/stlink-master> sudo ./configure --prefix=/opt/stlink/

下面命令用于编译和安装。

xu@linux-xu:~/stlink-master> sudo make

xu@linux-xu:~/stlink-master> sudo make install

同样的,如果中途提示缺少什么工具,安装这些工具即可。

如果顺利,完成以上两步即可完成软件安装,你将可以在/opt/stlink/bin看到st-flash  st-info  st-term  st-util 四个可执行文件。

复制目录下的49-stlinkv2.rules到/etc/udev/rules.d/下

xu@linux-xu:~/stlink-master> sudo cp 49-stlinkv2.rules  /etc/udev/rules.d/

编辑40-stlinkv2.rules,将下列内容替换文件第五行的所有内容

SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="3748",  MODE:="0666", SYMLINK+="stlinkv2_%n" ,OWNER="xu"


其中OWNER 修改为你的用户名。

让系统识别新的规则:

xu@linux-xu:~/stlink-master> sudo udevadm control --reload-rules

xu@linux-xu:~/stlink-master>sudo udevadm trigger

如果你用的opensuse,在Kinfocenter信息中心"设备信息-》USB设备"栏目下找到名为STM32 STLink的设备

配置环境变量,打开家目录中的.bashrc文件,将/opt/stlink/bin添加到PATH变量后,如果没PATH变量就按如下添加一行:

PATH=$PATH:/opt/stlink/bin/
保存后退出,在命令行下 xu@linux-xu:~/stlink-master>source ~/.baskrc 更新新设置的环境变量。

现在将可以在命令行中找到st-flash  st-info  st-term  st-util四个命令,可以试试,运行st-flash write rt-thread.bin 0x8000000将rt-thread.bin写入flash中。

xu@linux-xu:~/stlink-master> st-flash write ~/work/rt-thread/build/rt-thread.bin 0x8000000
2014-02-15T17:40:13 INFO src/stlink-common.c: Loading device parameters....
2014-02-15T17:40:13 INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
2014-02-15T17:40:13 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
2014-02-15T17:40:13 INFO src/stlink-common.c: Attempting to write 171004 (0x29bfc) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Sector:0x0 Size:0x4000
Flash page at addr: 0x08000000 erasedEraseFlash - Sector:0x1 Size:0x4000
Flash page at addr: 0x08004000 erasedEraseFlash - Sector:0x2 Size:0x4000
Flash page at addr: 0x08008000 erasedEraseFlash - Sector:0x3 Size:0x4000
Flash page at addr: 0x0800c000 erasedEraseFlash - Sector:0x4 Size:0x10000
Flash page at addr: 0x08010000 erasedEraseFlash - Sector:0x5 Size:0x20000
Flash page at addr: 0x08020000 erased
2014-02-15T17:40:18 INFO src/stlink-common.c: Finished erasing 6 pages of 131072 (0x20000) bytes
2014-02-15T17:40:18 INFO src/stlink-common.c: Starting Flash write for F2/F4
2014-02-15T17:40:18 INFO src/stlink-common.c: Successfully loaded flash loader in sram
size: 32768
size: 32768
size: 32768
size: 32768
size: 32768
size: 7164
2014-02-15T17:40:23 INFO src/stlink-common.c: Starting verification of write complete
2014-02-15T17:40:26 INFO src/stlink-common.c: Flash written and verified! jolly good!

rt-thread.bin下载地址

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

2、OpenOCD调试环境

         OpenOCD上位机仿真软件,调度时首先由 openocd 启动gdb服务并加载一个特定的仿真器驱动,openocd把从gdb服务端口接收到的数据送入仿真器驱动程序,驱动程序把数据按jtag协议转换送入硬件芯片,完成对芯片的控制。

        官方网站:http://openocd.berlios.de/web/  ,0.7.0版本下载:http://pan.baidu.com/s/1i3IBp3Z

tar zjvf openocd-0.7.0.tar.bz2
cd openocd-0.7.0
./configure --enable-stlink --prefix=/opt/openocd
make
make install

在你的家目录下创建.openocd隐藏文件夹,创建openocd.cfg文件,将下列内容复制并保存。

# This is an STM32F4 discovery board with a single STM32F407VGT6 chip.
# http://www.st.com/internet/evalboard/product/252419.jsp

source [find /opt/openocd/share/openocd/scripts/interface/stlink-v2.cfg]

source [find /opt/openocd/share/openocd/scripts/target/stm32f4x_stlink.cfg]

# use hardware reset, connect under reset
reset_config srst_only srst_nogate


配置环境变量:

在~/.bashrc文件的PATH变量后添加":/opt/openocd/bin"(无引号),再执行source  ~/.bashrc更新环境变量。

将stm32f4 discovery开发板连上电脑,在命令行下输入openocd命令应该得到如下结果:

Open On-Chip Debugger 0.7.0 (2014-01-21-23:09)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : This adapter doesn't support configurable speed
Info : STLINK v2 JTAG v14 API v2 SWIM v0 VID 0x0483 PID 0x3748
Info : Target voltage: 2.874386
Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints
[openocd的使用方法请参考官方文档]


3、arm编译工具arm-none-eabi工具包

下载编译好的工具包,http://pan.baidu.com/s/11U45S

官方网站:https://launchpad.net/gcc-arm-embedded

解压后复制到/opt/目录,同样将/opt/gcc-arm-none-eabi/bin添加到~/.bashrc文件中并更新环境变量。

现在基本上构建了一个完整的编译调试环境,试试arm-none-eabi-gdb -tui就能启动调试窗口,使用方式与普通gdb命令相同。