新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM開發總結的小知識

        ARM開發總結的小知識

        作者: 時間:2016-11-25 來源:網絡 收藏
        ARM開發總結小知識
        字節 8位
        半字 16位
        32位

        Code, RO-data
        RW-data,ZI-data

        Code為程序代碼部分
        RO-data 表示 程序定義的常量 const temp;
        RW-data 表示 已初始化的全局變量
        ZI-data 表示 未初始化的全局變量

        Program Size: Code="18248" RO-data=320 RW-data=260 ZI-data=3952

        Code, RO-data,RW-data ..............flash
        RW-data, ZIdata...................RAM

        初始化時RW-data從flash拷貝到RAM

        生成的map文件位于list文件夾下 (KEIL)

        Total ROSize (Code + RO Data)18568 (18.13kB)
        Total RWSize (RW Data + ZI Data)4212 ( 4.11kB)
        Total ROM Size (Code + RO Data + RW Data)18828 (18.39kB)

        ARM指令的長度剛好是1個字(分配為占用4個字節),Thumb指令的長度剛好是半字(占用2個字節)

        R0-R15 (R15-PC,R14-LR,R13-SP) 32位

        每個異常模式還帶有一個程序狀態保存寄存器 (SPSR),它用于保存在異常事件發生之前的CPSR

        LDMIA R1!,{R2-R7, R12} ;將R1單兀中的數據讀出到R2-R7,R12,R1自動加1
        STMIA RO!,{R3-R6,R10};將R3-R6,R10中的數據保存到RO指向的地址,RO自動加1

        在數據傳送之前,將偏移量加到Rn中,其結果作為傳送數據的存儲地址.若使用后綴“!”,則結果寫回到Rn中,且Rn值不允許為R15.指令舉例如下:
        LDR Rd, [Rn, #Ox4]!

        LDMFDSP!,{R0-R3,PC}^ ;中斷返回
        “^”符號表示這是一條特殊形式的指令。這條指令在從存儲器中裝載PC的同時(PC是最后恢復的),CPSR也得到恢復

        大端格式(Big-endian)
        小端格式(Little-endian)

        數據0x12345678存儲格式
        大端格式
        低地址<----0x12|0x34|0x56|0x78---->高地址
        小端格式
        低地址<----0x78|0x56|0x34|0x12---->高地址

        ARM微處理器支持7種運行模式,分別為: CPSR M[4:0]

        用戶模式(usr):ARM處理器正常的程序執行狀態。 10000
        快速中斷模式(fiq):用于高速數據傳輸或通道處理。 10001
        外部中斷模式(irq):用于通用的中斷處理。 10010
        管理模式(svc):操作系統使用的保護模式。10011
        數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,可用于虛擬存儲及存儲保護。10111
        系統模式(sys):運行具有特權的操作系統任務。 11111
        定義指令中止模式(und):當未定義的指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真。 11011

        ARM正常工作一般工作在用戶模式和系統模式,復位的時候進入管理模式

        對于ARM指令集來說,PC指向當前指令的下兩條指令的地址

        注意pc,在調試的時候顯示的是當前指令地址,而用mov lr,pc的時候lr保存的是此指令向后數兩條指令的地址

        假設反匯編代碼:0x000001 :mov lr pc

        (此時查看PC寄存器的值是0x000001,但實際PC值是0x000003, lr里面保存的就是0x000003)



        fields 指定傳送的區域(psrCPSR或SPSR)
        c 控制域屏蔽字節(psr[7..0])
        x 擴展域屏蔽字節(psr[15..8])
        s 狀態域屏蔽字節(psr[23..16])
        f 標志域屏蔽字節(psr[31..24])

        例如:MSR cpsr_c, #0xD3 ;CPSR[7...0] = 0xD3


        關鍵詞: ARM開發總結小知

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 彝良县| 易门县| 青岛市| 临武县| 肥东县| 卓尼县| 和顺县| 卫辉市| 龙山县| 澜沧| 翁牛特旗| 丰都县| 合川市| 静乐县| 巴彦县| 临朐县| 凤冈县| 保亭| 双辽市| 永泰县| 潞城市| 顺平县| 岳普湖县| 沙田区| 普宁市| 城口县| 祁门县| 镇沅| 祁东县| 博客| 同德县| 蚌埠市| 哈巴河县| 霍山县| 尼玛县| 松原市| 巴南区| 东海县| 措美县| 邯郸市| 栖霞市|