0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于使用STM32F103RCT6的芯片制作SD卡Bootloader

科技绿洲 来源:嵌入式微处理器 作者:嵌入式微处理器 2023-06-22 10:59 2681次阅读

做过很多Bootloader升级的产品,感觉Bootloader还是很有意思的。通过芯片的一段程序,去更新剩余的程序。从而达到更新产品软件的作用。芯片自带的Bootloader是通过芯片厂家的协议,通过烧录器把程序更新到Flash里面。而我们自己为什么还要部分的空间再写一个Bootloader呢?因为我们想通过我们自己的方式,升级芯片里的软件。

传输方式那就太多了,基本有的通信方式理论上都可以进行传输升级,包括CAN、SPI、IIC、USART等等。做过汽车上面的CAN升级、USART升级、SD卡升级、OTA升级。其中CAN和USART升级都是在线升级,SD卡可以称之为离线升级。就是不用PC端,在线下插入SD卡,就可完成升级。(CAN和USART如果有硬件升级的设备,也可以做成离线升级)。

讲一下SD卡的升级,使用离线升级,设备端需要有SD卡槽,升级的时候,将升级的文件放入SD卡中,再插入卡槽完成升级。(SD卡使用的SPI驱动,原理上其实也可以称为SPI升级。。。)

这里使用STM32F103RCT6的芯片制作SD卡Bootloader。

一.硬件

我使用的原子mini开发板,芯片为STM32F103RCT6,带SPI驱动的SD卡槽。

二.软件(寄存器编码,为的是减少Bootloader的代码占用空间)

  1. SD卡使用的是SPI驱动。SPI1_Init()初始化,SPI1_ReadWriteByte读写。

图片图片

  1. SD卡驱动和FATFS文件系统。读SD卡、写SD卡、初始化SD卡等等,都是写好的驱动程序,直接可以用。这里也是用到了FATFS文件系统,需要移植两个文件。这里不多说。

图片

  1. 芯片Flash的操作。由于升级APP程序片需要用到Flash的操作,所以Flash的擦除,写入不能少。

图片图片

  1. APP程序跳入。当Flash里面写入了更新后的程序,需要跳转到Flash的起始地址,所以有一个函数需要。

图片

  1. 应用部分:

首先选择一个起始地址,是需要刷写程序的起始地址。只要大于Bootloader程序的总长度,并且APP程序的长度不能超过(芯片大小 - Bootloader程序大小)即可。

然后Flash中选取一个地址作为标志位,用于判断是否需要更新程序。

最后就是读取SD卡里的文件,把读取的写入到对应的Flash里面,完成跳转。

图片

Main函数,先检测0x08002FFE这个地址的标志位,如果是0x02,说明有应用APP程序,不需要进行升级,所以直接iap_load_app(FLASH_APP_ADDR)跳转到APP的起始地址,开始运行程序,BOOT程序就到这里结束。

如果不是0x02,说明是新的芯片,或者是没有进行过升级的。就开始进行BOOT程序的升级流程SD_Update()。

图片

这里是打开SD卡、挂载的一些操作。如果成功进行到下面。

图片

f_read读取SD卡中的文件&file,并赋值到buffer数组中,STMFLASH_ErasePage擦除一片FLash区域,STMFLASH_WriteHalfWord进行写入。写入完成后PageOffest += STM_PAGE_SIZE,记录写入的片数,继续读SD卡的文件(注意,这里不是一次性全部读完,每次读取STM_PAGE_SIZE的大小,再写入),擦除写入。。。直到(res || br = 0),没有可读的,break,退出while(1)循环。擦除标志位的地址STMFLASH_ErasePage(0x08002FFE),并写入0xFF02, (vu16 )(u16)(0x08000000 + 0x2FFE)=0xFF02(下次上电后读到这个0x02的标志位说明已经有APP程序了,直接跳转到APP地址就好了)。

最后iap_load_app(FLASH_APP_ADDR),SD卡的Bootloader流程结束,进入到APP程序中运行了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    459

    文章

    51808

    浏览量

    431858
  • STM32
    +关注

    关注

    2281

    文章

    10974

    浏览量

    360533
  • SD卡
    +关注

    关注

    2

    文章

    573

    浏览量

    64647
收藏 人收藏

    相关推荐

    STM32F103RCT6是什么?STM32F103RCT6有哪些特性?

    请问下STM32F103RCT6是什么?STM32F103RCT6有哪些特性?
    发表于 07-19 06:37

    STM32F103RCT6数据手册

    STM32F103RCT6芯片,相关学习资料,SYM32系列芯片,范围广,资料齐面,介绍全面。
    发表于 05-13 15:39 775次下载

    STM32F103RCT6_MAX9851_2.2吋LCD_SD

    STM32F103RCT6_MAX9851_2.2吋LCD_SD
    发表于 05-20 16:08 29次下载

    STM32F103RCT6用SPI和FATFS访问SD

    STM32F103RCT6用SPI和FATFS访问SD,参考了正点原子源码
    发表于 08-03 18:20 140次下载

    stm32f103rct6引脚图及使用手册

    本文介绍stm32f103rct6引脚图、stm32f103rct6电路图、stm32f103rct6芯片介绍、使用手册图解。
    发表于 08-03 16:44 22.2w次阅读
    <b class='flag-5'>stm32f103rct6</b>引脚图及使用手册

    STM32F103RCT6

    STM32F103RCT6引脚定义图
    发表于 02-15 23:52 123次下载

    STM32F103RCT6 数据手册

    STM32F103RCT6 数据手册
    发表于 09-20 10:40 302次下载
    <b class='flag-5'>STM32F103RCT6</b> 数据手册

    STM32F103RCT6的Sch原理图免费下载

    本文档的主要内容详细介绍的是STM32F103RCT6的Sch原理图免费下载。
    发表于 04-25 08:00 0次下载
    <b class='flag-5'>STM32F103RCT6</b>的Sch原理图免费下载

    STM32F103RCT6的最小系统原理图免费下载

    本文档的主要内容详细介绍的是STM32F103RCT6的最小系统原理图免费下载。
    发表于 08-15 08:00 591次下载
    <b class='flag-5'>STM32F103RCT6</b>的最小系统原理图免费下载

    STM32F103RCT6移植到STM32F103C8T6需要注意那些事项

    本文档的主要内容详细介绍的是STM32F103RCT6移植到STM32F103C8T6需要注意那些事项。
    发表于 11-15 08:00 40次下载
    <b class='flag-5'>STM32F103RCT6</b>移植到<b class='flag-5'>STM32F103C8T6</b>需要注意那些事项

    STM32F103RCT6核心板-AD原理图

    STM32F103RCT6核心板-AD原理图免费下载。
    发表于 05-21 11:19 197次下载

    STM32F103RCT6 基于STM32Cube_FW_F1_V1.8.0库建立工程模板

    STM32F103RCT6 基于STM32Cube_FW_F1_V1.8.0库建立工程模板
    发表于 12-08 20:36 46次下载
    <b class='flag-5'>STM32F103RCT6</b> 基于<b class='flag-5'>STM32Cube_FW_F</b>1_V1.8.0库建立工程模板

    STM32F103rct6标准版的电路原理图

    本文档的主要内容详细介绍的是STM32F103rct6标准版的电路原理图免费下载。
    发表于 03-21 14:56 0次下载

    STM32F103RCT6最小系统(高清PDF版)

    STM32F103RCT6最小系统全(高清PDF版)免费下载。
    发表于 07-31 11:04 0次下载

    STM32F103RCT6的原理图

    STM32F103RCT6的原理图免费下载。
    发表于 07-26 15:38 0次下载