"); //-->
非易失性快闪FLASH及编程
ADuC845提供给用户大小为64KB的程序存储空间用于存储用户自定义程序。该空间上端的2KB区域为厂家出厂配置的的永久性嵌入式固件,支持在线串行下载,串行调试与非侵入式仿真。该固件还包括上电配置例行程序,以及下载工厂校准系数,包含各种已校准的外设,例如,如ADC,温度传感器,电流源,带隙和参考。该部分区域对用户不可见,不会因不规范的烧写工作致使固件修改失效。
在开机默认工作模式下,62KB的程序存储空间是一整块用户可见区域,可以用于串口下载与并行编程。一整块可以编程的用户程序存储空间意味着该区域没有被保护起来,用户程序代码执行时,用户只能读该区域,而不能写(写操作导致用户程序非常的不稳健)。这么大的内部FLASH只能读不能写,无疑限制了用户的开发应用,我们希望程序执行的时候也能对FLASH进行读写操作。ADuC845提供了这种功能,这种功能在ULOAD模式下实现。
FLASH程序存储器还可以在运行时通过进入ULOAD模式编程。在ULOAD模式下,低56KB的程序存储器可擦除和由用户重新编程,可以遵循用户定义的下载协议更新用户代码,实现用户程序的升级,此时FLASH程序存储空间映射如图1所示。
图1 ULOAD模式下FLASH空间映射
本文主要介绍串口下载模式与用户指定协议下的代码更新。
在谈在线更新FLASH之前,先来看看FLASH的保护机制,FLASH为了防止用户程序执行过程中误操作设定了三级保护机制,即锁定模式、安全模式与串口关闭模式。
锁定模式:该模式锁定代码存储器,禁用程序存储器的并行编程。但是,在并行模式下的存储器读出和通过从外部存储器MOVE命令的存储器读出仍允许。这种模式通过串行下载或并行编程模式下写入擦除代码和数据的命令关闭。
安全模式:该模式锁定代码存储器,禁用程序存储器的并行编程。外部或编程器读也被禁用,安全模式通过串行下载或并行编程模式下写入擦除代码和数据的命令关闭。
串口关闭模式:该模式生效时,禁止串口下载功能。当正常的串口下载事件生效,处理器只把串口下载事件当作一个普通的串口中断,而不进入串口下载模式。这时候串口下载是失效的,只能通过并行编程相应命令字来失效串口保护模式。
并行编程:整个单片机可以作为一片外部程序存储器来编程,它的连接方式见图2,其中,P0,P2口作为地址线,P3口作为数据线,P1口作为时序与控制线。控制命令见图3。
图2 单片机内部FALSH作为存储芯片并行编程
图3 单片机内部FALSH并行编程命令字
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。