

下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 5 問(wèn):ARM經(jīng)典300問(wèn)第 1 章 體系結(jié)構(gòu)第 1 問(wèn):Q:請(qǐng)問(wèn)在初始化 CPU 堆棧的時(shí)候一開始在執(zhí)行 movrO, LR 這句指令時(shí)處理器是什么模式 A:復(fù)位后的模式,即管理模式.第 2 問(wèn):Q:請(qǐng)教:MOV中的8位圖立即數(shù),是怎么一回事 OxFOOOOOOl是怎么來(lái)的A:是循環(huán)右移,就是一個(gè) O255之間的數(shù)左移或右移偶數(shù)位的來(lái)的 ,也就是這個(gè)數(shù)除以 4 一直除 , 直到 在 O -255 的范圍內(nèi)它是整數(shù)就說(shuō)明是可以的 !A:8 位數(shù)(O-255)循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F(xiàn)OOOOOO1 既是 Ox1 F 循環(huán)右移 4 位, 符合規(guī)范,所以是正確的 .這樣做是因?yàn)橹噶铋L(zhǎng)度
2、的限制,不可能把 32 位立即數(shù)放在 32 位的指令中.移位偶數(shù)也是這個(gè)原因.可以看一看 ARM 體系結(jié)構(gòu)(ADS 自帶的英文文 檔)的相關(guān)部分.第 3 問(wèn):Q:請(qǐng)教:ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)2.2.1 節(jié)關(guān)于第 2 個(gè)操作數(shù)的描述中有這么一段 # inmed_8r 常數(shù)表達(dá)式 .該常數(shù)必須對(duì)應(yīng) 8 位位圖,即常熟是由一個(gè) 8 位的常數(shù)循環(huán)移 位偶數(shù)位得到 .合法常量:0 x3 FC,O, OxFOOOOOOO ,200,0 xF0000001 . 非法常量 :Ox1FE,511,OxFFFF,Ox1O1O,OxFOOOOO1O.常數(shù)表達(dá)式應(yīng)用舉例 :LDR R0,R1,#-4 ;讀取 R1
3、 地址上的存儲(chǔ)器單元內(nèi)容,且 R1 = R1-4針對(duì)這一段 , 我的疑問(wèn) :1.即常數(shù)是由一個(gè) 8 位的常數(shù)循環(huán)移位偶數(shù)位得到 ,這句話如何理解2.該常數(shù)必須對(duì)應(yīng) 8 位位圖,既然是 8 位位圖,那么取值為 0-255,怎么 0 x3 FC 這種 超 出 255 的數(shù)是合法常量呢3.所舉例子中 ,合法常量和非法常量是怎么區(qū)分的如 Ox3FC 合法,而 Ox1FE 卻非法OxFOOOOOOO,OxFOOOOOO1 都合法,而 OxFOOOOO1O 又變成了非法4.對(duì)于匯編語(yǔ)句LDR R0,R1,#-4,是先將 R1 的值減 4 結(jié)果存入 R1,然后讀取 R1所 指單元的值到 R0,還是先讀取 R
4、1 到 R0,然后再將 R1 減 4 結(jié)果存入 R1A:提示,任何常數(shù)都可用底數(shù)*2 的 n 次幕 來(lái)表示.1. ARM 結(jié)構(gòu)中 ,只有 8bits 用來(lái)表示底數(shù) ,因此底數(shù)必須是 8 位位圖 .2.8 位位圖循環(huán)之后得到常數(shù) ,并非只能是 8 位.3.OxFOOOOO1O 底數(shù)是 9 位,不能表示.4.LDRRO,R1,#-4 是后索引,即先讀,再減.可以看一看 ARM 體系結(jié)構(gòu)對(duì)相關(guān)尋址方式的說(shuō)明 .3第 4 問(wèn):Q 在程序移植的過(guò)程中,什么代碼段處于什么樣的模式,這可真是一個(gè)困擾人的大 難題, 有沒(méi)有一種標(biāo)志或辦法能夠識(shí)別 代碼段處于什么樣的模式 A:讀取 CPSR,任何時(shí)候都是可以讀.
5、第 12 問(wèn):Q:為什么保護(hù)現(xiàn)場(chǎng)時(shí),總是保護(hù) R0-R3,R12,為什么不保護(hù) R4-R11A:請(qǐng)看一看ARM-thumb 過(guò)程調(diào)用標(biāo)準(zhǔn)這個(gè)文檔.第 6 問(wèn):Q:請(qǐng)問(wèn) mov R1 ,#0 x00003 DD0 錯(cuò)誤:out of the range of operation 是怎么回事情我就是想 IODIR= 0 x00003dd0 ,匯編就是LDR R0,= IODIRMOV R1,#0 x00003dd0STR R1,R0編譯時(shí)候說(shuō)是超出操作范圍A:使用 ldr,mov 的操作數(shù)為 8 位位圖數(shù).第 7 問(wèn):Q:在 ARM7TDMI(-S)處理器內(nèi)部有 37 個(gè)用戶可見的寄存器:?jiǎn)栴}:用
6、戶可見 應(yīng)該怎樣理解 這 37 個(gè)寄存器是否是 37 個(gè)不同的物理寄存器 , 例如 R8 與R8_fiq 應(yīng)該是兩個(gè)不同的物理寄存器吧A:用戶可見是指用戶可以通過(guò)程序操作的.R8 與 R8_fiq 是兩個(gè)不同的寄存器.第 8 問(wèn):Q:USR 模式,SVC 模式,I RQ 模式分別有哪些限制 A:對(duì)于外設(shè)操作限制與 芯片設(shè)計(jì)有關(guān) .USR 模式不能設(shè)置 CPSR 寄存器. 用戶模式下無(wú) SPSR 寄 存器,代碼可以為 ARM,Thumb.第 9 問(wèn):Q:請(qǐng)問(wèn)在初始化堆棧時(shí)就決定了工作模式是什么意思如何決定工作模式的 A: 設(shè)置 CPSR 寄存器 .第 10 問(wèn):Q: 請(qǐng)問(wèn) :ARM 匯編程序設(shè)計(jì)
7、中所謂的 文字池 作何理解A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地 址.第 11 問(wèn):Q:為什么在中斷向量表中不直接 LDR PC,異常地址.而是使用一個(gè)標(biāo)號(hào),然有再在后面 使用 DCD 定義這個(gè)標(biāo)號(hào)A:因?yàn)?LDR指令只能跳到當(dāng)前 PC4kB范圍內(nèi),而 B指令能跳轉(zhuǎn)到 32MB范圍,而現(xiàn)在這 樣在 LDRPC, xxxx這條指令不遠(yuǎn)處用xxxxDCD 定義一個(gè)字,而這個(gè)字里面存放最終異 常服務(wù)程序的地址 ,這樣可以實(shí)現(xiàn) 4GB全范圍跳轉(zhuǎn) .Q:LDR 不是可以全空間跳轉(zhuǎn)的嗎ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)程序清單 5.3.A:LDR 偽指令通過(guò)設(shè)置指令緩沖
8、池才能實(shí)現(xiàn)全范圍跳轉(zhuǎn) ,而 LDR 指令則只能實(shí)現(xiàn) 4KB 范圍 跳轉(zhuǎn).第 19 問(wèn):Q:ARM7TDMI-S 和 ARM7T DMI 有何區(qū)別A:ARM7TDMI-S 是 ARM7TDMI 的可綜合(synthesizable)版本(軟核).對(duì)應(yīng)用工程師來(lái)說(shuō),除非芯片生產(chǎn)廠商對(duì) ARM7TDMI-S 進(jìn)行了裁減,否則 ARM7TDMI-S 與 ARM7TDMI 沒(méi)有太大的區(qū)別 ,其編程模型與 ARM7TDMI 一致.第 13 問(wèn) :Q:DCD 偽指令的疑惑 .StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4 這句話是什么意思 DCD
9、 后面的程序標(biāo)號(hào)或數(shù)字表達(dá)式是何意A:它的內(nèi)容是初始化遞減堆棧的最高地址,看ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)2.3.2 節(jié).5第 2 章 編譯器與語(yǔ)言第 14 問(wèn):Q: 00254 : Unimplemented RDI message 是什么錯(cuò)誤提示 我的設(shè)置連接都正常,是不是 芯片燒了A:是 JTAG 的問(wèn)題.可以先使用 ISP 操作試試就知道了,如果能 ISP 說(shuō)明 LPC2104 沒(méi)有 損 壞,還能正常運(yùn)行程序 .第 15 問(wèn):Q:請(qǐng)教:我在調(diào)試程序的時(shí)候在 AXD 中出現(xiàn)這樣的提示信息:RDI Warning 00159: could not open specified device p
10、ort.我是根據(jù)配套教程的步驟設(shè)置的 .A: 請(qǐng)按照光盤 easyarm_drive readme. txt 安裝驅(qū)動(dòng)程序 .第 16 問(wèn):Q:我用實(shí)驗(yàn)程序運(yùn)行經(jīng)常出現(xiàn)下列信息!程序不能下載到目標(biāo)板.Warnning! interrupt vectors data is not correct!Program you downloaded can not run freely!A:1.仿真器配置一定要正確,即EasyARM Configuration設(shè)置窗口中的FLASH項(xiàng)中選擇 Erase Flashwhen need;2 .向量表累加和要為 0;3.可以先在 RAM 調(diào)試一個(gè)程序(運(yùn)行),
11、然后 STOP 再使用 File-Load Image.加載要 下載到 FLASH的調(diào)試文件 .第 17 問(wèn):Q:在 ADS 中是否可以進(jìn)行軟件調(diào)試基于 UCOSII 的程序A:ADS 軟件調(diào)試只能調(diào)試 ARM 的內(nèi)核,不能調(diào)試外設(shè).但是取消 PLL 鎖定檢測(cè)后,可以調(diào)試任務(wù)切換,最終到空閑任務(wù)上 .開始移植時(shí)軟件仿真是最好的工具 .第 18 問(wèn):Q:ARMulate 軟件是干什么的 2104 不是用 EasyJTAG.dll 來(lái)仿真嗎 A:軟件仿真只能仿真 ARM 核.Q:有關(guān) LPC2106 .INC 的問(wèn)題.我無(wú)法在 project 弓|用 lpc2106.i nc 文件,只能引用 lp
12、c2106.h文件,這是什么原因且當(dāng)我的主程序用匯編編寫時(shí),不能引用 lpc2106.h,用lpc2106.inc 則無(wú)法加入 project,請(qǐng)問(wèn)匯編器應(yīng)如何設(shè)置A:不用加 2106.inc 只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加6include 2106.inc.注意:該文件是匯編文件定義的頭文件 ,定義內(nèi)部寄存器.第 20 問(wèn) :Q:入口點(diǎn)是什么意思我在使用 LPC2106 上移植 UCOSII,每次 MAKE 時(shí)總是提示我Image does not have an entry point,可是我是把光盤的 vetctors.s 復(fù)制過(guò)來(lái)的,而且 仔細(xì)看了看,已經(jīng)
13、聲明了 ENTERY 這是怎么回事A:需要在 ADS 中設(shè)置入口 .第 21 問(wèn) :Q:請(qǐng)教:如何定義不被初始化變量A: 讓編譯器不知道有這個(gè)內(nèi)存地址即可 .A:如用分散加載文件分配 RAM 故意預(yù)留一部分 RAM 不分配,用它來(lái)存您不需要初始化的東 西.或者不調(diào)用編譯器提供的啟動(dòng)代碼 ,不過(guò)這樣可能編程會(huì)麻煩一些 .第 22 問(wèn) :Q:我直接通過(guò) JTAG 口下載Easy Arm板帶的Ext1_test程序到ARM中,出現(xiàn)中斷向量的告警 interrupt vectoris not correct arm isnot running free l y. 果然復(fù)位后芯片不能運(yùn)行.但是我用串口下
14、載后芯片能正常工作,中斷也行的.并且我用 JTAG 仿真的話,芯片能正常工作 ,中斷也行的 ,唯獨(dú) JTAG 口下載不行. 不知道是什么原因A:仿真器配置中要設(shè)置 Erase Flash when need.也可以這樣試試:1. 可以先打開一個(gè)工程在 RAM 中調(diào)試運(yùn)行;2.stop 程序;3.使用 File-Load Image重新加載 Ext1_test 生成的*.axf 文件.Q:仿真器配置中我是 設(shè)置了 EraseFlash whenneed,但照你說(shuō)的話,那不是在 RAM 下調(diào) 試嗎在 RAM 下調(diào)試我是可以的 ,但是下載后出現(xiàn) interruptvector data isnot
15、correct.我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關(guān)系啊A:是的,是向量表的累加和不為零 .因?yàn)槿绻?ISP 下載能運(yùn)行,說(shuō)明向量表的累加和已為零,而用 JTAG 下載不能運(yùn)行的情 況可能是 沒(méi)有正常下載代碼 .先在 RAM 中調(diào)試,目的是為了后面正確下載程序到FLASH.第 23 問(wèn) :Q:用 Scatter 怎樣將某個(gè)函數(shù)或文件定位在 Flash 的某個(gè)位置A:參考 http:/ ID= 10097第 24 問(wèn):Q:我在仿真時(shí)遇到這樣的提示:Error, Flash is pr ot ected by user configation! 怎么寫到 fla sh 里面呢A
16、:看配套ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)附錄一第 25 問(wèn) : Q: 我在移植實(shí)驗(yàn)中想到了兩個(gè)問(wèn)題,如下:1.Debug 和 Release 以及 Debug Rel 有什么不同 ,為什么在作 2104 移植實(shí)驗(yàn)時(shí) ,要用 Release2.在 Release 中為什么要將 RW Base 設(shè)置為 0 x40000040 我將其設(shè)置為 0 x40003000 , 為什么不能工作A:都只是一個(gè)問(wèn)題,內(nèi)存空間的使用,因?yàn)榕?OS 要比較大的內(nèi)存空間,所以要騰出點(diǎn)地方.第 26 問(wèn) :Q:請(qǐng)問(wèn)沒(méi)有 MMU 的 ARM 芯片是否支持使用 malloc()函數(shù)動(dòng)態(tài)分配內(nèi)存A:是否支持 malloc()函數(shù)與芯
17、片沒(méi)有多大關(guān)系,主要與編譯器有關(guān).Q:再問(wèn):如果沒(méi)有操作系統(tǒng)支持呢A:也支持.第 27 問(wèn) :Q:在 I2C 實(shí)驗(yàn)程序中,我想查看數(shù)據(jù)緩沖區(qū) DataBuf 的值,怎么查看A:watch 窗口或鼠標(biāo)停留在要查看的變量名上 .Q:我查詢的是寫入 DataBuf 緩沖區(qū)的值,鼠標(biāo)在上面根本就不會(huì)出現(xiàn)他的值,即使在 watch 中加入,結(jié)果也是 name not found. A :變量被優(yōu)化,調(diào)試時(shí)可以把該 變量定義為全局變量查看 .第 28 問(wèn) :Q: 仿真軟件和 2104 開發(fā)板連接不上DBE Warning 00041 :!AnunspecifiedDebug Toolbox call fa
18、iled 電源和開發(fā)板都連好,錯(cuò)誤和沒(méi)接開發(fā)板一 樣,驅(qū)動(dòng)也安裝了,安裝時(shí)按確定鍵時(shí),軟 件很長(zhǎng)時(shí)間才有如上反應(yīng),請(qǐng)幫忙A:1. 并口是否正常2 .在其它操作系統(tǒng) (如 98)下或其它臺(tái)式 PC 下試試.第 29 問(wèn) :Q:如何生成 32 位 hex 文件8我在 Release Sett i ng- ARM from ELF- Out put Form at 中設(shè)置為 In tel 32b it HEX,可 是好像沒(méi)有生成hex 文件A: 試試這種方法 :Targ et- Target Setting- Post Link 中選擇ARM from ELF加上你上面設(shè)的應(yīng)該不成問(wèn)題.第 30 問(wèn)
19、 :Q:請(qǐng)問(wèn)關(guān)于 settings 中 r0 base rw base 的意思A:ro:read only, rw: read and write.第 31 問(wèn) :Q:編譯成功后的信息第一行,code,RO data,RW data,ZI data,debug 分別代表什么 A:R0 只讀段,即程序代碼空間 ;RW 可讀/寫段 ,即數(shù)據(jù)變量空間 ;ZI 清零變量段 ,即需要清零初始化的數(shù)據(jù)變量空間 .第 32 問(wèn) :Q:如何在 ADS 里面看任務(wù)執(zhí)行的一些情況 比如堆棧.A:多任務(wù)環(huán)境 下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實(shí)現(xiàn).ucos 下有一個(gè) 統(tǒng)計(jì)功能的模塊可以間接實(shí)現(xiàn)部分功能 .
20、第 33 問(wèn) :Q:請(qǐng)問(wèn)向 flash 燒數(shù)據(jù)時(shí)出現(xiàn):exceeds flash limitation 請(qǐng)予賜教!A:要寫入的 flash 地址超過(guò)了范圍.如果不是代碼太大的問(wèn)題,可以檢查 scf 文件是否正 確.第 34 問(wèn) :Q:在 LPC2214 之類的芯片中如何實(shí)現(xiàn)數(shù)組的絕對(duì)地址定位,比如 51 的_at_的用法.A:*(char*)Ox4OOOO3OO )類似訪問(wèn) Q: 謝謝,但這樣做就無(wú)須定義數(shù)組變量 ,訪問(wèn)也不便 , 還有高招嗎A:可以使用分散加載.第 35 問(wèn) :Q:請(qǐng)問(wèn) ADS 編譯錯(cuò)誤L6221 E:Execution region ER_RO overlays with
21、Execution region ER_ZI 該如何解決A:請(qǐng)用我們網(wǎng)站上的工程模板試一試,最大的可能是因?yàn)槟愕?RELEASE 或者 DEBUG 選項(xiàng)里 面沒(méi)有正確設(shè)置 ,按照參考 ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)上面的設(shè)置 ,是不會(huì)有這個(gè)問(wèn) 題的 .9第 36 問(wèn) :Q:請(qǐng)教一下:將程序?qū)懭?flash,再用從 JTAG 方式調(diào)試寫入之后再?gòu)?fù)位程序沒(méi)什么反映.看 了很多以前的帖子 ,說(shuō) memmap 寄存器要為 1,我用的是一個(gè)很簡(jiǎn)單的控制 led 的例子, 改 動(dòng)了參數(shù)之后寫入 flash 的.在這個(gè)程序的 vectors 中找不到關(guān)于 memmap 寄存器操作 的部分啊 ,這是怎么回事 ,該
22、怎么辦呢A:ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)上附錄有 常見問(wèn)題,列舉了幾點(diǎn)程序?qū)懙?FLASH 不能運(yùn) 行的原因.memmap 操作可以在 target.c 中的 TargetResetI nit()函數(shù)內(nèi)添加.第 37 問(wèn) :Q:HEX 文件.EASY2100 配套ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)上講:把項(xiàng)目編譯成 HEX 文件,我不會(huì)呀 ,咋辦A:Target-target sett ings 設(shè)置 Post-linker 并且設(shè)置 Linker-fromELF. Q:再問(wèn):我用的是光盤里的例子,打開工程項(xiàng)目里是 Debugl nARM.DebuglnFash. Rell nFash.不是ARM 微控
23、制器基礎(chǔ)與實(shí)戰(zhàn)上的 Debug Rel 呀,我都照ARM 微控制 器基礎(chǔ)與實(shí)戰(zhàn)上設(shè)置 的,可用 ISP 下載,提示無(wú)法找到HEX 文件.A:光盤上的例子是用專用工程模板建立,已經(jīng) 設(shè)置好參數(shù),與默認(rèn)模板不同 .第 38 問(wèn) :Q: EasyARM2100 開發(fā)板如何通過(guò) JTAG 接口下載到 Flash我在用 EasyARM2100 開發(fā)板時(shí) JTAG 接口不能進(jìn)行 Flash 中的調(diào)試(Debug InFlash),但 是可以在 RAM中調(diào)試(Debug In RAM),且通過(guò) ISP 編程可以寫入 Flash.通過(guò) JTAG 接口進(jìn)行 DebugI nFlash 調(diào)試時(shí) ,總是出現(xiàn)如下提示
24、 :Flash Sector 0 write failed!Warnning interrupt v ect ors data is not correct!Program you downloaded can not run freely! 請(qǐng)問(wèn)是什么原因我該如何辦 A:仿真器設(shè)置選項(xiàng)有一個(gè)允許擦除 FLASH 的選項(xiàng),選擇它.第 39 問(wèn) :Q:我發(fā)現(xiàn)程序在 RAM 調(diào)試時(shí)(R0= 0X40000000) 0K,但是 JTAG 下載到 FLASH( RO= 0X00000000 ), 顯示如下 :The session file c: Documentsand Settings jan d
25、efault-1 -2-0-0.ses could not be loaded.A:這是 ADS 自身的問(wèn)題,請(qǐng)不要通過(guò) IDE 運(yùn)行 AXD,而是通過(guò)開始菜單運(yùn)行 然后 Load 調(diào) 試文件調(diào)試 .第 40 問(wèn):Q:我有幾個(gè)問(wèn)題想問(wèn)問(wèn)大家 .10調(diào)試主機(jī)負(fù)責(zé)對(duì) ARM 源程序進(jìn)行編譯鏈接 ,最好用什么樣的高級(jí)語(yǔ)言對(duì) ARM 源程序進(jìn)行 編譯鏈接 使用調(diào)試程序(如 AXD)進(jìn)行 JTAG 調(diào)試,AXD 是什么調(diào)試程序,是否是類似什么 軟件之類的 到哪能下載 AXD 的調(diào)試程序呢 怎么樣進(jìn)行 AXD 程序進(jìn)行 JTAG 調(diào) 試如何通過(guò) JTAG 仿真器發(fā)送到目標(biāo)機(jī)上呢 對(duì)于單片機(jī)的調(diào)試 ,都用到
26、了什么軟件 都 個(gè)有什么作用呢A:可以使用 ADS1.2,Keil C 也支持.AXD 是 ADS 的一個(gè)組件. 您可以在本公司網(wǎng)站下載 EasyARM2100 開發(fā)套件快速入門看一看 .第 41 問(wèn) :Q:EasyARM2100AXD 調(diào)試時(shí)出錯(cuò) ,故障現(xiàn)象:按照光盤上的方法設(shè)置好 ADS1.2 后打開光盤上的 expamples gpioc LedDisp 的工程文 件(從光盤上拷貝到硬盤 ,已去處只讀屬性 ).編譯通過(guò)后,按 Debug 按鍵運(yùn)行調(diào)試,進(jìn)入 AXD.按 Go 按鍵,EasyARM 沒(méi)有反應(yīng).再按 Stop 按鍵.AXD 彈出兩個(gè)確認(rèn)框窗口 :No disassembly
27、could be readat the requested address.如果進(jìn)入 AXD 直接按 Step 按鍵,也是會(huì)彈出同樣的兩個(gè)確認(rèn)框 . 軟件是光盤 上的,沒(méi)有經(jīng)過(guò)任何改動(dòng) .光盤上的程序試過(guò) 4,5 個(gè)都是這種情況 .AXD 的設(shè)置13是按照光盤上的說(shuō)明設(shè)置的 .EasyARM 上的 JP8 是斷開的 .ADS 在出現(xiàn)這種問(wèn)題后重新安裝過(guò) ,故障依舊 . 出現(xiàn)這 個(gè)問(wèn)題前,可以調(diào)試 .只是單步的時(shí)候感覺比較慢 .差不多 1-2 秒鐘才能單步一 次.A:原因找到了,是芯片被加密了,無(wú)法寫入新的程序,用 FLASH ISP 清除后解決.加密后 JTAG 完全不能控制芯片 ,否則可能被
28、解密 .第 42 問(wèn) :Q:我板上的 Ipc2214 開始可以在線編程,只搞了兩三次可以把文件寫進(jìn)去.但我發(fā)現(xiàn) P0.14 未置低電平時(shí)也進(jìn)入 ISP 模式,燒入的文件原來(lái)可以 ISP 下載到 2014 開發(fā)板中運(yùn)行的 . 最 后只能讀芯片的一些 ID,載文件都不能進(jìn)行.以下是對(duì)整片 ERASE 時(shí),對(duì)串口的捕獲,命令返 回是 19.Syn chr on izedSyn chr on izedOK11059OKU 231300P0 140E0 141119configuretar. - ARMUL, 只能仿真 ARM 核外設(shè)不能仿真 .第 48 問(wèn):Q:為什么盤中的工程會(huì)出錯(cuò)啊A:文件的只讀屬
29、性去掉了嗎第 49 問(wèn) :Q:您在 2104 的ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)中提到 ucos 與應(yīng)用代碼分開編譯,在分開編 譯調(diào)試成功之后 ,最后要將代碼統(tǒng)一固化到芯片中 .在最后一步需要注意什么 統(tǒng)一編 譯時(shí)感 覺要改動(dòng)很多東西,有沒(méi)有什么最簡(jiǎn)單的辦法 能否詳細(xì)介紹一下方法 多謝! A:使用我們的 工程模板,可在本公司網(wǎng)站下載 .其實(shí)不分開編譯也可調(diào)試 .http:/ www. zI EasyARM2104 開發(fā)套件快速入門和 LPC210.第 50 問(wèn) :Q:請(qǐng)問(wèn),我的 2104 板子,通過(guò) EasyJTAG 仿真時(shí),在 AXD 上沒(méi)有文件,而且出現(xiàn)這樣Error,F(xiàn)Iash is prot
30、ected by user configation!的提示 ,這是怎么回事啊 在 AXD 應(yīng)該打開什么類型的文件啊 謝謝啦 !A:在仿真器的配置窗口設(shè)置仿真器允許擦除FALSH.AXD- Opti ons-conf igure target-con figure-erase.第 51 問(wèn) :Q:關(guān)于 arm 匯編語(yǔ)言跳轉(zhuǎn)指令的特殊用法.有如下兩條跳轉(zhuǎn)指令 beq lab lef beq lab leb其中 lable 為某段程序的標(biāo)號(hào) ,beq lablef 表示向前跳轉(zhuǎn)到與當(dāng)前指令最接近的標(biāo)號(hào) lable 處執(zhí)行 ,而 beqlableb 表示向后跳轉(zhuǎn)到與當(dāng)前指令最接近的標(biāo)號(hào) lable 處
31、執(zhí)行 . 在 arm 匯編中有定義這樣的用法嗎A:沒(méi)有.第 52 問(wèn) :Q:我將一段程序從 flash 從復(fù)制到了 RAM 中,但是因?yàn)榛旌暇幊讨胁荒苤苯酉?PC 寄存器中賦值來(lái)實(shí)行跳轉(zhuǎn) ,這樣我該如何跳轉(zhuǎn)到這個(gè) RAM 中的地址呢A: 用函數(shù)指針 .可參考 IAP 例子.第 53 問(wèn) :Q:我想詳細(xì)的了解一下 ADS 開發(fā)工具中的 stack.s ,heap.s 和 startups 中代碼的含義, 各位高手推薦本書或給解釋一下A:開發(fā)套件用戶指南的第 3.1.3 節(jié)有說(shuō)明.stack.s 定義了系統(tǒng)模式堆棧的起始地址 .heap.s 為初始化庫(kù)函數(shù)的堆 , 是按 ADS 的編譯器要求編寫的
32、 . startup.s 向量表及初始化代碼 ,是根據(jù) CPU來(lái)編寫的 .第 54 問(wèn) :Q: 我不知道所選擇的 C 文件到底是用 ARM 還是 THUMB 編譯的 ,請(qǐng)大俠指點(diǎn) !A:看配套ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)7.1,7.2,73 節(jié).第 55 問(wèn) :Q:我重新建立了一個(gè)工程,沒(méi)有用模板,TEST. C 程序在編譯的時(shí)候提示 OS_EVENT 沒(méi)有申明,但是我看了代碼,TESTC 中包含了 CONFIG_EX.H,而 congif_ex.h 中又包含了include_ex.h, include_exh,這兩個(gè)頭文件又包 含了 ucos_ii.h,而 OS_EVENT 是在ucos_ii
33、.h 中申明的,不知道為什么會(huì)出現(xiàn)這種錯(cuò)誤 ,能不能給我一個(gè)比較合理的目錄結(jié)構(gòu)A:請(qǐng)參考我們光盤的目錄結(jié)構(gòu).最好使用我們的工程模板.第 56 問(wèn) :Q:請(qǐng)問(wèn),我現(xiàn)在做 2114 的產(chǎn)品開發(fā).出現(xiàn)以下問(wèn)題,特向您請(qǐng)教!問(wèn)題:我們開發(fā)的產(chǎn) 品要采樣,采用周期固定.于是我們采用 timer0 進(jìn)行時(shí)鐘觸發(fā),利用觸發(fā) 中斷程序 每 隔 10 毫秒采樣一次并顯示波形 .這都能很好的進(jìn)行 .但是在中斷程序里 面對(duì)幾個(gè)全局 變量賦值, 跳出中斷后卻不能使用該全局變量 .很是頭疼!請(qǐng)賜教!14框架如下 :u int 8 a ; / 全局變量void _irq funtimer0()a=0; / 在中斷函數(shù)里面
34、對(duì)全局變量賦值void fun1 ()uint 8 i;i= 0;i= a; / 出錯(cuò)位置,在調(diào)試過(guò)程中運(yùn)行到當(dāng)前位置 ,鼠標(biāo)移動(dòng)到變量 a 上 / 顯示數(shù)值是 0, 但是不能傳給 i,i 的值不會(huì)隨該命令改變 .因此 ,我在中斷函數(shù)中采集到的數(shù)據(jù)放到全局?jǐn)?shù)組中.采集完成關(guān)中斷后在用戶模式下的程序中來(lái)處理該數(shù)組 ,但是該數(shù)組中的數(shù)據(jù)也不能使用 !全局?jǐn)?shù)組變量占 1000 個(gè)字節(jié), IRQ 堆 棧長(zhǎng)度是 256.A:全局變量用 volatile 聲明.第 57 問(wèn) :Q:在 AXD 里打開 Debuger I nternals,在 Variable Name 里為什么沒(méi)有 P NSEL2,ADD
35、R,ADCR 等寄存器 要在哪里設(shè)置A:有些片內(nèi)外設(shè)寄存器是不能讀出,ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn) 上的 P33 頁(yè)有說(shuō)明及處理 方法 (在 Memory窗口寫入相應(yīng)寄存器地址 ).第 58 問(wèn) :Q:請(qǐng)問(wèn)不連 easyArm 板可不可以直接軟件調(diào)試程序 我是指如果想直接調(diào)軟件部分,能不能 在 ads 或 axd里直接調(diào)試 A:這和板子沒(méi)關(guān)系啊,你直接選 ARMulate 不就行了 ,注意把等 待 PLL 配置完那條語(yǔ)句屏蔽 就可以啦 !第 59 問(wèn) :Q:AXD 里面出現(xiàn) RDI Warning 00159: Could not open specified deviceport 誰(shuí)能告訴我
36、這個(gè)是問(wèn)題啊我一直搞不懂啊,全部是按照 ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)第 4 章上配的圖做 的啊,但是就是不能仿真啊 .A:請(qǐng)先按照光盤的 easyarm_d rive readme.txt 安裝驅(qū)動(dòng)程序.15第 60 問(wèn) :Q:1.在ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)的 2.6.3 節(jié)有說(shuō)到浮點(diǎn)數(shù)寄存器(F0-F7.) ,2104 是否具有這些寄存器2.如果 EasyArm 不支持浮點(diǎn)運(yùn)算 ,而我的程序需要用到浮點(diǎn)運(yùn)算 ,請(qǐng)問(wèn)可以實(shí)現(xiàn)嗎A:1. 沒(méi)有.2.用 C 就可以用浮點(diǎn)運(yùn)算 .第 61 問(wèn) :Q:EASYARM2104 的例子程序怎么都是調(diào)用 C 寫的程序,匯編那個(gè)怎么沒(méi)用的啊A: 按如下步驟進(jìn)行
37、處理 :1.在項(xiàng)目管理窗口中刪除原來(lái)的所有文件2.在項(xiàng)目管理窗口中增加匯編文件 * .S;3.編譯鏈接 ,調(diào)試 .第 62 問(wèn) :Q:請(qǐng)問(wèn)版主:在 AXD 調(diào)試軟件中,我單步運(yùn)行到一定時(shí)候,我想讓自己編的軟件從復(fù)位處 重新運(yùn)行,在AXD 軟件中EXECUTE 欄目中有單步,連續(xù),運(yùn)行到光標(biāo)處等功能,但 無(wú)復(fù) 位功能,如果要實(shí)現(xiàn)此功能,如何操作 A:我也沒(méi)有發(fā)現(xiàn),目前只能用重新裝載的操作實(shí)現(xiàn).第 63 問(wèn):Q:在 AXD 調(diào)試中,通過(guò)從 jtag 接口,連接上 lpc2106,出現(xiàn)如下信息TKSimulator for ADS, V1.2, 2003/08Software Supplied by
38、: ZLGMCUARM7T DMI- S, Little Endian在從 file|load imgage.文件,出現(xiàn)兩種情況 :1 .正常 ,完全能調(diào)試 ;2.出現(xiàn)問(wèn)題,如下:RDI Warning 00254: UnimplementedRDI message請(qǐng)問(wèn),這是錯(cuò)在哪里 如何解決 謝謝!A:可能是電源 或其他接插件接觸不良引起 .第 64 問(wèn):Q:請(qǐng)教幾個(gè)問(wèn)題:1. 移植中底層接口里的 _swi 關(guān)鍵字在 SDT 中能用嗎2.為什么在勘誤文檔中時(shí)鐘節(jié)拍服務(wù)子程序里去掉了開中斷及關(guān)中斷的宏3.時(shí)鐘節(jié)拍中斷的優(yōu)先級(jí)應(yīng)該設(shè)為最高嗎16A:1. 不知,請(qǐng)自己看一看軟件自帶文檔 .2.因?yàn)?/p>
39、中斷服務(wù)程序中肯定是關(guān)中斷的 .3 . 不必 .第 65 問(wèn) :Q:arm 匯編中的中括號(hào)是什么意思 比如下面的例子中括號(hào)是什么作用呀 PLLONSTARTldr r0,= PLLCONldr r1,=(0 xe8 12)+(0 x4 4)+0 x2)str r1, r0 A: 等效于:IF PLLONSTARTldr r0,= PLLCONIdr r1,= (0 xe8 12) + (0 x4 啟動(dòng) AXD.現(xiàn)象:數(shù)碼管能顯示不斷變化的數(shù)字 0-F 但是 AXD 的連接失敗,提示DBEWarning 00041:. 重復(fù)試了幾遍 ,現(xiàn)象相同 .請(qǐng)教原因以及對(duì)策 .A:剛才把我機(jī)器的 Win2
40、K 系統(tǒng)的用戶屬性從FOwerUser修改為Administrator就沒(méi) 問(wèn)題了 .可能是ADS/AXD 安裝的時(shí)候用了 Administrator 權(quán)限,在PowerUser下工作 有問(wèn)題吧.如果哪位老兄有類似問(wèn)題 ,不妨試一下這個(gè)方法 .第 67 問(wèn) :Q:在 I nit.s 中有這樣一段:ResetBL I nitStack ;初始化堆棧BL TargetResetI nit ;目標(biāo)板基本初始化B _m ain ; 跳轉(zhuǎn)到 c 語(yǔ)言入口 誰(shuí)知道m(xù)ai n ()函數(shù)的具體內(nèi)容假如我不需要調(diào)用庫(kù)函數(shù)的話,是否可以改為 Bmain A:看調(diào)試是匯編 代碼里有_main(),組成成分與一些鏈接
41、選項(xiàng)有關(guān).可以.但是全局變 量初始化不了 .17第 68 問(wèn) :Q:我在 C 中嵌入這樣一條語(yǔ)句_asmMRS R4,CPSR;STMFD SP!, R4;ORR R4,R4,0 x80;MSR CPSR_cxsf,R4會(huì)出新報(bào)錯(cuò)illegal write to sp版主和各位大俠有什么辦法解決阿A: 嵌入?yún)R編不能使用 SP.第 69 問(wèn) :Q:請(qǐng)問(wèn) ADS 如下的編譯錯(cuò)誤是什么意思L6221E:Executi on region ER_RO overlays with Execution region ER_ZI A:程序段內(nèi)存分配可能有問(wèn)題,RO(只讀),ZI(0 初始化)第 70 問(wèn) :
42、Q:在 axd 中有沒(méi)有運(yùn)行程序的時(shí)間計(jì)算器 keil 中就有那樣的東西.A有的,不過(guò)不是 時(shí)間而是執(zhí)行周期 ,可以換算成時(shí)間 .在 debugger internals 中,具體 可以參考幫助文檔第 71 問(wèn) :Q:我最初的 init.s 中沒(méi)有加入 heap 的分配和_user_initial_stackheap 函數(shù),結(jié)果程序 跳到 SWI 中死循環(huán) .我把他們加入后就好了 .或者不加入他們 ,把 B _main 改為 B main 也可以 .請(qǐng)問(wèn)何解 另外 ,就算目標(biāo)板會(huì)陷入死循環(huán) ,但是用軟件仿真卻可以正常運(yùn) 行.何解A:堆的位置沒(méi)有分配到有效的RAM 中.第 72 問(wèn) :Q:在 A
43、RM 匯編語(yǔ)言中,對(duì)立即數(shù)的有要求,我記得原來(lái)沒(méi)有這樣一說(shuō)了 .現(xiàn)在反而糊涂了,用立即數(shù)時(shí)候 ,很小心很忌諱 ,不回象 51 下隨心所欲的使用了 ,有對(duì)立即數(shù)熟悉的朋友 站出 來(lái)給大家釋疑 .A:如使用非法數(shù)據(jù)可以使用 Ird 送到寄存器的方法.首先在存儲(chǔ)器中定義一個(gè)常量,再 ldr 進(jìn)去,編譯器是這樣弄的 .可以看下面語(yǔ)句反匯 編的區(qū)別 ;int z= 0 x101 ;int z= 0Xff ;18第 73 問(wèn) :Q:請(qǐng)教各位:我在 AXD 中單步運(yùn)行一段程序后,想回到程序的開始重新運(yùn)行,除了重新加 載,還有其他方法或按鍵A: 你的程序有多大 程序在 FIash 運(yùn)行點(diǎn)擊 ReIoad Cu
44、rrent Image 也不需要 1 秒吧 或在代碼窗口 Set PC=0第 74 問(wèn) :0:在ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)程序清單 6.22 的 376 頁(yè)的 OS ntCtxSW_1 中:LDR R4, R6ADD SP,R4,# 68LDR LR,SP,# -8MSRCPSR_c,#(NoInt| SVC32Mode)MOV SP,R4LDMFD SP!,R4,R5LDR R3,=OsEnterSumSTR R4, R3MSR SPSR_cxsf,R5LDMFD SP!, R0-R12, LR PCA請(qǐng)問(wèn)高手:LDMFD SP, R0-R12, LR, PCA是不是恢復(fù)新任務(wù)工作寄存器和工
45、作模式,LR 寄存器一并得到恢復(fù) ,那么 ADD 指令后面的 LDRLR, SP, #-8 指令是不是可 以去掉 A:兩者恢復(fù)的是兩個(gè)不同處理器模式的LR.第 75 問(wèn) :Q:既然 option 頁(yè)中的 I mage entry Point 填入的是調(diào)試入口地址,那么在實(shí)際的程序運(yùn)行 當(dāng)中它是不會(huì)覆蓋代碼中的 ENTRY 入口聲明的,對(duì)嗎僅僅是為了調(diào)試的方便.A:Image entry Point 優(yōu)先.其實(shí)代碼中的 ENTRY 是為了確保代碼不被優(yōu)化掉 .第 76 問(wèn) :Q:我想使用標(biāo)準(zhǔn) C 語(yǔ)言的庫(kù)函數(shù),比如 mem set 在 string.h 中有定義,可是我直接包含# incIude
46、 , 但是編譯沒(méi)錯(cuò)誤 ,運(yùn)行確有錯(cuò)誤 ,應(yīng)當(dāng)怎么設(shè)置A:請(qǐng)使用最新的工程模板第 77 問(wèn) :Q: 軟件中斷是不是必須由 SWI 指令觸發(fā)A:可以直接用你定義成軟中斷的函數(shù)名啊.比如:19_SWI (0 x12 ) void myswi(void); / 聲明函數(shù)_asm / 調(diào)用方式 1swi 0 x12myswi (); / 調(diào)用方式 2第 78 問(wèn):Q:ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)程序清單 6.9 的程序是在哪里被調(diào)用的_user_initial_st ackheapLDR r0,= bott om_ of_heapMOV pc,lr20A:_main.千萬(wàn)別刪喲,否則出大事的.第 79 問(wèn)
47、:Q:LDR R0, = PI NSEL0 中= 是什么意思 這語(yǔ)句是取地址還是取地址中的內(nèi)容呢A:這是 LDR 偽指令,可用來(lái)加載 32 位立即數(shù)或地址,LDR R0,= PNSELO 是將 PI NSEL0 的 地 址加載到R0 中.第 80 問(wèn) :Q:我不明白SWIO和SWI 0X123456這兩條指令中的 0 禾口 0X123456 中有何用.有沒(méi)有應(yīng)用 SWI 的具體例子讓我看看A:那是特定的中斷入口地址,見 ADS_DeveloperGuide_D.pdf 下的 swi.第 81 問(wèn) :Q:SWI 的功能表嗎A:SWI 的功能表由 swi 異常服務(wù)程序決定 .很多時(shí)候由編程者自己決
48、定第 82 問(wèn) :Q:請(qǐng)問(wèn):我在實(shí)驗(yàn)?zāi)脑a進(jìn)行 ucos 移植時(shí)用的是例 1,但是在按照?qǐng)D 7.17 設(shè)置處 理 器的仿真器模式時(shí)enable comms channel view 和 semihost in 項(xiàng)為不可激活狀態(tài) . 為 什么,能否給一點(diǎn)提示A:在一些仿真器上使能了它們會(huì)影響swi 異常處理程序.第 83 問(wèn) :Q:請(qǐng)問(wèn)Unimplemented RDI message這個(gè)出錯(cuò)提示是什么意思啊還有,有的時(shí)候當(dāng)我用 axd load 個(gè).axf 文件時(shí),常常 loading 的沒(méi)完沒(méi)了,這是怎 么回事啊A:Unimplemented RDI message:為命令操作失敗,需要
49、重新連接.下載不結(jié)束為出現(xiàn)不正 常現(xiàn)象,請(qǐng)重新連接并下載 .如果每次都出現(xiàn)該現(xiàn)象請(qǐng)聯(lián)系我們 的技術(shù)支持 .第 84 問(wèn) :Q:各位高手好,我是 ARM 初學(xué)者我在程序調(diào)試中LDRPC,PCR2命令執(zhí)行后 PC 為什么= 0 x0000000 c, 在這條命令執(zhí)行前 PC+R2 地址上的值是 0 x0000000 c 嗎A:要使用軟件仿真.0 x0000000 C 是預(yù)取中止了 .Q:請(qǐng)問(wèn):ARM7 在初始化 CPU 堆棧時(shí),寄存器 CPSR 和 CPSR_c 有什么關(guān)系 CPSR_c 是在那 里 定義的A:這是 MSR 指令的語(yǔ)法,_后部分指定 CPSR 的域,請(qǐng)參考ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)
50、 上關(guān)于這條指令的說(shuō)明 .第 85 問(wèn) :Q:軟中斷 SWI 作底層接口的問(wèn)題.以下函數(shù)為啥要通過(guò)軟中斷調(diào)用,可以直接調(diào)用嗎OS_ TASK_SW() ,_OSStartHighTdy(),OS_ ENTER_ CR I TI CAL) ,OS_ EXI T_ CR I T I CA L() ,A: 在用戶模式或 Thumb 狀態(tài)不能直接調(diào)用 .第 86 問(wèn) :Q:ARM 的一條指令是 32b it 長(zhǎng), 但有時(shí)一個(gè)立即數(shù)也是 32bit, 這是如何解釋的A:指令中使用的立即數(shù)需要時(shí) 8 位數(shù)移位獲得,并非所有數(shù)都可以.第 87 問(wèn) :Q:請(qǐng)教:全局變量的值在復(fù)位(不斷電)后會(huì)不會(huì)自動(dòng)清零(用
51、光盤自帶的啟動(dòng)代碼)A:在 C 語(yǔ)言中一般會(huì)會(huì)初始化 0 或用戶指定的值,但這不是硬件自動(dòng)的 .第 88 問(wèn) :Q:the sett i ng files for* .mcp is locked!是什么問(wèn)題A: 文件屬性只讀 .第 89 問(wèn) :21Q:請(qǐng)問(wèn),關(guān)于 printf()在 ads 中怎么用不了謝謝! A:請(qǐng)用我們我們網(wǎng)站上下載 2104 的工程模板 ,它解決了這個(gè)問(wèn)題 .即使這樣,也不能真正使用 prinf.您還需要自己編寫一些底層函數(shù)才能使用,詳細(xì)參 考 ads 自帶的ADS_CompilerGuide_D.pdf.第 90 問(wèn) :Q:swi 的功能號(hào)是如何來(lái)的 它和 LR 寄存器
52、的值是何關(guān) 系 如 ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)程序清單 6.13LDREQ R0,LR,#-4 ;BI CEQ R0,R0,0 xff000000A:LDREQ R0,LR,# -4 ; 用來(lái)讀 SWI 的代碼BICEQ R0,R0,0 xff000000 ;是 ARM 方式進(jìn)入 ,取低 24bit第 91 問(wèn) :Q:請(qǐng)問(wèn)在 Targetlnit()中函數(shù)開始會(huì)執(zhí)行 srand(l NT32 U)Targetlnit),它是做什么用的A: ex1 用它來(lái)產(chǎn)生隨機(jī)數(shù)種子的 .Q:請(qǐng)問(wèn):我建立的工程中,所有源文件與 2104 附帶的光盤例子源文件相同,編譯鏈接也一 切正常 , 可就是不能到板子上跑
53、 !提示錯(cuò)誤是:向量中斷有錯(cuò)誤 ,無(wú)法自由運(yùn)行 !這是怎么回事 相同的源文件 ,加在你的工程里 ,正常;加到我的工程中就出錯(cuò) ! 我創(chuàng)建的是 ARM 可執(zhí)行映象 .A:vector.s 你自己的嗎 如果是要計(jì)算向量去的累加和了 .第 92 問(wèn):Q:請(qǐng)問(wèn):vectors.s 中DCD 0 xb9205 f80 的 0 xb9205f80 在實(shí)際運(yùn)用中需要改動(dòng)嗎A:不需要更改,除非改動(dòng)了向量表中的指令代碼.第 93 問(wèn) :Q:請(qǐng)問(wèn),為什么 queue 數(shù)據(jù)隊(duì)列,ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)上給畫成了環(huán)形A:因?yàn)轭^跟尾的指針指向一個(gè)地址,隊(duì)列邏輯上是環(huán)狀的.第 94 問(wèn) :Q:有沒(méi)有人成功的把一個(gè)數(shù)據(jù)
54、定義到程序空間里各種方法我都試了,是不是有什么編譯開關(guān)A:使用 con st 修飾,定義變量時(shí)帶初始化值,要定義為全局的變量.第 95 問(wèn) :Q:ads 里沒(méi)有 CODE 關(guān)鍵詞,怎樣使定義的字符串?dāng)?shù)組不占用 RAM 空間22A:const unsigned charstring第 96 問(wèn) :Q:在例程中 TI ME_test 中的 TI MEOUT 當(dāng)寫入時(shí)提示:Warnning! interrupt vectors data is not correct!Program you downloaded can not run freely!我不知怎樣改設(shè)置,哪位提醒一下A:中斷向量表的校驗(yàn)
55、和不為 0,用 AXD 看 0 地址的數(shù)據(jù)(32 位方式),自己加一下.注意把 高于 32 位的部分去掉 .第 97 問(wèn) :Q:請(qǐng)教各位:我做 TIMEOUT 實(shí)驗(yàn)(2104 板),Make 通過(guò),Debug 時(shí)出現(xiàn)了如下錯(cuò)誤提示: War nn ing! interr uptvect or s data is not corr ect!Program you downloaded can not r un freely!設(shè)置 Link: ARM Linkr0 base: 0 x00000000rw base: 0 x40003000image entry point :0 x00000000
56、 其它的沒(méi)變 !而我使用 ISP 完全可以下載而且可以運(yùn)行 !這可以說(shuō)是設(shè)置問(wèn)題 ,但是我實(shí)在找不到 !怎么辦A:請(qǐng)看一看配套ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)附錄 1,ISP 軟件可能對(duì)它進(jìn)行了處理,而 JTAG 沒(méi)有特殊處理第 98 問(wèn) :Q:* (volatile un signed int * )是什么意思例如* (v olatile unsign ed int *)addr 具體是什么意思A:分開來(lái)看(volatile unsigned int *)就是定義一個(gè)可變的無(wú)符號(hào)整形指針,前面的那 個(gè) * 就是取起內(nèi)容 .第 99 問(wèn) :Q:如何理解 #define VICI RQStatus(*
57、( volatile unsigned long *) OxFFFFFDOO)A宏定義,參考 C 語(yǔ)言的書籍 .(volatile unsigned long *) OxFFFFFOOO 將 OxFFFFFOOO 強(qiáng)行轉(zhuǎn)換為指針,然后 *(指 針) 即可對(duì)此地址進(jìn)行訪問(wèn) .第 1OO 問(wèn):Q:在異常處理向量表的設(shè)置中,為什么不直接將異常向量的入口地址寫入PC 中呢,為什么非要用什么 DCD 這些偽指令,到底有什么用啊 A 為了保證任何時(shí)候其累加和為零,不然改一 次程序就要計(jì)算一次 .23第 1O1 問(wèn):Q:?jiǎn)尾秸{(diào)試 i2clNT.C 在 ISendStr 中啟動(dòng)總線后,程序怎么又跑到 vect
58、ors.。中,進(jìn)行初 始化了呢A:由于 VIC 的限制,程序不能在 0 x18 停下來(lái),否則執(zhí)行非向量中斷.如果沒(méi)有設(shè)置,則非 向量中斷為 0,將從 0 地址執(zhí)行.建議:有中斷時(shí)不要單步執(zhí)行程序,可以手動(dòng)暫時(shí)關(guān)中斷或設(shè)置斷點(diǎn)代替單步 . (編者注:下載最新的驅(qū)動(dòng)可以解決這個(gè)問(wèn)題 )第 102 問(wèn):Q:請(qǐng)教:如何修改 ADS 的啟動(dòng)代碼,從_main 到 main,按道理應(yīng)該有一個(gè)文件,修改這 個(gè)小文件,就可以修改 啟動(dòng)代碼 .A:main 是 ADS 運(yùn)行庫(kù),最好不要修改,要是不使用庫(kù)就不要用 main()函數(shù),起個(gè)別的名 字.直接跳轉(zhuǎn)過(guò)去就行了 .詳見:ARM 體系結(jié)構(gòu)與編程P328.第 1
59、03 問(wèn) :Q:我在 JTAG 仿真時(shí)出現(xiàn)的對(duì)話框,提示:War nn ing! interr upt vect or s data is not corr ect!Program you downloaded can not r un freely!A:參見ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)附錄一第一個(gè)問(wèn)題的第二部分,選擇源代碼的啟動(dòng)代碼文件夾下的 vectors.s,并參照ARM 微控制器基礎(chǔ)與實(shí)戰(zhàn)圖 7.11 設(shè)置.第 104 問(wèn) : Q: 初始化代碼中分配 堆棧的問(wèn)題MSR CPSR_c,# 0 xd3 ;進(jìn)入特定的處理器模式LDR SP,StackSvc ;給當(dāng)前處理器模式的堆棧指針賦值,這
60、只是一個(gè)值而已,; 他在接下去的 DCD 語(yǔ)句賦值SvcStackSpace SPACE SVC_ST ACK_LEGT H * 4這個(gè)語(yǔ)句開辟一個(gè) SVCSTACK_LEGTH * 4 大小的內(nèi)存,SvcStackSpace 是這塊內(nèi)存的標(biāo) 號(hào),我想應(yīng)該就是內(nèi)存的首地址,這樣應(yīng)該好理解了 .StackSvc DCD Sv cSt a ckSpa ce + (SVC_STACK_LEGTH - 1)* 4 這個(gè)語(yǔ)句就是把這個(gè)首地址加 上堆棧大小值.A 計(jì)算出堆棧指針來(lái),我想這個(gè)堆棧是向下生長(zhǎng)的,所以 SP 賦值的是堆棧地址 最高的那個(gè) .第 105 問(wèn):Q:請(qǐng)問(wèn)啟動(dòng)代碼中這句是什么意思24_u ser
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 客戶溝通與反饋記錄
- 小王子遇見世界的觀后感
- 高中化學(xué)實(shí)驗(yàn)設(shè)計(jì)與探究:化學(xué)反應(yīng)原理教案
- 《初高中英語(yǔ)語(yǔ)法比較與辨析教案》
- 不動(dòng)產(chǎn)交易買賣協(xié)議書
- 中學(xué)生歷史事件故事讀后感
- 美容師儀器知識(shí)培訓(xùn)課件
- 血液++課件-2024-2025學(xué)年北師大版生物七年級(jí)下冊(cè)
- 紅色故事鐵道游擊隊(duì)的愛國(guó)主義教育解讀
- 教育資源整合及教育信息化建設(shè)方案
- 《當(dāng)代廣播電視概論》(廣播電視發(fā)明與技術(shù)基礎(chǔ))課件
- 核心能力模型庫(kù)(-勝任力模型-)
- 高中地理 紐約的發(fā)展 紐約的輻射功能 城市的輻射功能 作業(yè)設(shè)計(jì)
- 5.3.2.2函數(shù)的最大(?。┲?課件(共20張PPT)
- TSG-R0005-2022《移動(dòng)式壓力容器安全技術(shù)監(jiān)察規(guī)程》(2022版)
- 2020 ACLS-PC-SA課前自我測(cè)試試題及答案
- 上市公司組織架構(gòu)策略
- 上海交通大學(xué)有機(jī)化學(xué)課件第二章烷烴
- DB34∕T 3968-2021 橋梁健康監(jiān)測(cè)系統(tǒng)運(yùn)營(yíng)維護(hù)與管理規(guī)范
- 加氣混凝土砌塊砌筑規(guī)范標(biāo)準(zhǔn)[詳]
- 定語(yǔ)從句漢譯英
評(píng)論
0/150
提交評(píng)論