LPC2478 是NXP公司推出的一款基于APR7TDMI-S的工控型MCU,內(nèi)置RAM與flash,同時提供外部擴展flash和ram接口,擁有LCD控制器,其內(nèi)存布局如下所示
其中Flash高達512KB,內(nèi)置RAM96K,但是這96K主要分為三塊,用戶可用RAM為64K,剩下32K分為兩塊,一塊給以太網(wǎng)當(dāng)做ram一塊當(dāng)做USB ram,在不啟用USB和以太網(wǎng)的情況下,用戶可以使用者32K另作他用
但是,LPC2478或者說LPC的ARM芯片有一個比較有意思的架構(gòu)叫做BOOTROM,看下圖:
首先,芯片的保留空間內(nèi)部會有一個bootrom空間,bootrom空間和flash空間之間有一定的聯(lián)系,聯(lián)系見下圖
也就是說,2478在復(fù)位的時候,MEMMAP的默認復(fù)位值是0x00,此時這個0x00地址其實并不是物理地址的0x00,而是相當(dāng)于一個被映射的BOOTROM區(qū)間,這樣,bootloader開始執(zhí)行的同時,中斷也可以響應(yīng),中斷向量在bootrom的底部也就相當(dāng)于映射到了0x00000000位置
Bootloader執(zhí)行完成之后,bootload會將MEMMAP寫01,這時候,之前的映射消失,0x00000000重新回到了用戶空間,系統(tǒng)在執(zhí)行復(fù)位向量指定的復(fù)位函數(shù),從而啟動系統(tǒng)
Bootloader的運行檢測了一個IO口的電平,如果該電平為低,則進入等待bootload模式,否則很快就會結(jié)束bootloader,進入正常的flash模式