我最近写了个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就跳到复位地址,进行复位.
我代码中只读,写了片内FLASH的控制寄存器啊,在进行编程操作时。有哪位达人说说啊。
康桥人,strongchen
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |