OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11580|回复: 12

学习了一段时间,特分享个F4的SPI接口FATFS的SD卡IAP程序

[复制链接]

6

主题

123

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2012-5-27
在线时间
200 小时
发表于 2015-2-6 10:31:49 | 显示全部楼层 |阅读模式

内容如题,

参考了原子哥的F4手册里面串口IAP,并且还用了hexiaolong2008网友的基于103的SDIO的IAP思路(http://www.openedv.com/posts/list/16218.htm)

在此特提出感谢,然后想着用F4应该也是可以的,就参考着做了一个,最后发现程序下载速度确实很快,没有做屏幕显示,开机检测按键是否按下了,如果按下了就进去固件更新的程序,然后用了一个LED灯用来显示当前的状态,没有加屏幕显示,这样的话可以把bootloader做到最小。

[mw_shl_code=c,true]#define APP_START_ADDR (FLASH_BASE|0X4000) [/mw_shl_code]

定义了APP的入口地址,具体地址的设定可以参考原子哥F4手册中对F4系列芯片地址块的分配,我用的第一个块16KB用来放BootLoader,原子哥用的是64KB,跟我这个有点不一样。


[mw_shl_code=c,true]int main(void) { KEY_Init(); if(KEY == 0) { FirmwareUpdate(); } JumpToApp(APP_START_ADDR); while(1) { } }[/mw_shl_code]

主函数如上所示,就是检测按键是否按下,如果按下后就进入了固件更新,没有按下就跳到APP中。


其中BootLoader的地址应该配置如下图:


然后对于APP需要做以下的修改,首先是IROM1的地址:


这个修改应该和IAP.h中的宏定义一致:

[mw_shl_code=c,true]#ifndef __IAP_H #define __IAP_H #include "stm32f4xx.h" #include "stm32f4flash.h" #define APP_START_ADDR (FLASH_BASE|0X4000) void JumpToApp(u32 AppAddr); void FirmwareUpdate(void); #endif [/mw_shl_code]

然后就是APP的main函数中需要加一句话:

[mw_shl_code=c,true]SCB->VTOR=APP_START_ADDR;[/mw_shl_code]

这个是用来更改中断向量表的。



这样就可以进行IAP更新了,先按住PA0,然后再按住复位,或者按住PA0后进行上电,就会自动检测SD卡中的Update.bin是否存在,如果存在就会进行IAP的更新。

[mw_shl_code=c,true]res = f_open(&UpdateFiles,"Update.bin",FA_OPEN_EXISTING|FA_READ);[/mw_shl_code]

感觉这样更新固件的方式挺快的,就是一瞬间就完了。

现在把源代码奉上,以供参考,转载请注明openedv。



最后对hexiaolong网友和原子哥进行无比的感谢,另外可能我发错版面了,如果又必要的话,原子哥可以进行移动。

(F103由于FLASH块分配的原因并不适用这种方法,但是对于F4而言,不论是SDIO还是SPI,也只是把底层给更改后即可,都适用于这种方法)


BootLoader407_V0.1.zip

511.36 KB, 下载次数: 1362

APP407_V0.1.zip

735.71 KB, 下载次数: 1272

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-2-6 11:12:43 | 显示全部楼层
不错,谢谢分享。cool。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13114
金钱
13114
注册时间
2012-11-26
在线时间
3812 小时
发表于 2015-2-6 11:28:20 | 显示全部楼层
收藏了 感谢楼主分享
学无止境
回复 支持 反对

使用道具 举报

6

主题

123

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2012-5-27
在线时间
200 小时
 楼主| 发表于 2015-2-6 11:29:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
哇 竟然是原子哥 还给置COOL了 泪奔中。。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-2-6 23:39:55 | 显示全部楼层
回复【4楼】STM32F103:
---------------------------------
必须的啊,好资料自然cool
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

206

帖子

1

精华

高级会员

Rank: 4

积分
613
金钱
613
注册时间
2014-10-26
在线时间
32 小时
发表于 2015-12-31 16:29:21 | 显示全部楼层
你这个程序,为什么我每次烧进去之后,想再次下载都会出现 Invalid ROM Table,只能通过 ISP 擦出芯片才能再用, ~
学习!
回复 支持 反对

使用道具 举报

18

主题

238

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1823
金钱
1823
注册时间
2014-8-5
在线时间
211 小时
发表于 2016-1-2 22:05:08 | 显示全部楼层
谢谢楼主分享,参考学习学习
回复 支持 反对

使用道具 举报

6

主题

123

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2012-5-27
在线时间
200 小时
 楼主| 发表于 2016-1-3 10:48:48 | 显示全部楼层
q27488 发表于 2015-12-31 16:29
你这个程序,为什么我每次烧进去之后,想再次下载都会出现 Invalid ROM Table,只能通过 ISP 擦出芯片才能再 ...

这个问题我之前没有遇到过,是不是应该按着复位才可以进行?而且我的SD卡使用的是SPI接口的,不是SDIO接口的。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-2-7
在线时间
5 小时
发表于 2016-8-12 20:56:48 | 显示全部楼层
cool,标记学习学习
年轻即出发, 一天两天算不了什么。hold~
回复 支持 反对

使用道具 举报

9

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
421
金钱
421
注册时间
2017-4-26
在线时间
64 小时
发表于 2017-5-22 15:46:27 | 显示全部楼层
过来学习下。
以我资质之驽钝,当平心静气、循序渐进、稳扎稳打,不辜负他人勉励。
回复 支持 反对

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2018-1-30
在线时间
22 小时
发表于 2018-3-14 14:34:45 | 显示全部楼层
你好我移植你的程序遇到问题可否加QQ请教一下谢谢了(467200539),已经卡在这个问题好几天了
回复 支持 反对

使用道具 举报

2

主题

394

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2112
金钱
2112
注册时间
2012-5-8
在线时间
314 小时
发表于 2018-6-28 21:33:31 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

1

主题

81

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3173
金钱
3173
注册时间
2015-3-29
在线时间
302 小时
发表于 2018-8-18 15:10:38 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 12:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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