请选择 进入手机版 | 继续访问电脑版
查看: 1584|回复: 0

[原创] 【经验分享】SD卡作U盘的bootloader

[复制链接]

该用户从未签到

648

主题

6301

帖子

0

超级版主

Rank: 8Rank: 8

积分
19433
最后登录
2024-3-19
发表于 2020-8-25 09:11:40 | 显示全部楼层 |阅读模式

1、   介绍
    之前文档曾使用sd卡来升级程序。这种方法每次都要插sd卡到电脑,将程序拷到sd卡里,然后再插到mcu的sd卡槽才能更新程序。这种更新方法似乎有些麻烦,所以我们实现一种更方便的办法,它不再需要插拔sd卡。使用mcu的usb功能,将mcu识别为存储U盘,存储介质则是sd卡。当我们需要更新程序,只要将mcu的usb接口连接到电脑,电脑识别出以后,将需要烧录的程序复制进去,然后bootloader就会识别该文件,然后升级应用程序。Bootloader检测的是文件的改动而不是文件是否存在。程序本身逻辑是一旦sd卡产生了读写操作,才检测是否存在需要的更新文件(a000.bin文件)。也就是说,如果sd卡里已经有a000.bin文件,是不会更新应用程序,只有将这个a000.bin用其他的a000.bin覆盖,才会执行更新应用程序的操作。
2、   bootloader实现
SD卡与单片机连接原理图如下,板子使用SDHC模块来与SD卡通信。
1.png
                                                 图1.SD卡原理图
我们使用2.6.0版本的FRDM-K64F固件,你可以从这个链接下载固件。
“mcuxpresso.nxp.com”.
Usb连接图如下
usb_sch.PNG
                                                 图2.USB连接图
Bootloader使用了SDHC,fatfs文件系统,usb,flash操作,所以我们应该添加一些文件来支持,我们的代码基于usb例程下的usb_device_msc_sdcard_lite,将所需文件添加到该工程。
       主代码中,主要就是将usb初始化完成,sd卡初始化完成,挂载文件系统完成,然后电脑会与mcu用usb进行通讯,最后电脑就会识别出一个盘符
disk.PNG
               图3.盘符
其他关于如何更新代码到flash的具体解释参考http://community.nxp.com/docs/DOC-344903
       检测文件改动代码,通过定义一个标志wrFlag,当将文件放入U盘,会调用write10命令,此时将标志位置1表示有文件改动。
modify_flag.PNG
                                          图4.修改标志位
当检测到该标志以后,打开“a000.bin”文件,开始升级应用程序,然后反初始化设备,最后跳转到应用程序。

check_file.PNG
3、   运行效果
1、 下载bootloader
2、 我们修改了led_blinky代码作为升级app,将生成的bin文件改成a000.bin文件放入u盘
此时串口打印的消息
test.PNG
3、 程序开始运行,led灯开始闪烁
       l.jpg
提取码:4zn2


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-3-19 16:20 , Processed in 0.115742 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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