ARM7——LPC2xxx小總結

 

1.       7種工作模式:
fiq/irq/abt/und/sys/usr/svc。通過"MSR cpsr_c,#0xdx"切換。上電時進入svc模式。svcusr的區別是:svc可以通過"MSR cpsr_c,#0xdx"自由切換到其它任何模式,但是usr不可以。各模式下有自己的堆棧。要在程序啓動後依次進入各個模式分別設置自己的堆棧,最後進入usr模式<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2.    Prefetch AbortData Abort模式:
Prefetch Abort
通常會發生在自修改指令之後。而Data Abort發生於向無效內存中取操作數時,通常是數據指針越過邊界了。如果在scatter文件中不指定邊界,若編譯時內存分配超過了實際物理內存,一定會有Data AbortPrefetch Abort發生 Data Abort這個異常會經常出現,要注意。

3.    存儲器映射:
0<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />-1G(0x0000,0000 - 0x3fff,ffff):
片內Flash.
1-2G(0x4000,0000 - 0x7fff,ffff):
片內
RAM.
2-3.5G(0x8000,0000 - 0xbfff,ffff - 0xdfff,ffff):
片外存儲器。

3.5G - 3.75G(0xe000,0000 - 0xefff,ffff): VPB
外設。
3.75G - 4G(0xf000,0000 - 0xffff,ffff): AHB
外設。
雖然ARM7的尋址空間爲4G,但是LPC2200系列只提供A0~A23總共16M的地址。片選信號CS0 - CS3A24A25的譯碼輸出,將片外存儲區0x8000,0000 - 0x83ff,ffff劃分爲bank0 - bank3,16M*4=64M. 4bank可以被分別配置爲8/16/32位總線寬度。復位時,bank0的總線寬度由Boot1:0引腳決定, bank132位,bank216位,bank38位。

4.    Boot Block
LPC2114/2214
BootBlock
固化在最高的Flash塊中,運行時被映射到0x7FFF,E000 - 0x7FFFF,FFFF的區域。而LPC2210沒有片內Flash,但它有8K片內ROM存儲了BootBlock,也被映射到0x7FFF,E000處。BootBlock是上電以後芯片最早自動運行的程序,被固化在LPC22XX中,相當於LPC22xx自身的bootloader

5.    分散加載描述文件.scf的設置
Metrowerks Code Warrior V1.2
"Edit->Debug In ExRAM Settings",然後在"Linker->ARM Linker"Output頁中,選中Scatter選項。在Scatter的編輯框中選擇寫好的.scf文件。(Scatter-Loading description file).
簡單應用時可以不寫.scf文件。而在"Output"頁中選擇"Simple".然後填寫"RO Base""RW Base"的起始地址。在"Lay Out"頁中,填寫Object/Symble: Startup.o, Section: Start.編寫啓動文件:Startup.s."Option"頁裏的"Image Entry Point"填入起始地址。

Scatter文件中最好每一個Region都加一個Maximum參數,這樣當編譯時如果實際使用的空間大於Maximum Size,會有Error:16220E: Excution region xxx size (xxx bytes) exceeds limit (xx bytes)。如果地址有重複,會有Error: 16221E: Excution region xxx overlaps with excution region xxx。前一個Region的首地址 + Maximum > 後一個Region的首地址時不一定有Error。只有當一分配的內存出現覆蓋時纔會有Error
mem_c.scf
,是使程序在FLASH運行
mem_a.scf
,使程序在FLASH運行,並且加密。
mem_b.scf
,使程序在RAM中運行

6.    LPC2106/2105/2104 ARM7TDMI-S 配置爲小端(little-endian)字節順序。

7.    LPC2131基於ARM7TDMI-S核,採用馮.諾依曼結構,數據和指令混合編址,只有加載,存儲和交換指令可以訪問存儲器中的數據。

發佈了19 篇原創文章 · 獲贊 6 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章