Board logo

标题: 怎样将程序放到FLASH的0x4000-0xbfff范围内 [打印本页]

作者: wade    时间: 2008-10-14 17:13     标题: 怎样将程序放到FLASH的0x4000-0xbfff范围内

芯片mc9s12ne64

应用程序分为2部分:

第一部分bootloader :放在flash的c000-ff80范围内

第二部分app :放在flash4000-c000范围内

bootloader通过以太网,接收s19格式的app程序,根据s19文件的地址信息,将接收的每一行代码,写入相应的flash空间。

以前app小于16k,所以用4000-7FFF这16k的未分页空间是没有问题的。

现在app升级了,有部分代码放在8000-bfff分页空间内就不能运行了。

中断向量应该放在什么地方?目前是放在bf80-bffe分页地址内的,是不是放错了造成程序不运行的?请高手指点!

strongchen help!

[此贴子已经被作者于2008-10-14 17:20:10编辑过]


作者: xiaobin12321    时间: 2008-10-21 14:08     标题: 求助。防止代码跑飞

你好。

因为如果程序跑飞,MCU 可能不受控制地从存储器程序代码区的未用地址中执行程序,为避免可能有害的影响,
所有未使用的地址都应该包含一条合理而且适宜的指令。该指令可能是一个以
SWI 指令结尾的NOP 序列,或者更简单,都是SWI 指令。这么做以后,不受控
地在这些地址中执行代码就会发生软件中断。然后程序员就能确定到底发生了什
么意外。

我用的单片机是MC9S08QG8。。我想问比如未使用的地址为0xE200到0xFFF ...我要怎么在这些未使用的地址填入

适当的语句,如返回指令到0x0000.或者填入SWI 指令呢。?

请各位高手,老师指导,万分感谢


作者: strongchen    时间: 2008-10-22 14:19

wade网友:

你的bootloader程序是自己写的吗?在对FLASH进行操作时,bootloader程序是在FLASH中运行,还是调入RAM中运行的呢?不管怎样运行,NE64的中断矢量地址都是固定不变的。如果你的应用程序只是大小变了,那应该不会出现不能运行的问题,除非你的新应用程序需要改变中断矢量。


作者: strongchen    时间: 2008-10-22 14:23

xiaobin12321网友:你可以用FILL指令来填充内存空间。具体使用可参看CodeWarrior安装目录中的文档Build_Tools_Utilities.pdf。
作者: xiaobin12321    时间: 2008-10-23 08:50

谢谢你,但是那个都是英文看不太明白






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0