ARM經(jīng)典300問(1~50)免費下載PDF._第1頁
ARM經(jīng)典300問(1~50)免費下載PDF._第2頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Q:請問在初始化 CPU 堆棧的時候一開始在執(zhí)行 mov r0, LR 這句指令時處理器 是什么模式 A:復(fù)位后的模式,即管理模式.第 2 問:Q:請教:MOV 中的 8 位圖立即數(shù),是怎么一回事 OxFOOOOOOl 是怎么來的A:是循環(huán)右移,就是一個 O 255 之間的數(shù)左移或右移偶數(shù)位的來的,也就是這個 數(shù)除以 4 一直除,直到在 0-255 的范圍內(nèi)它是整數(shù)就說明是可以的!A:8 位數(shù)(0-255 循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F0000001 既是 0 x1F 循環(huán)右 移4 位,符合規(guī)范,所以是正確的.這樣做是因為指令長度的限制,不可能把 32 位立即 數(shù)放在32 位的指令中.移位

2、偶數(shù)也是這個原因.可以看一看 ARM 體系結(jié)構(gòu)(ADS 自帶 的英文文檔的相關(guān)部分.第 3 問:Q:請教:ARM 微控制器基礎(chǔ)與實戰(zhàn)2.2.1 節(jié)關(guān)于第 2 個操作數(shù)的描述中有 這么一段:#inmed_8r 常數(shù)表達式.該常數(shù)必須對應(yīng) 8 位位圖,即常熟是由一個 8 位的 常數(shù)循環(huán)移位偶數(shù)位得到.合法常量:0 x3FC,0,0 xF0000000,200,0 xF0000001.非法常量:0 x1FE,511,0 xFFFF,0 x1010,0 xF0000010.常數(shù)表達式應(yīng)用舉例3LDR R0,R1,#-4 ;讀取 R1 地址上的存儲器單元內(nèi)容,且 R1 = R1-4針對這一段,我的疑問:

3、1. 即常數(shù)是由一個 8 位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解2. 該常數(shù)必須對應(yīng) 8 位位圖,既然是 8 位位圖,那么取值為 0-255,怎么 0 x3FC 這 種超出 255 的數(shù)是合法常量呢3. 所舉例子中 合法常量和非法常量是怎么區(qū)分的如0 x3FC 合法,而 0 x 仆 E 卻非法0 xF0000000,0 xF0000001 都合法而 0 xF0000010 又變成了非法4. 對于匯編語句 LDR R0,R1,#-4,是先將 R1 的值減 4 結(jié)果存入 R1,然后讀取R1 所指單元的值到 R0,還是先讀取 R1 到 R0,然后再將 R1 減 4 結(jié)果存入 R1A:提示,任何常

4、數(shù)都可用底數(shù)*2 的 n 次幕來表示.1. ARM 結(jié)構(gòu)中,只有 8bits 用來表示底數(shù),因此底數(shù)必須是 8 位位圖.2. 8 位位圖循環(huán)之后得到常數(shù),并非只能是 8 位.3. 0 xF0000010 底數(shù)是 9 位,不能表示.4. LDR R0, R1, #-4 是后索引,即先讀,再減.可以看一看 ARM 體系結(jié)構(gòu)對相關(guān)尋址方式的說明.第 4 問:Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,有沒有一種標(biāo)志或辦法能夠識別代碼段處于什么樣的模式A:讀取 CPSR 任何時候都是可以讀第 5 問:Q:為什么保護現(xiàn)場時 總是保護 R0-R3,R12,為什么不保護

5、R4-R11A:請看一看ARM-thumb 過程調(diào)用標(biāo)準(zhǔn)這個文檔第 6 問:Q:請問 mov R1,#0 x00003DD0 錯誤:out of the range of operatio n 是怎么回事情我就是想 l0DIR=0 x00003dd0,匯編就是LDR R0,=IODIRMOV R1,#0 x00003dd0STR R1,R0編譯時候說是超出操作范圍A:使用 ldr,mov 的操作數(shù)為 8 位位圖數(shù).第 7 問:Q:在 ARM7TDMI(-S 處理器內(nèi)部有 37 個用戶可見的寄存器:問題:用戶可見應(yīng)該怎樣理解這 37 個寄存器是否是 37 個不同的物理寄存器例如 R8 與 R8_

6、fiq 應(yīng)該是兩個不同的物理寄存器吧A:用戶可見是指用戶可以通過程序操作的.R8 與 R8_fiq 是兩個不同的寄存器.第 8 問:Q:USR 模式,SVC 模式,IRQ 模式分別有哪些限制A:對于外設(shè)操作限制與芯片設(shè)計有關(guān).USR 模式不能設(shè)置 CPSR 寄存器.用戶模式下無 SPSR 寄存器,代碼可以為 ARM,Thumb.第 9 問:Q:請問在初始化堆棧時就決定了工作模式是什么意思如何決定工作模式的A:設(shè)置 CPSR 寄存器.第 10 問:Q:請問:ARM 匯編程序設(shè)計中所謂的文字池作何理解A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址.4第 11

7、問:Q:為什么在中斷向量表中不直接 LDR PC,異常地址.而是使用一個標(biāo)號,然有 再在后面使用 DCD 定義這個標(biāo)號A:因為 LDR 指令只能跳到當(dāng)前 PC 4kB 范圍內(nèi),而 B 指令能跳轉(zhuǎn)到 32MB 范圍, 而現(xiàn)在這樣在 LDR PC, xxxx這條指令不遠(yuǎn)處用xxxxDCD 定義一個字,而這個字 里面存放最終異常服務(wù)程序的地址,這樣可以實現(xiàn) 4GB 全范圍跳轉(zhuǎn).Q:LDR 不是可以全空間跳轉(zhuǎn)的嗎ARM 微控制器基礎(chǔ)與實戰(zhàn)程序清單 5.3.A:LDR 偽指令通過設(shè)置指令緩沖池才能實現(xiàn)全范圍跳轉(zhuǎn),而 LDR 指令則只能實 現(xiàn)4KB 范圍跳轉(zhuǎn).第 12 問:Q:ARM7TDMI-S 和 A

8、RM7TDMI 有何區(qū)別A:ARM7TDMI-S 是 ARM7TDMI 的可綜合(synthesizable 版本(軟核.對應(yīng)用工程師來說,除非芯片生產(chǎn)廠商對 ARM7TDMI-S 進行了裁減,否則 ARM7TDMI-S 與 ARM7TDMI 沒有太大的區(qū)別,其編程模型與 ARM7TDMI 一致.第 13 問:Q:DCD 偽指令的疑惑.StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1 * 4這句話是什么意思 DCD 后面的程序標(biāo)號或數(shù)字表達式是何意A:它的內(nèi)容是初始化遞減堆棧的最高地址,看 ARM 微控制器基礎(chǔ)與實戰(zhàn)2.3.2 節(jié).第 2 章編

9、譯器與語言第 14 問:Q:00254: Uni mpleme nted RDI message 是什么錯誤提示我的設(shè)置連接都正常,是不是芯片燒了A:是 JTAG 的問題.可以先使用 ISP 操作試試就知道了,如果能 ISP,說明LPC2104 沒有損壞,還能正常運行程序.第 15 問:Q:請教:我在調(diào)試程序的時候在 AXD 中出現(xiàn)這樣的提示信息:RDI Warning 00159:could not ope n specified device port.我是根據(jù)配套教程的步驟設(shè)置的.A:請按照光盤easyarm_drivereadme.txt 安裝驅(qū)動程序.第 16 問:Q:我用實驗程序運

10、行經(jīng)常出現(xiàn)下列信息!程序不能下載到目標(biāo)板.Warnning! in terrupt vectors data is not correct!Program you dow nl oaded can not run freely!A:1.仿真器配置一定要正確,即EasyARM Configuration設(shè)置窗口中的FLASH 項中選擇Erase Flash when need;2.向量表累加和要為 0;3.可以先在 RAM 調(diào)試一個程序(運行撚后 STOP,再使用 File-Load Image.加載要下載到 FLASH 的調(diào)試文件.第 17 問:Q:在 ADS 中是否可以進行軟件調(diào)試基于 UC

11、OS-II 的程序A:ADS 軟件調(diào)試只能調(diào)試 ARM 的內(nèi)核,不能調(diào)試外設(shè).但是取消 PLL 鎖定檢測后,可以調(diào)試任務(wù)切換,最終到空閑任務(wù)上開始移植時軟件仿真是最好的工具第 18 問:Q:ARMulate 軟件是干什么的 2104 不是用 EasyJTAG.dll 來仿真嗎A:軟件仿真只能仿真 ARM 核.第 19 問:Q:有關(guān) LPC2106.INC 的問題.我無法在 project 引用 Ipc2106.inc 文件,只能引用Ipc2106.h 文件,這是什么原因且當(dāng)我的主程序用匯編編寫時,不能引用 Ipc2106.h 用lpc2106.inc 則無法加入 project,請問匯編器應(yīng)如

12、何設(shè)置A:不用加 2106.inc 只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加 6in clude 2106.i nc.注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器.第 20 問:Q:入口點是什么意思我在使用 LPC2106 上移植 UCOS-II,每次 MAKE 時總是提示我 Image does not have an entry poin 可是我是把光盤的 vetctors.s 復(fù)制過來的,而且仔細(xì)看了看,已經(jīng)聲明了 ENTERY,這是怎么回事A:需要在 ADS 中設(shè)置入口 .第 21 問:Q:請教:如何定義不被初始化變量A:讓編譯器不知道有這個內(nèi)存地址即可.A:

13、如用分散加載文件分配 RAM 故意預(yù)留一部分 RAM 不分配,用它來存您不需 要初始化的東西或者不調(diào)用編譯器提供的啟動代碼,不過這樣可能編程會麻煩一些第 22 問:Q:我直接通過 JTAG 口下載 EasyArm 板帶的 Ext1_test 程序到 ARM 中,出現(xiàn)中 斷向量的告警:interrupt 果然復(fù)位后芯片不能運行但是我用串口下載后芯片能并且 我用 JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨 JTAG 口下載不行不知道是 什么原因A:仿真器配置中要設(shè) 1可以先打開一個工程在 RAM 中調(diào)試運行;2. stop 程序;3. 使用 File-L Q:仿真器配置中我是設(shè)置了 Era

14、se Flash when nee(但照你說的 話,那不是在試嗎在 RA 我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關(guān)系啊A:是的,是向量表的累加和不為零因為如果用 ISP 下載能運行,說明向況可能是沒有正常下載代碼.先在 RAM 中 調(diào)試,目的是為了后面正確下載程序到FLASH.第 23 問:Q:用 Scatter A:參考 vector is not correct arm is not running freely.正常工作,中斷也行的置 Erase Flash when nee 也可以這樣試試:oad Image -重新加載 Ext1_test 生成的*.axf 文件.RAM

15、 下調(diào) M 下調(diào)試我是可以的,但是下載后出現(xiàn) interrupt vector data is not correct.量表的累加和已為零,而用 JTAG 下載不能運行的情怎樣將某個函數(shù)或文件定 位在Flash 的某個位置24 問:gati on!器基礎(chǔ)與實戰(zhàn)附錄一.,如下:不同,為什么在作 2104 移植實驗時,要用 ase 中為什么要將 RW Base 設(shè)置為0 x40000040 我將其設(shè)置為 0 x40003000,內(nèi)存空間的使用,因為跑 OS 要比較大的內(nèi) 存空間,所以要騰出點地方 MMU 的 ARM 芯片是否支持使用 malloc(函數(shù)動態(tài)分配 內(nèi)存驗程序中,我想查看數(shù)據(jù)緩沖區(qū) D

16、ataBuf 的值,怎么查看http:/ nload/dow ns.asp ID=10097第 Q:我在仿真時遇到這樣的提示 Error, Flash is protected by user confi 怎么寫到flash 里面呢A:看配套ARM 微控制第 25 問:Q:我在移植實驗中想到了兩個問題 1.Debug 和 Release 以及 DebugRel 有什么Release2.在 Rele 為什么不能工作A:都只是一個問題第 26 問:Q:請問沒有 A:是否支持 malloc(函數(shù)與芯片沒有多大關(guān)系,主要與編譯器有關(guān).Q:再問:如果沒有操作系統(tǒng)支持呢A:也支持.第 27 問:Q:在 I

17、2C 實A:watch 窗口或鼠標(biāo)停留在要查看的變量名上.Q:我查詢的是寫入 DataBuf 緩沖區(qū)的值,鼠標(biāo)在上中加入,結(jié)果也是 A:變量被優(yōu)化,調(diào)試時可以把第 28 問:Q:仿真軟件和 DBE Warning 00041:!An unspecified Debug 電源和開發(fā)板都連好,錯誤和沒接開發(fā)板一件很長時間才 有如上反應(yīng),請幫忙A:1.并口是否正常2.在其它操作系統(tǒng)(如第 29 問:Q:如何生成 8我是好像沒有生成 hex 文件A:試試這種方法:Target-Target Set 成問題.第 30 問 Q:請問關(guān)于 A:ro:read only,rw:read and write.第

18、 31 問:Q:編譯成功后的信息第一行 A:R0 只讀段,即程序代碼空間;RW 可讀/寫段,即數(shù)據(jù)變量空間;ZI 清零變量段,即需要清零初始化第 32 問:Q:如何在 A A:多任務(wù)環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持ucos 下有一個統(tǒng)計功能的模塊可以間接實現(xiàn)部分功能.第 33 問:Q:請問向 fl A:要寫入的 flash 地址超過了范圍.如果不是代碼太大的問題,可以第 3Q:在 LPC221A:*(char*0 x40000300 類似訪問Q:謝謝,但這樣做就無須定義數(shù)組變 A:可以使用分散加載.第 35 問:Q:請問 AD 面根本就不會出現(xiàn)他的值,即使在 watch name n

19、ot found.該變量定義為全局變量查看.2104 開發(fā)板連接不上Toolbox call failed樣,驅(qū)動也安裝了 ,安裝時按確定鍵時,軟 98 下或其它臺式 PC 下試試.32 位 hex 文件在 Release Setti ng-ARM fromELF-Output Format 中設(shè)置為 In tel 32bit HEX,可ting-Post Link 中選擇ARM fromELF加上你上面設(shè)的應(yīng)該不:settings 中 rO base rw base 的意思,code,R0 data,RW data,ZI data,debu 分別代表什么的數(shù)據(jù)變量空間.DS 里面看任務(wù)執(zhí)行的

20、一些情況比如堆棧.才可以實現(xiàn).ash 燒數(shù)據(jù)時出現(xiàn):exceeds flash limitation 請予賜教!檢查 scf 文件是否正 4 問:4 之類的芯片中如何實現(xiàn)數(shù)組的絕對地址定位,比如 51 的_at_的用法.量,訪問也不便,還有高招嗎S 編譯錯誤L6221E:Execution region ER_RO overlays with Execution regionER_ZI該如何解決 A:請用我們網(wǎng)站上的工程模板試一試,最大的可能是因為你 的RELEASE 或者 DEBUG 選項里面沒有正確設(shè)置,按照參考ARM 微控制器基 礎(chǔ)與實戰(zhàn)上面的設(shè)置,是不會有這個問 題的.9 第 36 問

21、:Q:請教一下:將程序?qū)懭?flash,再用從 JTAG方式調(diào)試寫入之后再復(fù)位程序沒什么反映.看了很多以前的帖子,說 memmap寄存器要為 1,我用的是一個很簡單的控制 led 的例子,改動了參數(shù)之后 寫入 flash 的.在這個程序的vectors中找不到關(guān)于 memmap 寄存器操作的部分啊,這 是怎么回事,該怎么辦呢 A: ARM微控制器基礎(chǔ)與實戰(zhàn)上附錄有常見問題,列 舉了幾點程序?qū)懙?FLASH 不能運行的原因.memmap 操作可以在 target.c 中的 TargetResetlnit(函數(shù)內(nèi)添加.第 37 問:Q:HEX 文件.EASY2100 配套ARM 微控制 器基礎(chǔ)與實

22、戰(zhàn)上講:把項目編譯成 HEX 文件,我不會呀,咋辦 A:Target-target sett in gs 設(shè)置 Post-li nker 并且設(shè)置 Lin ker-fromELF. Q:再問:我用的是光盤里的例子,打開工程項目里是 DebugInARM.DebugInFlash. RelInFlash.不是ARM 微控制器基 礎(chǔ)與實戰(zhàn)上的 DebugRel 呀,我都照ARM 微控制器基礎(chǔ)與實戰(zhàn)上設(shè)置的,可用 ISP 下載,提示無法找到 HEX 文件.A:光盤上的例子是用專用工程模板建立,已經(jīng)設(shè) 置好參數(shù),與默認(rèn)模板不同.第 38 問:Q:EasyARM2100 開發(fā)板如何通過 JTAG 接口

23、下載到 Flash 我在用 EasyARM2100 開發(fā)板時 JTAG 接口不能進行 Flash 中的調(diào)試(DebugI nF lash 但是可以在 RAM 中調(diào)試(DebugI nRAM,且通過 ISP 編程可以寫入 Flash.通過 JTAG 接口進行 DebugInFlash 調(diào)試時,總是出現(xiàn)如下提示:Flash Sector 0 write failed!Warnning in terrupt vectors data is n ot correct! Program you dow nl oaded can not runfreely!請問是什么原因 我該如何辦 A:仿真器設(shè)置選項有

24、一個允許擦除FLASH 的選項,選擇它.第 39 問:Q:我發(fā)現(xiàn)程序在 RAM 調(diào)試時 (RO=0X40000000 OK,但是 JTAG 下載到 FLASH(R0=0X00000000,顯示如下:The sessi on file c:Docume ntsand Setti ngsja ndefault-1-2-0-0.ses could not be loaded.這 是 ADS 自身的問題,請不要通過 IDE 運行 AXD,而是通過開始菜單運行 撚后 Load 調(diào)試文件調(diào)試.第 40 問:Q:我有幾個問題想問問大家.10 調(diào)試主機負(fù)責(zé)對 ARM 源 程序進行編譯鏈接,最好用什么樣的高級語

25、言對 ARM 源程序進行編譯鏈接使用調(diào) 試程序(如 AXD 進行 JTAG 調(diào)試,AXD 是什么調(diào)試程序,是否是類似什么軟件之類的到哪能下載AXD的調(diào)試程序呢怎么樣進行AXD程序進行 JTAG調(diào)試如何通過 JTAG 仿真器發(fā)送到目標(biāo)機上呢 對于單片機的調(diào)試,都用到了 什么軟件都個有什么作用呢 A:可以使用 ADS1.2,Keil C 也支持.AXD 是 ADS 的一 個組件.您可以在本公司網(wǎng)站下載 EasyARM2100 開發(fā)套件快速入門看一看第 41 問:Q:EasyARM2100AXD調(diào)試時出錯,故障現(xiàn)象:按照光盤上的方法設(shè)置好 ADS1.2 后打開光盤上的expamplesgpiocLedDisp 的工程文件(從光盤上拷貝到硬盤,已去 處只讀屬性編譯通過后,按 Debug 按鍵運行調(diào)試,進入 AXD.按 Go 按鍵,EasyARM 沒有反應(yīng).再按 Stop 按鍵.AXD 彈出兩個確認(rèn)框窗口:No disassembly could be read at the requested address如果進入 AXD 直接按 Step 按鍵,也是會彈出同樣的兩個確 認(rèn)框.軟件是光盤上的,沒有經(jīng)過任何改動.光盤上的程序試過 4,5 個都是這種情況. AXD 的設(shè)置是按照光盤上的說明設(shè)置的.EasyARM 上的 JP8 是斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論