johdon23 当前离线
高级会员
首先谢谢luojun2005,按照你说的方法,程序运行正常了!
只是const INT8U P[18] 应该改为INT8U P[18],因为const是定义FLASH的,而这里应该把数组定义到RAM中吧
也就是说将对FLASH读写的操作代码放到RAM中去执行。但是我不明白为什么会有这种情况出现,FLASH读写的特殊性在芯片的文档里有提到过吗?这算不算是CW的一个BUG呢?
TOP
strongchen 当前离线
版主
论坛元老
fayefayehoo 当前离线
《嵌入式系统--使用HCS12微控制器的设计与应用》
Flash在线编程时提供一下两种方案:
1 将擦除与写入程序放在不包含要擦/写区域的Flash块中,这样进行擦/写操作时,擦/写程序就可以直接在Flash中运行,不需要移到RAM中运行。
2 将擦除与写入程序放在包含要擦/写区域的Flash块中,这样进行擦/写操作时,擦/写程序不能直接在Flash中运行,需要移到RAM中运行。
我的问题是,对于XEP100系列的单片机,是不是在操作FLASH时也必须按以上方案来执行?
但是我是把对FLASH操作的代码放在NON_BANKED块的,而要操作的FLASH地址(0xFA8800)与操作代码并不在同一个FLASH块啊!
这里的块应该是指BLOCK,不是指PAGE,不过不知道哪些PAGE是划分在BLOCK0,哪些是划分在BLOCK1中的,这个数据手册上我还没找到。
对啊,我只在文档上看到过分成4个BLOCK,但是具体怎么划分的就不知道了!
把代码数组改了半天,终于在XEP100上面也能正常编程FLASH了
const U08 P[18] = { 0x18, 0x0B, 0x80, 0x01, 0x06, 0xF6, 0x01, 0x06, 0x87, 0x87, 0xC4, 0x80, 0x8C, 0x00, 0x00, 0x27, 0xF4, 0x3D };
[此贴子已经被作者于2008-10-7 16:28:22编辑过]
ganhuaren 当前离线
注册会员
收益颇多啊,我现在正在写这方面代码
zephanshaka 当前离线
中级会员
jjh_joshua 当前离线
新手上路