|
|||||||||||
| 技術(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ù) |
以下所說(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 于 2007/3/27 8:59:00 發(fā)布:
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 于 2007/3/27 21:04:00 發(fā)布:
非常榮幸 周工程師為我解答 我剛剛學(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 于 2007/3/28 8:38:00 發(fā)布:
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 于 2007/3/28 20:53:00 發(fā)布:
還有如下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 于 2007/3/29 8:57:00 發(fā)布:
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 于 2007/3/31 18:56:00 發(fā)布:
謝謝周工的熱情 解答 可惜還不能給我說(shuō)明白,自己在琢磨吧 |
|
| 免費(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) |