zhouwenjing 发表于 2013-9-11 13:49:47

LPC1768的U盘更新程序的BOOTLOADER

自己在工作中经常用到的,分享给大家

U盘使用FAT32格式

#define CODE_FLASH_START_ADDR       0x5000 /*用户程序启动地址*/
#define CODE_FLASH_START_SECTION    5      /*用户程序起始扇区*/
#define CODE_FLASH_END_SECTION      19      /*用户程序结束扇区*/
#define CODE_FLASH_END_ADDR         0x0002ffff

#define FILENAME_R "/flash.bin"                     /*用户程序文件名*/

#define BLOCK_SIZE 0x1000

#define ADDR_SIGN_CODE (CODE_FLASH_START_ADDR+0x400)/*用户程序有效码地址*/

#define ADDR_VER_CODE (ADDR_SIGN_CODE+4)                     /*用户程序版本号地址*/

#define USER_CODE_FLG 0x12345678                                    /*用户程序有效码值*/


通过修改上面的,定制自己的BOOTLOADER


程序使用了znFat文件系统代码。

codeman 发表于 2013-9-11 14:06:37

收藏,学习

smallsnake 发表于 2013-9-12 14:03:58

谢谢楼主分享{:tongue:}

32MCU 发表于 2013-9-12 20:54:19

顶!!1

saddam911 发表于 2013-9-12 21:25:00

楼主好人,太有用了

zhouwenjing 发表于 2013-9-12 22:37:06

呵呵,
有点要注意的,如果你的用户程序的启动地址是在0x00000000的话,必须满足以下条件:
向量表的前八个向量之和必须等于0,否则LPC的片子会认为你的程序不是有效的用户程序,而直接进入到LPC自带的BOOT程序去了。

这个条件,编译器并没有帮你制造,产生的HEX文件或者BIN文件一般斗殴不满足这个条件,而是在下载时,由下载程序自动计算生成。

xingcai 发表于 2014-8-23 11:04:27

参见了楼主的代码,程序烧录正常,通过仿真观察烧到flash里的代码和生成的bin文件一样,也就是说烧录正确,不知道为什么跳转总是不能正确执行,请高手指点。

zhangtuan 发表于 2015-8-29 12:03:12

刚好在学LPC1788,参考一下

mega1702 发表于 2016-1-24 20:41:19

谢谢分享!!!

B.O.B 发表于 2016-12-8 22:00:22

这个很有研究价值了,谢谢楼主。
页: [1]
查看完整版本: LPC1768的U盘更新程序的BOOTLOADER