一开始根本不知道该怎么在linux下烧写stm32,为了简单一些,我新建了一个Windows xp虚拟机,开发板自带的烧写软件就是在Windows下用的,使用的是USB转串口下载方式,烧写方法比较傻瓜,所以用了一段时间,直到虚拟机和开发板之间闹了矛盾。
现象是虚拟机过了一会儿就识别不了转串口的芯片,也就能烧个三、四次左右,非要重启虚拟机不可,有时候还不一定有用。
一怒之下删了虚拟机,后来后悔了好几天。
当时我网上找了一下linux烧写stm32的方法,居然有使用串口烧写的软件,所以当时删除虚拟机毫不犹豫。
烧写软件是stm32flash。
关于如何使用stm32flash的博客都非常简洁:
第一步,将STM32芯片的串口连接到RS232上;
第二步,将STM32芯片的BOOT0置高,BOOT1置低;
第三步,上电;
第四步,执行:
stm32flash /dev/ttyUSB0
stm32flash -w basic_lib_test.hex -v -g 0 /dev/ttyUSB0
引自《使用stm32flash串口烧写STM芯片》
但是我倒腾了一晚上,执行第一条命令的时候仅仅成功了两次,第二条压根就没尝试过。整个晚上一边网上找原因,一边敲“向上”和“回车”两个键。
后面几天问题一直没解决,没法烧了。
网上发现还有用jtag或者stlink下载的方法,还可以调试,于是就买了个stlink v2,想要使用还是需要安装一个软件,安装方法如下:
Ubuntu环境下使用stlink调试和下载stm32f4-discovery程序
这个博客所安装的是1.1版本的软件,现在有了1.2版本的了,所以下载了1.2的版本,安装依赖包,编译安装,编译不通过,似乎是gcc和clang的兼容问题,懒得管了,重新下载1.1版本,编译安装。
之后,先用lsusb查看stlinkv2的Bus号和Device号,然后添加环境变量:
export STLINK_DEVICE=<USB_BUS>:<USB_ADDR>
后面就和博客中说的差不多了。
如有问题,安装包中的doc文件夹中有教程。
总之,好用到飞起。