打印

请教张工关于FLASH模拟EE

[复制链接]
1693|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yewuyi|  楼主 | 2008-5-12 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在MOTO的芯片中用FLASH模拟EE时,都需要做一步工作就是把代码拷贝到RAM中运行,把代码拷贝到RAM中运行的原因是否是因为MOTO的芯片RAM和ROM是统一寻址的,也就是说CPU可以把RAM当做ROM那样寻址执行代码,把代码拷贝到RAM中运行等同于把机器码放到RAM中,然后把PC值强制转到RAM中代码的起始地址,但在另外一些厂家的芯片中,例如MCP的一些芯片,因为CPU的PC指针不能在RAM中寻址,所以,用FLASH模拟EE时把代码拷贝到RAM中运行是不能捣鼓的?!

相关帖子

沙发
张明峰| | 2008-5-12 13:16 | 只看该作者

FLASH模拟EE

用FSL单片机的程序Flash模拟实现数据EE,需要把关键一小段代码拷贝到RAM中运行的根本原因是由于在进行Flash擦除或编程时,芯片内部Flash电路会被加上编程高压,此时读Flash内容(程序执行)会不可靠,取到无效或非法指令,表现出的现象就是程序复位.
FSL单片机为数据(RAM)和程序(Flash)统一编址,代码指令可以在Flash中运行,也可以在RAM中运行.同样,读RAM和Flash时寻址方式没有任何区别.为了解决Flash编程时无法读Flash内容的问题,我们就必须把原本在Flash中的一小段关键代码(启动编程并查询结束)先拷贝到RAM,然后程序跳到RAM中运行.这不是为了好玩.
其他的单片机实现Flash编程的方式可能不同,确实有些是无法将代码拷贝到RAM中运行.据我所了解的几款单片机,在Flash处于编程状态时,都是无法继续从Flash中取指令运行的.对于你我熟悉的MCHP的单片机,一旦启动Flash编程,CPU就暂停若干个指令周期.

修改原因:错别字

使用特权

评论回复
板凳
yewuyi|  楼主 | 2008-5-12 13:31 | 只看该作者

TKS

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1416

主题

20007

帖子

232

粉丝