2022年EasyARM開發(fā)板學(xué)習(xí)筆記:?jiǎn)?dòng)代碼分析_第1頁(yè)
2022年EasyARM開發(fā)板學(xué)習(xí)筆記:?jiǎn)?dòng)代碼分析_第2頁(yè)
2022年EasyARM開發(fā)板學(xué)習(xí)筆記:?jiǎn)?dòng)代碼分析_第3頁(yè)
2022年EasyARM開發(fā)板學(xué)習(xí)筆記:?jiǎn)?dòng)代碼分析_第4頁(yè)
2022年EasyARM開發(fā)板學(xué)習(xí)筆記:?jiǎn)?dòng)代碼分析_第5頁(yè)
全文預(yù)覽已結(jié)束

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、學(xué)習(xí) - 好資料 EasyARM2200 開發(fā)板學(xué)習(xí)筆記:?jiǎn)?dòng)代碼分析 olyaim 發(fā)表于 2022-7-17 10:49 嵌入式系統(tǒng) 返回版面 ;定義堆棧的大小 FIQ_STACK_LEGTH EQU 0; 每層嵌套需要 9 個(gè)字堆棧,答應(yīng) 8 層嵌套 IRQ_STACK_LEGTH 9*8 EQU ABT_STACK_LEGTH EQU 0UND_STACK_LEGTH 0EQU ;處理器模式常量定義 NoInt EQU 0 x80 ; 禁止 IRQ 中斷 USR32Mode EQU 0 x10 ; 用戶模式 SVC32Mode EQU 0 x13 ; 治理模式 SYS32Mode EQ

2、U 0 x1f ; 系統(tǒng)模式 IRQ32Mode EQU 0 x12 ; 中斷模式 FIQ32Mode EQU 0 x11 ; 快速中斷模式 PINSEL2 EQU 0 xE002C014BCFG0 EQU 0 xFFE00000BCFG1 EQU 0 xFFE00004BCFG2 EQU 0 xFFE00008 BCFG3 EQU 0 xFFE0000C ;引入的外部標(biāo)號(hào)在這聲明 IMPORT FIQ_Exception ; 快速中斷反常處理程序 IMPORT main;C 語(yǔ)言主程序入口 IMPORT TargetResetInit; 目標(biāo)板基本初始化 IMPORT StackUsr; 用

3、戶模式棧 bottom_of_heap ; 用戶模式堆 IMPORT IMPORT SoftwareInterrupt ; 軟件中斷處理程序 ;給外部使用的標(biāo)號(hào)在這聲明 EXPORT EXPORT EXPORT Reset rt_div0 user_initial_stackheap CODE32 AREA vectors,CODE,READONLY 更多精品文檔 第 1 頁(yè),共 5 頁(yè)學(xué)習(xí) - 好資料 ENTRY ;中斷向量表 Reset LDR PC, ResetAddr ; 復(fù)位入口 ,程序在系統(tǒng)中執(zhí)行的第一條指令 LDR PC, UndefinedAddr ; 未定義指令反常入口地址

4、LDR PC, SWI_Addr ; 軟件中斷入口地址 LDR PC, PrefetchAddr ; 取指令中止反常入口地址 LDR PC, DataAbortAddr ; 取數(shù)據(jù)中止反常入口地址 DCD 0 xb9205f80 ; 保留向量 ,值是其它中斷向量累加和的補(bǔ)碼 LDR PC, PC, #-0 xff0 ; 中斷請(qǐng)求 IRQ 入口地址 LDR PC, FIQ_Addr ; 快速中斷請(qǐng)求 FIQ 入口地址 ResetAddr DCD ResetInitUndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterruptPrefetchA

5、ddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler ;未定義指令 Undefined B Undefined ; 發(fā)生未定義指令反常時(shí)執(zhí)行死循環(huán) ;取指令中止 PrefetchAbort B PrefetchAbort ; 發(fā)生取指令中止反常時(shí)執(zhí)行死循環(huán) ;取數(shù)據(jù)中止 DataAbort B DataAbort ; 發(fā)生取數(shù)據(jù)中止反常時(shí)執(zhí)行死循環(huán) ;快速中斷 FIQ_Handler STMFD SP., R0-R3, LR ; 現(xiàn)場(chǎng)愛(ài)惜,將 R0-

6、R3, LR 入棧 BL FIQ_Exception ; 調(diào)用快速中斷反常處理程序 LDMFD SP., R0-R3, LR ; 反常中斷返回 SUBS PC, LR, #4 ;PC 指向中斷前沒(méi)有被執(zhí)行的指令 更多精品文檔 第 2 頁(yè),共 5 頁(yè)學(xué)習(xí) - 好資料 InitStack ;初始化堆棧 MOV R0, LR ;設(shè)置中斷模式堆棧 MSR CPSR_c, #0 xd2 ;IRQ 和 FIQ 禁止 , 中斷模式 LDR SP, StackIrq ; 設(shè)置中斷模式堆棧指針 ,指向 StackIrq ;設(shè)置快速中斷模式堆棧 MSR CPSR_c, #0 xd1 ;IRQ 和 FIQ 禁止 ,

7、 快速中斷模式 LDR SP, StackFiq ; 設(shè)置快速中斷模式堆棧指針 ,指向 StackFiq ;設(shè)置中止模式堆棧 MSR CPSR_c, #0 xd7 ;IRQ 和 FIQ 禁止 , 中止模式 LDR SP, StackAbt ; 設(shè)置中止模式堆棧指針 ,指向 StackAbt ;設(shè)置未定義模式堆棧 MSR CPSR_c, #0 xdb ;IRQ 和 FIQ 禁止 , 未定義模式 LDR SP, StackUnd ; 設(shè)置未定義模式堆棧指針 ,指向 StackUnd ;設(shè)置系統(tǒng)模式堆棧 MSR CPSR_c, #0 xdf ;IRQ 和 FIQ 禁止 , 系統(tǒng)模式 LDR SP,

8、=StackUsr ; 設(shè)置系統(tǒng)模式堆棧指針 ,指向 StackUsr MOV PC, R0 ; 返回 ResetInit ;復(fù)位入口 ;初始化外部總線把握器,依據(jù)目標(biāo)板準(zhǔn)備配置 LDR R0, =PINSEL2 ; 將 PINSEL2 的地址賦給 RO IF :DEF: EN_CRP ; 判定是否有預(yù)定義 EN_CRP 宏 LDR R1, =0 x0f814910 ;PINSEL2.2 0, 禁止 JTAG 調(diào)試 ELSE LDRR1, =0 x0f814914 ;PINSEL2.2 1, 使能 JTAG 調(diào)試 ENDIF STR R1, R0 ; 初始化儲(chǔ)備器組 0 的配置寄存器 LDR

9、R0, =BCFG0 LDRR1, =0 x1000ffef ; 初始化儲(chǔ)備器組 1 的配置寄存器 STR R1, R0 LDR R0, =BCFG1 更多精品文檔 第 3 頁(yè),共 5 頁(yè)學(xué)習(xí) - 好資料 LDR R1, =0 x1000ffef STR R1, R0 ; LDR R0, =BCFG2 ; 初始化儲(chǔ)備器組 2 的配置寄存器 ; LDRR1, =0 x2000ffef ; STR R1, R0 ; LDRR0, =BCFG3 ; 初始化儲(chǔ)備器組 3 的配置寄存器 ; LDR R1, =0 x2000ffef ; STR R1, R0 BL InitStack ; 跳轉(zhuǎn)到初始化堆棧

10、代碼段 BL TargetResetInit ; 跳轉(zhuǎn)到目標(biāo)板基本初始化 B main ; 跳轉(zhuǎn)到 c 語(yǔ)言入口 user_initial_stackheap ; 庫(kù)函數(shù)初始化堆和棧 MOV pc,lr rt_div0 ; 整數(shù)除法除數(shù)為 0 錯(cuò)誤處理函數(shù) B rt_div0 IrqStackSpace + IRQ_STACK_LEGTH - 1* 4 FiqStackSpace + FIQ_STACK_LEGTH - 1* 4 AbtStackSpace + ABT_STACK_LEGTH - 1* 4 UndtStackSpace + UND_STACK_LEGTH - 1* 4 Stac

11、kIrq DCDStackFiq DCDStackAbt DCD StackUnd DCD IF :DEF: EN_CRP IF . = 0 x1fc ; 判定當(dāng)前代碼地址是否已超過(guò) 0 x1FC INFO 1,nThe data at 0 x000001fc must be 0 x87654321. nPlease delete some source before this line.ENDIF CrpData WHILE . 0 x1fc ; 未到 0 x1FC 就填充 NOP 指令 NOP WEND CrpData1 DCD 0 x87654321 ; 在 0 x1FC 處放置 0 x87654321 ,啟動(dòng)加密功能 更多精品文檔 第 4 頁(yè),共 5 頁(yè)學(xué)習(xí) - 好資料 ENDIF ;/* 支配堆??臻g */ AREA MyStacks, DATA, NOINIT, ALIGN=2 IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ; 中斷模式堆棧

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論