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

[求助]如何使用CW填充HC08的FLASH空白区

[求助]如何使用CW填充HC08的FLASH空白区

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

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

我是这样填的

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

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编辑过]

如果FLBPR中已经写入了一个非$FF的数值,那么要擦除或改写其内容,或被保护区的内容,只有一个方法,就是IRQ脚上必须加VTST高压,芯片进入监控模式,然后通过对FLASH进行擦除或编程操作才可以做到。这样,如果程序本身企图对FLBPR进行擦除和改写的操作,是无法实现的。
海纳百川  有容乃大
谢谢tianlan_316和版主的指点,看来是只能在常数段中手工填了,让CW去分配地址,难道就没有什么更方便的办法吗?

另外又想起一个问题,假如我知道MCU中的Security bytes,有没有什么工具能读出FLASH中已有的程序代码和常数表?请指教!
如果知道加密位,就可以进入监控模式,也就可以看到每个地址中的数据。但好像并不能直接将FLASH中的数据反汇编成程序。
海纳百川  有容乃大
老大,我的意思是能否读入FLASH中已有的内容,就跟以前常用烧写器Load芯片中的程序一样。至于反汇编可以用C:\Program Files\Metrowerks\CW08 V3.1\prog\decoder.exe,可惜SE版的license不支持
当然可以读出FLASH中的内容。
海纳百川  有容乃大
返回列表