LPC2478 是NXP公司推出的一款基于APR7TDMI-S的工控型MCU,内置RAM与flash,同时提供外部扩展flash和ram接口,拥有LCD控制器,其内存布局如下所示
其中Flash高达512KB,内置RAM96K,但是这96K主要分为三块,用户可用RAM为64K,剩下32K分为两块,一块给以太网当做ram一块当做USB ram,在不启用USB和以太网的情况下,用户可以使用者32K另作他用
但是,LPC2478或者说LPC的ARM芯片有一个比较有意思的架构叫做BOOTROM,看下图:
首先,芯片的保留空间内部会有一个bootrom空间,bootrom空间和flash空间之间有一定的联系,联系见下图
也就是说,2478在复位的时候,MEMMAP的默认复位值是0x00,此时这个0x00地址其实并不是物理地址的0x00,而是相当于一个被映射的BOOTROM区间,这样,bootloader开始执行的同时,中断也可以响应,中断向量在bootrom的底部也就相当于映射到了0x00000000位置
Bootloader执行完成之后,bootload会将MEMMAP写01,这时候,之前的映射消失,0x00000000重新回到了用户空间,系统在执行复位向量指定的复位函数,从而启动系统
Bootloader的运行检测了一个IO口的电平,如果该电平为低,则进入等待bootload模式,否则很快就会结束bootloader,进入正常的flash模式