Board logo

标题: [求助]如何使用CW填充HC08的FLASH空白区 [打印本页]

作者: l3hh    时间: 2005-12-21 11:55     标题: [求助]如何使用CW填充HC08的FLASH空白区

最近看了FS的一篇工程快报EB398/D,是关于防止代码跑飞的,其中提到应该将未使用的FLASH区全部填充安全代码,如SWI指令($83)+NOP指令($9D),因为默认的$00(BRSET0)和$FF(STX)都不能用于自动改回PC指针。但我在CW3.1中试了半天也没找到填充方法,请知道的高手指点一下。

另外文中还提到闪存块保护的问题,因为闪存块保护寄存器FLBPR默认的擦除值($FF)会取消所有保护,对大多数HC08单片机来说,FLBPR本身也是闪存寄存器,所以如何修改这一特定地址的闪存也请高手指点指点,谢谢!


作者: tianlan_316    时间: 2005-12-21 13:29     标题: 我是这样填的

我是这样填充的,然后在软件中断程序中处理相应的错误。至于填充多少字节,可以在仿真模式中看到自己填充的区域。

TABLE_SWI: FCB $83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83

           FCB $83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83

           FCB $83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83

           FCB $83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83,$83

 

[此贴子已经被作者于2005-12-21 13:29:44编辑过]


作者: strongchen    时间: 2005-12-22 11:55

如果FLBPR中已经写入了一个非$FF的数值,那么要擦除或改写其内容,或被保护区的内容,只有一个方法,就是IRQ脚上必须加VTST高压,芯片进入监控模式,然后通过对FLASH进行擦除或编程操作才可以做到。这样,如果程序本身企图对FLBPR进行擦除和改写的操作,是无法实现的。
作者: l3hh    时间: 2005-12-23 13:26

谢谢tianlan_316和版主的指点,看来是只能在常数段中手工填了,让CW去分配地址,难道就没有什么更方便的办法吗?

另外又想起一个问题,假如我知道MCU中的Security bytes,有没有什么工具能读出FLASH中已有的程序代码和常数表?请指教!
作者: strongchen    时间: 2005-12-23 15:17

如果知道加密位,就可以进入监控模式,也就可以看到每个地址中的数据。但好像并不能直接将FLASH中的数据反汇编成程序。
作者: l3hh    时间: 2005-12-23 17:52

老大,我的意思是能否读入FLASH中已有的内容,就跟以前常用烧写器Load芯片中的程序一样。至于反汇编可以用C:\Program Files\Metrowerks\CW08 V3.1\prog\decoder.exe,可惜SE版的license不支持
作者: strongchen    时间: 2005-12-27 12:28

当然可以读出FLASH中的内容。




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