没有合适的资源?快使用搜索试试~ 我知道了~
ADSArm2440启动代码分析..pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 97 浏览量
2023-09-06
22:03:13
上传
评论
收藏 351KB PDF 举报
温馨提示
试读
21页
ADSArm2440启动代码分析..pdf
资源推荐
资源详情
资源评论
ADS Arm 2440
启动代码分析
;NAME: 2440INIT.S ;DESC: C start up codes ;Con figure memory, ISR
‘stacks ;I nitialize C-variables ;HISTORY: ;2002.02.25:kwtark: ver
0.0 ;2002.03.20: purnn amu: Add some fu nctio ns for test ing STOP ,Slee
p mode ;
2003.03.14:Do nGo: Modified for 2440.
;import head file
GET op ti on .i nc
GET memcfg.i nc
GET 2440addr. inc
BIT_SELFREFRESH EQU (1<<22 ;
配置模式
;P re-defi ned con sta nts
USERMODE EQU 0x10
FIQMODE EQU 0x11
IRQMODE EQU 0x12 ;
系统监控模式
SVCMODE EQU 0x13
ABORTMODE EQU 0x17
UNDEFMODE EQU 0x1b ;
模式屏蔽寄存器
MODEMASK EQU 0x1f
NOINT EQU 0xc0 ;
堆栈的定义大小及地址
;The locati on of stacks
Userstack EQU (_STACK_BASEADDRESS-0x3800 ;0x33ff4800 -
SVCStack EQU (_STACK_BASEADDRESS-0x2800 ;0x33ff5800 -
Un defStack EQU (_STACK_BASEADDRESS-0x2400 ;0x33ff5c00 -
AbortStack EQU (_STACK_BASEADDRESS-0x2000 ;0x33ff6000 -
IRQStack EQU (_STACK_BASEADDRESS-0x1000 ;0x33ff7000 -
FIQStack EQU (_STACK_BASEADDRESS-0x0 ;0x33ff8000 - ;
检测是工作在
thumb
状态下还是
arm
状态下
;Check if tasm.exe(armasm -
16 ...@ADS 1.0 is used.
GBLLTHUMBCODE
[{CONFIG} = 16
THUMBCODE SETL {TRUE}
CODE32
THUMBCODE SETL {FALSE}
MACRO
MOV_P C_LR
[THUMBCODE
bx lr
mov p c,lr
MEND
MACRO
MOVEQ PC LR
[THUMBCODE
bxeq Ir
moveq p c,lr
MEND
MACRO
$Han dlerLabel HANDLER $Ha ndleLabel;
宏定义的调用方式
$Ha ndlerLabel
sub sp,sp,#4 ;decreme nt sp (to store jump address
stmfd sp !,{r0} ;P USH the work register to stack(lr does't push because it retur n to
orig inal address
ldr r0,=$Ha ndleLabel;load the address of Han dleXXX to r0
ldr r0,[r0] ;load the conten ts(service routi ne start address of Han dleXXX
str r0,[s p,#4] ;store the con te nts(ISR of Han dleXXX to stack ldmfd sp !,{r0,
pc} ;POP the work register and p c(ju mp to ISR
MEND ;
宏定义的结束
外部定义的函数和变量的
声明
IMP ORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data IMP ORT
|lmage$$RW$$Base| ; Base of RAM to i nitialise
IMP ORT |lmage$$ZI$$Base| ; Base and limit of area
IMP ORT |lmage$$ZI$$Limit| ; to zero i nitialise
IMP ORT Main
;
代码段的入口
AREA In it,CODE,READONLY
ENTRY
;1The code, which converts to Big-e ndia n, should be in little en dia n code. ;2The
followi ng little en dia n code will be comp iled in Big-E ndia n mode. ; The code byte
order should be cha nged as the memory bus width.
;3The p seudo in structi on ,DCD can't be used here because the lin ker gen erates
error.
ASSERT :DEF:ENDIAN_CHANGE
[ENDIAN_CHANGE
ASSERT :DEF:ENTRY_BUS_WIDTH
[ENTRY_BUS_WIDTH=32
b Cha ngeBigE ndia n ;DCD 0xea000007
[ENTRY_BUS_WIDTH=16
andeq r14,r7,r0,lsl #20 ;DCD 0x0007ea00
剩余20页未读,继续阅读
资源评论
hhappy0123456789
- 粉丝: 58
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功