ISP
-
这种和下一种烧录方式就是我们常说的BootLoader,通过一段引导代码来将我们要烧录的程序通过串口烧写进入单片机的Flash。但是与IAP烧录方式不同的是,这段引导代码是ST公司在芯片出厂前就固化在内部的,我们是需要按照给出的文档说明操作就行了。
-
ISP支持的下载接口有:
方式 | 协议说明 | 软件链接 | 备注 |
---|---|---|---|
USART | AN3155 | 据说官方的软件很不好用,不如用Flymcu | |
CAN | AN3154 | 没用过 | |
I2C | AN4221 | 不是很常用,反正我是没用过 | |
USB | AN3156 | 官方链接 | 这种方式又称为DFU,仅F4极其以上和互联网型的F1支持;其它若想支持,1.有USB接口2.需要自己写引导程序利用下面所说的IAP方式 |
具体哪些型号的微控制器支持哪种方式,在各个芯片的referfence mannul中提到,同时AN2606也提到了。
3. 每次下载都需要进入自举模式,就是把boot0置1,boot1置0,然后再上电。
4. 随着微处理器性能逐渐提升和成本下降,USB的DFU模式肯定使用越来越广泛,最重要的是,下载速度快。
IAP
- 这一种下载方式就是和上一段差不多;不同的地方在于:需要自己写引导代码,虽然这样比较麻烦,但是可以自定义下载方式和协议,并且可以通过代码控制,进行自动处理,不需要手动上电。
- 本人就做过的东西简要说几点注意事项:
- Flash中可以放置一段IAP程序+多段APP程序,要注意IAP程序起点是在0x08000000处;其它的APP程序要分段放在整个Flash中,并且每段APP程序的起始地址最好是是sector的倍数;
- 每次从IAP跳转之前,要关闭所有中断,中断向量表会变化。
- 每次跳转到APP,首先需要更改中断向量表地址。
pass:我自己再IAP或者APP中实现RTOS时。总是出现莫名其妙的错误和程序跑飞。希望知道的大佬能够告知。。。
SW/JTAG
- 这一种需要专门的编程器/调试器,如ST-LINK v2,J-LINK,等系列,一般这种设备都具有下载功能和调试功能,并且都支持SW模式和JTAG模式
- 这种方式还可以和IDE结合,实现一键下载和调试
- 这种方式还能够在不断电的情况下进行操作,不需要更改boot0和boot1的电平。因为这种接口是通过引脚直连ARM内核的,拥有较高的权限。
参考文章
STM32程序的烧录方式