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.SD卡原理图 我们使用2.6.0版本的FRDM-K64F固件,你可以从这个链接下载固件。 “mcuxpresso.nxp.com”. Usb连接图如下 图2.USB连接图 Bootloader使用了SDHC,fatfs文件系统,usb,flash操作,所以我们应该添加一些文件来支持,我们的代码基于usb例程下的usb_device_msc_sdcard_lite,将所需文件添加到该工程。 主代码中,主要就是将usb初始化完成,sd卡初始化完成,挂载文件系统完成,然后电脑会与mcu用usb进行通讯,最后电脑就会识别出一个盘符 图3.盘符 检测文件改动代码,通过定义一个标志wrFlag,当将文件放入U盘,会调用write10命令,此时将标志位置1表示有文件改动。 图4.修改标志位 当检测到该标志以后,打开“a000.bin”文件,开始升级应用程序,然后反初始化设备,最后跳转到应用程序。
3、 运行效果1、 下载bootloader 2、 我们修改了led_blinky代码作为升级app,将生成的bin文件改成a000.bin文件放入u盘 此时串口打印的消息 3、 程序开始运行,led灯开始闪烁 提取码:4zn2
|