新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM編程:ARM初始化,堆棧地址是怎樣計(jì)算的

ARM編程:ARM初始化,堆棧地址是怎樣計(jì)算的

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

USR_STACK_LEGTHEQU64
SVC_STACK_LEGTHEQU0
FIQ_STACK_LEGTHEQU16
IRQ_STACK_LEGTHEQU64
ABT_STACK_LEGTHEQU0
UND_STACK_LEGTHEQU0
;名稱:InitStack
;功能:堆棧初始化,即初始化各模式下的堆棧指針
;入口參數(shù):無(wú)
;出口參數(shù):無(wú)
;說(shuō)明:在特權(quán)模式下調(diào)用此子程序,比如復(fù)位后的管理模式
InitStack
MOVR0,LR;R0<=LR,因?yàn)楦鞣N模式下R0是相同


;設(shè)置管理模式堆棧
MSRCPSR_c,#0xd3
LDRSP,StackSvc
;設(shè)置中斷模式堆棧
MSRCPSR_c,#0xd2
LDRSP,StackIrq
;設(shè)置快速中斷模式堆棧
MSRCPSR_c,#0xd1
LDRSP,StackFiq
;設(shè)置中止模式堆棧
MSRCPSR_c,#0xd7
LDRSP,StackAbt
;設(shè)置未定義模式堆棧
MSRCPSR_c,#0xdb
LDRSP,StackUnd
;設(shè)置系統(tǒng)模式堆棧
MSRCPSR_c,#0xdf
LDRSP,StackUsr

MOVPC,R0

StackUsrDCDUsrStackSpace+(USR_STACK_LEGTH-1)*4
StackSvcDCDSvcStackSpace+(SVC_STACK_LEGTH-1)*4
StackIrqDCDIrqStackSpace+(IRQ_STACK_LEGTH-1)*4
StackFiqDCDFiqStackSpace+(FIQ_STACK_LEGTH-1)*4
StackAbtDCDAbtStackSpace+(ABT_STACK_LEGTH-1)*4
StackUndDCDUndtStackSpace+(UND_STACK_LEGTH-1)*4


;分配堆??臻g
AREAMyStacks,DATA,NOINIT,ALIGN=2
UsrStackSpaceSPACEUSR_STACK_LEGTH*4;用戶(系統(tǒng))模式堆棧空間
SvcStackSpaceSPACESVC_STACK_LEGTH*4;管理模式堆??臻g
IrqStackSpaceSPACEIRQ_STACK_LEGTH*4;中斷模式堆棧空間
FiqStackSpaceSPACEFIQ_STACK_LEGTH*4;快速中斷模式堆??臻g
AbtStackSpaceSPACEABT_STACK_LEGTH*4;中止義模式堆棧空間
UndtStackSpaceSPACEUND_STACK_LEGTH*4;未定義模式堆棧



經(jīng)過(guò)ADS1.2仿真;發(fā)現(xiàn)地址變化如下
svc0x400030fc
irq0x400031fc
fiq0x4000323c
abort0x4000323c
undef0x4000323c
sys0x400030fc

svcfirirqabortundefsys的地址是怎樣計(jì)算出來(lái)的?

本文引用地址:http://butianyuan.cn/article/201611/322956.htm
  • 關(guān)鍵是MyStacks的起始地址.看看ADS的配置里linker選項(xiàng)里的配置. [xiaogang]2007-4-1611:57:05

    如果沒(méi)有配置.則看AREAMyStacks,DATA,NOINIT,ALIGN=2后面是否有個(gè)
    ^XXXXX..來(lái)定義MyStacks的起始地址
    得到起始地址后,再由SPACE按順序分配內(nèi)存空間

  • 對(duì),RWBase設(shè)置的是0x40003000 [jinjing999666]2007-4-1620:40:08

    我又把RWBase設(shè)置的是0x40005000
    觀察都變成了
    svc0x400050fc
    irq0x400051fc
    fiq0x4000523c
    undef0x4000523c
    sys0x400050fc



關(guān)鍵詞: ARM編程ARM初始化堆棧地

評(píng)論


技術(shù)專區(qū)

關(guān)閉