你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32实战经验】STM32F103二次bootloader写保护设置具体步骤

[复制链接]
wjandsq 发布时间:2015-4-14 19:21
本帖最后由 wjandsq 于 2018-1-10 19:43 编辑

      
收藏 评论5 发布时间:2015-4-14 19:21

举报

5个回答
沐紫 回答时间:2015-4-15 09:42:29
谢谢楼主~
stary666 回答时间:2015-4-15 11:28:00
好贴,学习一下
数码小叶 回答时间:2015-4-15 16:47:20
学习一下
wjandsq 回答时间:2015-4-16 21:15:17
不客气,论坛有赠送的板子,对我帮助很大,现在已放弃DSP,专攻STM32了。
wjandsq 回答时间:2015-4-17 08:47:36
本帖最后由 wjandsq 于 2015-4-17 08:54 编辑

三、针对USB-Dual-RS485实验板编写的USB bootloader例程包(USB_Bootloader 正式版V1.0)下载:
http://www.daxia.com/bibis/moredata_1935500_18030.shtml

该USB Bootloader属于二次Bootloader,适用于USB-Dual-RS485板的自升级,正式版本V1.0。
PC机上显示为USB双虚拟串口的通讯设备。

该USB Bootloader两种应用程序的更新模式的说明:

1.ISP强制更新模式(需要断电重启才可以刷用户程序)

该模式属于常规更新模式,类似JLINK的自我更新,JLink内置bootloader,但需要设置跳线擦除,
设置跳线进入bootloader模式烧写程序。

将PB2(boot1)设置为高,boot0设置为低,重启即可运行本USB bootloader(以下简称bootloader),
装新程序前,可以写段代码,自动擦除第17-第128页内容(查阅STM32F1xxx编程手册)。

进入bootloader,利用超级终端或例程包自带的YModem通信工具,发送BIN文件即可完成更新。

注意,由于是USB通信,无论波特率设置为2400还是921600,USB通信速度理论上都是一样的,
但由于USB-CDC绑定了串口1和串口2,本USB bootloader没有剥离串口向外发送的等待,速度会卡在这儿,
所以最好设置为115200以上波特率(建议波特率设为2Mbps),或者读者自己把串口发送的代码注释掉。

对于USB-Dual-RS485板子,PB2右边是3.3V,跳线帽短接PB2到3.3V,断电重启就可以ISP更新程序了。
启动时PB2为输入下拉模式,判断完PB2的电平,bootloader就把它设置为推挽输出,驱动LED。
看到LED灯狂闪,说明这是工作在程序更新模式,直到程序成功更新完毕,才会跳转到用户代码段。

注意用户代码段就不要狂闪PB2驱动的LED灯了,可以对bootloader和app程序加以区分。

2.IAP更新模式(不断电重启即可更新用户程序)

bootloader占用16K的FLASH,0x0800,0000 - 0x0800,3FFF,启用了写保护,由于写保护
的每页是1024字节,保护1页就是 1024 * 4 = 4K字节,这里保护了4页,共16K字节。

IAP更新模式就是为了不想使用仿真器,编译后直接在线更新app程序。

STM32F103系列的USB,可以实现USB转3路虚拟串口,这个bootloader仅实现两路。
在设备管理器查看STM32 Virtual Port的详细信息里,可以看到设备的硬件ID,
末尾是MI_00或MI_02,我们用MI_02那个虚拟串口进行YModom通信。

IAP的意思就是在线更新程序(不断电更新用户程序),本例程包含有bootloader和app两个工程包,
实现了该功能。

这里使用自己编写的YModem通信工具,在应用程序运行的时候,利用YModem通信工具
发送“RESET”,你也可以自定义字符串或者其它特殊方式发出复位命令。

STM32收到复位命令,则将程序更新标志修改为1,这个标志目前存放在0x0800 F000处,
当然如果你有后备电池或超级电容,也可以将该标志写到16字节的备份寄存器里,
然后STM32就撤掉USB上拉电阻,准备复位了,这里做一个延时,上位机软件发现
USB虚拟串口不见了,可以关闭串口。如果是用超级终端,就需要赶快关掉释放串口资源,
否则跳转到bootloader运行,windows就找不到虚拟串口,超级终端也会无响应。

STM32延时2-3秒就复位了,然后运行bootloader程序。

bootloader程序将PB2设置为输入模式(带下拉电阻),这个模式并没有手动将PB2设置为
3.3V,所以bootloader程序检测到PB2是低电平,然后就切换PB2为输出模式,PB2驱动
LED灯就开始狂闪。

自己设计的YModem通信工具发送了RESET的命令就关闭了串口。
bootloader程序运行后,启用USB模块,这时USB双虚拟串口又出现了。
YModem通信工具发送命令后,不需要关闭,直接打开需要烧写的app.bin文件,然后点击发送文件,就可以了。

如果不知道是那个串口,就打开串口,发现1秒钟有一个'C'出现,就可以确认可以用这个串口进行IAP。

这种更新就是打开文件,点击发送复位命令,点击发送文件,操作比较简单。

注意: 此种更新模式主要适用于项目开开发的反复调试阶段使用,并无加密功能。

更详细的流程,可以看工程包里的源代码和说明文档,更具体的文档还在进一步整理中。

USB更新的便利之处:

1.使用USB通信更新应用程序区域,一般不会出现通信错误。
  设置了写保护,二次bootloader不会丢失,建议产品引出boot0 boot1以备不测。

2.可以释放SWJ接口,另作它用,不需要J-Link仿真器。
  如果不释放SWJ接口,仍然支持J-Link调试。


所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版