N76E003的FLASH容量为18KB,这18KB可分为LDROM(Load ROM)和APROM(Application ROM)。LDROM和APROM共用这18KB的FLASH,可以通过配置CONFIG寄存器来决定程序从LDROM启动还是从APROM启动,以及分配给LDROM的空间大小,如图1和图2所示。
![](https://i-blog.csdnimg.cn/blog_migrate/f4d1f5194300c3e4bdd732a56d3c46be.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c8c80a9888b741d7d8c6f29e201f496c.png)
由于升级功能引入了boot程序,因此最终需要烧录的文件有2个,需要分别烧录到LDROM和APROM中。这显然不符合烧片机批量烧录的要求。因此需要整合成一个离线包。开发中发现LDROM和APROM的地址实际上是连续的。LDROM的起始地址紧跟在APROM的结束地址。以LDROM为1KB、APROM为17KB举例 ,其FLASH地址分布情况如下所示。
分区 | 地址范围 | 大小 |
APROM | 0x000 – 0x43FF | 17KB |
LDROM | 0x4400 – 0x47FF | 1KB |
使用hex合并等工具将两个文件按上表的地址合并在一起即可生成离线包。
有些烧录器无法烧录CONFIG配置,只能烧录成18KB APROM + 0KB LDROM的配置因此需要在软件上稍作修改,在程序运行后检测CONFIG1寄存器的配置。CONFIG1寄存器决定了LDROM和APROM的FLASH分配情况。如果检测CONFIG1配置是18KB APROM + 0KB LDROM,那么将CONFIG1寄存器改成17KB APROM + 1KB LDROM。修改CONFIG寄存器后会一直生效,所以修改CONFIG1的操作只会执行一次。修改完成后,APROM和LDROM的FLASH分布就会变成上表所示的情况。