硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3424|回复: 7
收起左侧

[客户分享] STM32F4使用SD卡更新固件,使用fatfs文件系统,SD卡SPI接口,USB Device等

  [复制链接]

8

主题

50

回帖

79

积分

初级会员

积分
79
发表于 2022-1-18 16:55:43 | 显示全部楼层 |阅读模式
最近在调试使用SD卡更新固件,参考了硬汉的“实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时制作了一个视频操作说明”和坛友的“stm32F4 iap+sdio 实现”两个帖子,链接如下:
已经基本实现了功能,一直在硬汉嵌入式论坛学习,所以想着也把学习成果分享一下,因此有了这个帖子,有啥问题欢迎指正。

1、概述:
本例程实现从SD卡更新固件,操作流程为,连接USB至电脑,拷贝固件(app.bin)至SD卡update文件夹下,断开USB,按下开机键,自动更新固件,更新完毕后,再次按开机键,系统正常工作。

2、使用的工具和软件包:
Keil MDK 5.30,AC5
主控为STM32F411RET6
Fatfs R0.14b
Stm32 USB Device库

3、附件:
IAP.rar-IAP程序
APP.rar-APP程序


4、IAP和APP程序工作流程
微信截图_20220118164252.png

5、需额外说明的地方(需要关注SD卡底层驱动可以看看,否则就不用往下看了)
例程中没有自己写基于SPI接口的SD卡操作程序(试着移植了下ST的,老出问题,放弃了),直接使用的fatfs官网上给的例程,然后根据自己的情况修改了一下(工程里的bsp_sd_diskio.c/.h),例程下载如下图,里面有很多平台的例程,用stm32那个。
http://elm-chan.org/fsw/ff/00index_e.html

12.png
然后USB的接口程序也是用的bsp_sd_diskio内的函数,这个从fatfs函数说明里看是不推荐这样干的,不过实在是不想调了,就还是用的这个,这样使用有个问题是连接USB前需要通过fafts文件系统创建一个文件,然后删除掉,所以有了下面的代码(肯定有更好的方式,只是我这里就这么用了),问题也是显而易见,插入USB,电脑识别出U盘来需要10s左右。。。
另外有个问题是IAP程序占用空间挺大的,应该跟新版本的fatfs有关系,我也没去优化,主要是自己的工程也不缺flash。
bsp_sd_diskio.c文件中的disk_timerproc()函数是在bsp.c文件中的bsp_RunPer1ms()函数中运行的。

13.png
14.png

附件文档内容跟帖子内容差不多。
使用SD卡更新固件.pdf (890.53 KB, 下载次数: 109)


IAP.rar (22.37 MB, 下载次数: 133) APP.rar (22.67 MB, 下载次数: 93)



评分

参与人数 1金币 +100 收起 理由
eric2013 + 100

查看全部评分

回复

使用道具 举报

2

主题

87

回帖

93

积分

初级会员

积分
93
发表于 2022-1-18 17:05:16 | 显示全部楼层
不错不错,学习一下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-1-19 10:40:17 | 显示全部楼层
非常感谢楼主分享。
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2022-1-19 11:00:18 | 显示全部楼层
不错,
代码不规范,亲人两行泪!
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-3-24 20:10:47 | 显示全部楼层
感谢楼主分享,学习,学习
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2022-3-24 20:11:22 | 显示全部楼层
不错的资料,下来学习学习
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-6-27 11:16:13 | 显示全部楼层
借鉴一下,谢谢兄弟了。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-8-9 14:43:37 | 显示全部楼层
谢谢楼主大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 04:38 , Processed in 0.337914 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表