首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教strongchen,一个MC9S12XE的BOOTLOADER问题

请教strongchen,一个MC9S12XE的BOOTLOADER问题

我最近写了个MC9S12XE系列MCU的BOOTLOADER,用于串口烧写FLASH.在防真器BDM(P&E的)连接在目标板上时,可以烧写成功,在防真器BDM没有连接在目标板上时,就烧写不成功(烧完后没见程序跑起来.

具体现象就是:我先通过防真器把程序烧进去,点击运行让程序跑起来后,再通过PC机上的一个VC6.0编的串口发送程序,发送.glo文件(和.s19文件几乎一样),发送完毕后,更新后的程序就能跑起来(我以闪烁不同LED灯作为新旧程序标志).这时BDM是连接在目标板上的,在这种情况下,我继续烧写更新后.glo文件下去,也没有问题.

问题在我断电后,拔掉BDM,再上电(程序在运行),这时再烧.glo文件下去的话,能烧写完毕,但就不见更新后的程序跑起来(因为LED没有再闪烁).

我BOOTLOADER的原理:目标板串口检测特定字符后,相应程序就把BOOTLOADER那段代码拷贝到RAM内存中,然后CPU跳到内存中运行BOOTLOADER代码,接收PC机串口发下来的数据(按照相应协议).进行烧写FLASH,当接收到结束标志后,CPU就跳到复位地址,进行复位.

不知道是什么原因呢?我调试时完全通过了的,能烧写成功,并运行起来,没有BDM时,就不能成功.找不到原因 请问strongchen,是什么原因呢?
连接BDM时,MCU进入的是特殊单片模式,它与不接BDM的正常单片模式有所不同。主要的区别是有些寄存器在正常单片模式下是一次写入的,而在特殊单片模式下可以多次写入。可以检查一下看看。
海纳百川  有容乃大

我代码中只读,写了片内FLASH的控制寄存器啊,在进行编程操作时。有哪位达人说说啊。

康桥人,strongchen

返回列表