STM32F407开发板的HTTP模式IAP远程升级之官方例程移植

2020-06-30来源: eefocus关键字:STM32F407  HTTP模式  IAP  远程升级

背景:

在使用RT-Thread RTOS的时候发现官方提出了一种通用的BootLoader方案,支持F1和F4系列的芯片

硬件资源:

正点原子stm32f407zgt6探索者开发板,片上Flash(ROM)大小为1024KB,RAM大小为192KB,板载一个SPI Flash W25Q128


BootLoader配置

根据官方文档:https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/,BootLoader的基本配置如下,加密压缩的配置可以不选。


硬件配置


选择芯片系列:stm32f4 ROM大小:1024KB RAM大小:192KB

串口输出引脚:PA9

支持SPI Flash PB14 (CS) PB3(CLK) PB4(MISO) PB5(MOSI)

恢复出厂按键 PA0(WK_KEY)

请选择按键有效电平:高电平有效,芯片内部设置为下拉输入模式

分区表配置

分区名 所处设备 偏移地址 大小(KB)

app 片内Flash 0x40000 128

download 片内Flash 0x20000 128

factory 片内Flash 0x60000 128

上述的分区表以及bootloader所占空间可以用下面的图表示,偏移地址的概念为从0x08000000开始偏移。flash空间的前128KB用来存放Bootloader固件,因此排在BootLoader之下的download分区的起始地址为0x08020000。


生成Bootloader固件,固件会自动发送到自己的邮箱。


烧录Bootloader

将得到的Bootloader固件通过STM32 ST-LINK Utility.exe 烧录到片上flash。要注意的是,烧录的起始地址为0x0800000。


烧录完成后串口工具会输出一下信息:


要注意的是,其中的NJUST字样是自定义的,可以在bootloader生成的页面自行定义。两个CRC32的error信息可以忽略,因为此时的flash中并没有包含分区表,分区表信息需要我们通过烧录app程序完成初始化配置。


FAL分区表中的onchip_flash为片上flash空间,起始地址为0x08020000,扇区大小为128KB


烧录app程序和打包

参考官方文档:https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/


烧录出厂固件

出厂固件的keil编译相关设置同app程序一样,中断向量表偏移地址也是一样的。在制作出厂固件app_factory时,需要将keil生成的bin用ota打包器进行打包,打包器的固件分区名为app,固件版本为1.0.0,然后将打包生成的app_factory.rbl改后缀名为app_factory.bin,最后使用st-link-utility将修改后缀名的app_factory.bin烧录到Flash的0x08060000地址即可。要注意,不可以直接把keil编译的bin文件直接下载到factory分区,因为此时的bin并没有app的头信息,这个头信息需要由OTA打包器打包后才能添加。


恢复出场固件的方法:按住WK_UP按键的同时按下复位按键,保持WK_UP按键处于按下状态10秒,即可进入恢复状态。


参考资料:


http://blog.sina.com.cn/s/blog_871ca62f0102y3zw.html

https://www.rt-thread.org/qa/thread-11864-1-1.html

https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/


