查看: 2008|回复: 1

[已解决] 基于 MCF51JM128 USB Bootloader(已解决)

[复制链接]

该用户从未签到

2

主题

2

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
发表于 2013-8-24 16:39:23 | 显示全部楼层 |阅读模式
大家好
    我想请教一下,我看了一些文档关于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的文件,也不知道怎么才能解决。还请前辈大神给予指点帮助啊!谢谢啦
 
 
我知道答案 目前已有0人回答
回复

使用道具 举报

该用户从未签到

3

主题

18

帖子

0

注册会员

Rank: 2

积分
90
最后登录
1970-1-1
发表于 2013-8-27 10:31:49 | 显示全部楼层

回复:基于 MCF51JM128 USB Bootloader(正解)

我们有个对应的应用笔记,您可以看一下:
http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4368.pdf
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-10-12 22:51 , Processed in 0.085339 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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