;** unction name 函數名稱: InitStack
;** Descriptions 功能描述: 初始化堆棧
;** Created by 作 者: 吳友強
;** Created Date 日 期: 2009/07/20 2009年7月20日
;*****************************************************************************************/
;初始化堆棧,此時禁止IRQ和FIQ中斷,處于ARM狀態
InitStack
MOV R0, LR
;Build the SVC stack
;設置管理模式堆棧
MSR CPSR_c, #0xd3
LDR SP, StackSvc
;Build the IRQ stack
;設置中斷模式堆棧
MSR CPSR_c, #0xd2
LDR SP, StackIrq
;Build the FIQ stack
;設置快速中斷模式堆棧
MSR CPSR_c, #0xd1
LDR SP, StackFiq
;Build the DATAABORT stack
;設置中止模式堆棧
MSR CPSR_c, #0xd7
LDR SP, StackAbt
;Build the UDF stack
;設置未定義模式堆棧
MSR CPSR_c, #0xdb
LDR SP, StackUnd
;Build the SYS stack
;設置系統模式堆棧
MSR CPSR_c, #0xdf ;切換到系統模式,之后將在系統模式下運行
LDR SP, =StackUsr ;除非進行模式切換
MOV PC, R0
;/*****************************************************************************************
;** unction name 函數名稱: ResetInit
;** Descriptions 功能描述: 復位入口
;** Created by 作 者: 吳友強
;** Created Date 日 期: 2009/07/20 2009年7月20日
;**----------------------------------------------------------------------------------------
;*****************************************************************************************/
ResetInit
BL InitStack ;初始化堆棧
BL TargetResetInit ;目標板基本初始化
B __main ;跳轉到c語言入口
;/*****************************************************************************************
;** unction name 函數名稱: __user_initial_stackheap
;** Descriptions 功能描述: 庫函數初始化堆和棧,不能刪除
;** Created by 作 者: 吳友強
;** Created Date 日 期: 2009/07/20 2009年7月20日
;*****************************************************************************************/
__user_initial_stackheap
LDR r0,=bottom_of_heap
; LDR r1,=StackUsr
MOV pc,lr
StackSvc DCD SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4 ;管理模式堆棧
StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4 ;IRQ模式堆棧
StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4 ;FIQ模式堆棧
StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4 ;中止模式堆棧
StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4;未定義模式堆棧
;/*****************************************************************************************
;** unction name 函數名稱: CrpData
;** Descriptions 功能描述: 芯片加密,代碼保護
;** input parameters 輸 入: None 無
;** Returned value 輸 出 : None 無
;** Used global variables 全局變量: None 無
;** Calling modules 調用模塊: None 無
;**
;** Created by 作 者: 吳友強
;** Created Date 日 期: 2009/07/20 2009年7月20日
;*****************************************************************************************/
IF :DEF: EN_CRP
IF . >= 0x1fc
INFO 1,'/nThe data at 0x000001fc must be 0x87654321./nPlease delete some source before this line.'
ENDIF
CrpData
WHILE . < 0x1fc ;循環用NOP填充,直到0x1FC
NOP
WEND
CrpData1
DCD 0x87654321 ;/* 當此數為0x87654321時,用戶程序被保護 */
ENDIF
;/* 分配堆棧空間 */
AREA MyStacks, DATA, NOINIT, ALIGN=2
SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ; 管理模式堆棧空間
IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ; 中斷模式堆棧空間
FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ; 快速中斷模式堆棧空間
AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ; 中止義模式堆棧空間
UndtStackSpace SPACE UND_STACK_LEGTH * 4 ; 未定義模式堆棧
AREA Heap, DATA, NOINIT ;Heap通過分散加載文件定位
bottom_of_heap SPACE 1
AREA Stacks, DATA, NOINIT ;Stack通過分散加載文件定位
StackUsr
END
2.IRQ.S
NoInt EQU 0x80
USR32Mode EQU 0x10
SVC32Mode EQU 0x13
SYS32Mode EQU 0x1f
IRQ32Mode EQU 0x12
FIQ32Mode EQU 0x11
CODE32
AREA IRQ,CODE,READONLY
MACRO
$IRQ_Label HANDLER $IRQ_Exception_Function
EXPORT $IRQ_Label ; 輸出的標號
IMPORT $IRQ_Exception_Function ; 引用的外部標號
$IRQ_Label
SUB LR, LR, #4 ; 計算返回地址
STMFD SP!, {R0-R3, R12, LR} ; 保存任務環境
MRS R3, SPSR ; 保存狀態
STMFD SP, {R3,LR}^ ; 保存SPSR和用戶狀態的SP,注意不能回寫
; 如果回寫的是用戶的SP,所以后面要調整SP
NOP
SUB SP, SP, #4*2
MSR CPSR_c, #(NoInt | SYS32Mode) ; 切換到系統模式
BL $IRQ_Exception_Function ; 調用c語言的中斷處理程序
上一篇:Windows CE6.0中斷實驗過程
下一篇:arm linux 移植 mtd-utils 1.x
推薦閱讀最新更新時間:2025-05-09 03:40




設計資源 培訓 開發板 精華推薦
- RT9261B Vfm 升壓 DC/DC 轉換器的典型應用
- LDFMPUR、0.8V/0.5A 超低壓降穩壓器的典型應用
- 2相單極步進電機驅動IC —— TB67S142NG
- 1.44寸TFTLCD擴展
- NCP3066SCBCKGEVB,基于 NCP3066 的 SOIC8 降壓演示評估板,NCP3066是一款單片開關穩壓器,旨在為高亮度 LED 提供恒定電流
- LT3091IFE 并聯線性穩壓器的典型應用
- NCL30386LED1GEVB:NCL30386 演示板
- Spx29300 的典型應用電路,3A 低壓差穩壓器
- LT1634ACS8-1.25 微功率電壓和電流基準的典型應用
- LTC3822,大電流應用在 15A 時提供 1.8V
- 南芯科技推出高集成度多口移動電源解決方案,助力充電寶市場穩健發展
- 英飛凌推出具有超低導通電阻的CoolSiC? MOSFET 750 V G2,適用于汽車和工業功率電子應用
- DigiKey 慶祝 B 站賬號粉絲突破 10 萬,贈送驚喜禮包
- 碳化硅企業 Wolfspeed 啟動破產重組,預計 2025 年三季度末完成司法重整
- 蘋果被曝考慮放棄自研模型 轉而與Anthropic或OpenAI合作
- ?百度文心4.5來襲!英特爾Day0即支持端側部署
- 【廣瀨電機】關于中國發明專利侵權訴訟達成和解的公告
- 英飛凌BMS解決方案推動電動汽車創新
- 地平線的L3判斷與實踐路徑
- 汽車網絡升級攻略:CAN-CAN FD-車載以太網