查看: 2101|回复: 0

基于MCF51JM128 USB Bootloader

[复制链接]

该用户从未签到

2

主题

2

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
发表于 2013-8-24 16:09:45 | 显示全部楼层 |阅读模式
 大家好
    我想请教一下,我看了一些文档关于USB Bootloader都是叫做MSD Bootloader,其过程是将单片机当做从机,电脑当做主机,然后将S-record文件放入并解析,最后烧入单片机。我现在想实现直接利用U盘将S19文件放入U盘,通过U盘将程序烧入单片机,现在我已经实现了将S19文件读出并解析,但是在擦写和烧入过程中总是出现程序出错跑飞,也不知道为什么。
            通过调试,我发现问题渐渐明白,这个和写Flash和擦Flash都没有关系,是正常的,没问题的,现在的问题是由于这个USB Bootloader需要文件系统,通过不断的读U盘数据,将数据烧写入Flash,但是现在的问题是由于我的Bootloader的代码位置从Flash地址0X00000410-0X0006FFF。后面的地址存放的是我应用程序的代码,这个应用程序不大,大概是0X00007000-0X00007C00.我发现进行块擦除的时候,从地址0X00007000-0X000073FF和0X00007800-0X00007BFF这两块连续擦除是没问题的,但是一旦擦除地址0X00007400-0X000077FF就会出现Bootloader段的代码程序跑飞,就是文件系统进行读数据时出现问题(也就是运行F_read这个函数时出现问题)。我很奇怪,我应用程序的代码和Bootloader的代码是彼此独立的,并且是放在不同地址块的,并且Bootloader代码已经进行了保护,按道理,我擦除应用程序代码和Bootloader的代码一点关系都没有啊?为什么会影响Bootloader代码段的文件系统。我所使用的软件是codewarrior6.1,经过调试我发现了,在进入F_read这个函数时,通过反汇编可以看出,它会突然跳转到0X00007798这个地址,运行了一段CF_runtime.c里面的程序。不是很了解CF_runtime.c的文件,也不知道怎么才能解决。还请前辈大神给予指点帮助啊!谢谢了。
            
回复

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-20 05:29 , Processed in 0.075499 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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