关键字:STM32F407  HTTP模式  IAP  远程升级 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501622.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32中 关于液晶字符 表示字节数的计算规律
下一篇:STM32F 远程升级OTA 应用总结

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F407使用MFRC522射频卡调试及程序移植成功
本学期感测技术选修课需要做一个作品出来,用到了MFRC522射频卡模块,经历一个星期的调试,终于可以正常使用并寻卡成功了了。 成功的把C51的程序移植到了STM32上面。 现在分享一下调试过程1、操作环境我所使用的是STM32F407的开发板,使用STM32CubeMX配置初始代码。 MFRC522使用软件模拟SPI通信2、关于引脚的配置淘宝买来的模块,店家都会送资料 ,也可以点下面连接保存至网盘链接:http://pan.baidu.com/s/1boMyMlx1、SPI通信引脚 NSS(SDA)       --------->> 片选信号 SCK   
发表于 2020-05-22
STM32F407使用MFRC522射频卡调试及程序移植成功
STM32f407---oled屏幕配套取字模软件使用
我使用的是正点原子提供的oled字库,自己用取模软件取字模PC2LCD2002取模方式设置:阴码+逐列式+顺向+C51格式附: 代码//24*24的OLED汉字点阵,包括三个汉字:开、发、板。这三个汉字的点阵库,是利用PCtoLCD2002生产的,//软件设置的取模方式同OLED实验ASCII的取模方式一模一样,字体采用12*大小,一个汉字点阵占用24字节。const unsigned char OLED_HZK_TBL[14][24]={ {0x00,0x00,0x1F,0x80,0x11,0x00,0x11,0x00,0x11,0x00,0xFF,0xF0,0x11,0x00,0x11,0x00,0x11,0x00,0x1F
发表于 2020-05-20
STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
,但是最好使用最低级的定时器,TIM7和TIM8都只能定时,所以我这里用的TIM7这里我新建一个工程演示选择STM32F407zg芯片RCC和SYS配置就不截图了,大家都会的时钟树配置如下图通过查看STM32F407的数据手册可以知道TIM7的频率就是APB1的频率,84MHzTIM7配置:预分频系数为84-1 (83)自动重载值 1(这里的自动重载(arr)一定要设置为1,不能为0,否则无法得到正确的结果)则TIM7的溢出频率 = 84MHz / (83 + 1) = 1MHz(1us)在IAR或者MDK编译器中写代码在tim.c文件里面添加代码,一定要写在/* USER CODE BEGIN 1 *//* USER CODE
发表于 2020-05-17
STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
CubeMX Stm32F407 生成一定周期的占空比不同的方波 DMA + 定时器
先上图如图 是我生成的一个波形  这个波形的占空比在连续的四个周期内分别是10%,20%,30%,40%, 并且按照这个顺序循环这里大致介绍一下实现的方式。使用的软件是Cubemx(库函肯定也可以实现)第一步是器件选型  这一部分不做介绍  用的是Stm32F407第二是时钟配置接下来是定时器配置 第三步就是生成代码了这里 需要在生成的代码里面加上一行开始的代码。
发表于 2020-04-14
CubeMX Stm32F407 生成一定周期的占空比不同的方波 DMA + 定时器
基于Stm32F407的任意波形发生器
今天跟大家分享一个DAC转换的例子:先来效果图示波器使用的是Loto示波器OSC802三角波20KHz示例三角波20KHz示例正弦波20KHz示例测试使用的是Loto虚拟示波器   以上两张图的波形每一个周期都是300个DAC点组成,DAC转换速度是3MHz具体的实现代码如下:主要是最下面的三个函数  一个是DAC的初始化函数,另一个是定时器4的初始化函数 最后一个是波形发生函数。这是DAC+DMA的初始化函数  这要是设置DAC和DMA的基本参数 DAC触发选择的是定时器4的触发引脚, 也可以换成以上的其他定时器接下来是定时器的初始化定时器初始化部分很简单,不需要配置IO 
发表于 2020-04-14
基于Stm32F407的任意波形发生器
基于STM32F407的 中景园0.96寸OLED(IIC)的程序升级
前天学习了韦东山老师的嵌入式linux教学的一期视频中关于LCD的刷新显示章节,对于显示的机制有了一些略微的理解,回想起来之前一直在用的OLED不禁想要去看看有没有人做过相应的程序,结果没有找到!于是自己做了一个底层的代码。还是老规矩先来展示效果图图片展示的是OLED 的显示数字和字符串,OLED屏幕的刷新频率达到了惊人的40Hz,而且几乎不占用 CPU时间(数据全部走DMA) 我的程序是基于其他大佬的硬件IIC和DMA程序改编的,程序的整体框架如下在编写用户程序之前 我需要先实现 单片机内存到 OLED内存的这个工作,这一部分我选择使用的是STM32F407的硬件IIC 集合DMA来实现的,虽然网上对STM32F407的硬件
发表于 2020-04-14
基于STM32F407的 中景园0.96寸OLED(IIC)的程序升级
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved