音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請(qǐng)那位仁兄賜教

作者:space_12 欄目:ARM技術(shù)
請(qǐng)那位仁兄賜教
以下所說(shuō)的都是在ARM7TDMI處理器下的
1.
1)
AREA   Example,CODE,READONLY ;聲明代碼段Example
       ENTRY                 ;標(biāo)識(shí)程序入口
       CODE32                ;聲明32位ARM指令
………………………………………………………………
2)
       CODE32
AREA   Vector,CODE,READONLY
       ENTRY
………………………………………………………………
問(wèn):為什么“CODE32”的位置不同, 對(duì)整體程序有不同嗎?

2.
在ARM里 工作模式的改變 是否 程序計(jì)數(shù)器PC的值是否 也會(huì)改變

3.
在ARM里 寄存器R0~~R7,R8~R15 和CPSR、SPSR的絕對(duì)地址是多少

4.
PC與lR之間的關(guān)系
1)子程序調(diào)用的時(shí)候,LR保存的值是什么(用PC來(lái)表示)
2)當(dāng)異常發(fā)生的時(shí)候,LR保存的值是什么(用PC來(lái)表示)
說(shuō)明:
     LR存放子程序或者異常返回的地址
     PC 指向被取指的指令,而不是正在執(zhí)行的指令

2樓: >>參與討論
zlgARM
space_12
    (1)只要是在被聲明為32位指令的那段程序前,就沒(méi)有問(wèn)題。CODE32、AREA等偽指令都是彼此不相關(guān),各行其是的。您只需要根據(jù)偽指令自身的功能來(lái)考慮它的位置;
    (2)PC的值只由執(zhí)行的指令的地址決定;因而和處理器模式?jīng)]有直接關(guān)系;
    (3)這些寄存器不占用地址空間,(您看一下ARM地址空間的章節(jié))也就沒(méi)有所謂的絕對(duì)地址之說(shuō)法;
    (4)這個(gè)您可以在書(shū)上找一下“異常的入口和出口”,里面列了表來(lái)詳細(xì)說(shuō)明的。


3樓: >>參與討論
space_12
非常榮幸 周工程師為我解答
我剛剛學(xué)ARM,在看了 周立功 的smartARM2200的開(kāi)發(fā)板以及所帶的一些書(shū)籍后 才感到以上的疑問(wèn)。

能不能請(qǐng)周工給我詳細(xì)的解答
1.
在初時(shí)化堆棧時(shí)候 要保存PC值
如下代碼:
……………………………………………………
InitStack    
        MOV     R0, LR
;Build the SVC stack
;設(shè)置管理模式堆棧
        MSR     CPSR_c, #0xd3
        LDR     SP, StackSvc
;Build the IRQ stack            
;設(shè)置中斷模式堆棧
        MSR     CPSR_c, #0xd2
        LDR     SP, StackIrq
;Build the FIQ stack
;設(shè)置快速中斷模式堆棧
        MSR     CPSR_c, #0xd1
        LDR     SP, StackFiq
;Build the DATAABORT stack
;設(shè)置中止模式堆棧
        MSR     CPSR_c, #0xd7
        LDR     SP, StackAbt
;Build the UDF stack
;設(shè)置未定義模式堆棧
        MSR     CPSR_c, #0xdb
        LDR     SP, StackUnd
;Build the SYS stack
;設(shè)置系統(tǒng)模式堆棧
        MSR     CPSR_c, #0x5f
        LDR     SP, =StackUsr
        MOV     PC, R0
………………………………………………………………
如果不保存返回的PC 會(huì)有什么后果呢
只不過(guò) 在初時(shí)化堆棧時(shí)候 改變了模式嗎
如果對(duì)程序計(jì)數(shù)器PC沒(méi)的話何必用
MOV     R0, LR
MOV     PC, R0

2.
程序如下:
………………………………………………
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr
………………………………………………
問(wèn):
這里的“LDR     PC, [PC, #-0xff0]”
能否用“LDR     PC, [0xfffff030]”
0x00000020-0xff0--->0xfffff030


4樓: >>參與討論
zlgARM
space_12
    1、SmartARM2200配套的《ARM嵌入式系統(tǒng)基礎(chǔ)教程》P48,表3.5的第二行講解了BL對(duì)應(yīng)的入口。BL是調(diào)用子程序,將子程序的地址裝入了PC,PC的值已經(jīng)變化了——所以,為了在子程序結(jié)束后返回調(diào)用處,就必須將LR保存的值再重新載入PC;
  2、不可以。LDR指令沒(méi)有這樣的用法,匯編通不過(guò)。您用ADS試驗(yàn)一下。

5樓: >>參與討論
space_12
還有如下SmartARM220上的問(wèn)題再請(qǐng)周工解答
1.

《ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(二)》里的
第2章 基礎(chǔ)實(shí)驗(yàn) 的 2.7 ARM微控制器工作模式實(shí)驗(yàn) 其中的 6.實(shí)驗(yàn)參考程序 其中有這么一段代碼
………………………………………………
;切換到用戶模式
   MSR  CPSR_c,#0xd0
   MRS  R0,CPSR
;切換到管理模式
   MSR CPSR_c,#0xdf
   MRS R0,CPSR
………………………………………………
這里 從用戶模式可以直接切換到管理模式
而在《ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程》的 3.6處理器模式 下卻有這么一段話
“特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式!

2.
在 ADS1.2集成開(kāi)發(fā)環(huán)境 里調(diào)用 主函數(shù)main()用
1)IMPORT    main    ;在《ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(二)》的 程序清單2.9里
2)IMPORT  __main    ;在《ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(二)》其他程序的Startup.s里
問(wèn):
c程序主函數(shù) 在匯編里調(diào)用具體格式是那中?還是需要設(shè)置什么關(guān)聯(lián)?

3.
關(guān)于PC和LR 的問(wèn)題
在ARM指令集 狀態(tài)下
  PC    指令從存儲(chǔ)器中取出
  PC-4  對(duì)指令使用的寄存器進(jìn)行譯碼
  PC-8  從寄存器組中讀出寄存器 執(zhí)行 移位和ALU操作 寄存器寫(xiě)回到寄存器組
問(wèn):
在子程序 調(diào)用的時(shí)候 是下一條指令的地址 PC+4 寫(xiě)入LR嗎
在異常發(fā)生時(shí)候 是把 PC+4 或者 PC+8 寫(xiě)入LR嗎

6樓: >>參與討論
zlgARM
space_12
1:您看看P64上的思考題。那一段程序就是為了說(shuō)明用戶模式之局限的。

2:__main和main是兩個(gè)不同的程序入口。啟動(dòng)文件是先跳入__main,完成了對(duì)C庫(kù)函數(shù)的一些初始化工作,然后去執(zhí)行C程序里的main。

3:《ARM嵌入式系統(tǒng)基礎(chǔ)教程》P48,表3.5,《ARM嵌入式系統(tǒng)基礎(chǔ)教程》流水線相關(guān)章節(jié)。

7樓: >>參與討論
space_12
謝謝周工的熱情 解答
可惜還不能給我說(shuō)明白,自己在琢磨吧

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
H-JTAG
周工:用筆記本的USB轉(zhuǎn)并口進(jìn)行JTAG程序調(diào)試
LPC2132產(chǎn)品開(kāi)發(fā)與量產(chǎn)體會(huì)
問(wèn)個(gè)有關(guān)LPC2132調(diào)試的問(wèn)題
如何開(kāi)了一個(gè)FIQ的情況下再開(kāi)其它的IRQ
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)