鏈接:https://pan.baidu.com/s/1-u7GvgM0TLuiy9z7LYQ80Q?pwd=1688
提取碼:1688文章來源:http://www.zghlxwxcb.cn/news/detail-820653.html
第1問:?????????? ?
????????? ?
Q:請問在初始化CPU堆棧的時候一開始在執(zhí)行mov r0, LR這句指令時處理器是什么模式?????????? ?
????????? ?
A:復位后的模式,即管理模式.?????????? ?
???????????????????? ?
第2問:?????????? ?
????????? ?
Q:請教:MOV中的8位圖立即數(shù),是怎么一回事 0xF0000001是怎么來的?????????? ?
????????? ?
A:是循環(huán)右移,就是一個0—255 之間的數(shù)左移或右移偶數(shù)位的來的,也就是這個數(shù)除以4?????????? ?
????????? ?
一直除, 直到在0-255的范圍內(nèi)它是整數(shù)就說明是可以的!?????????? ?
????????? ?
A:8位數(shù)(0-255)循環(huán)左移或循環(huán)右移偶數(shù)位得到的,F0000001既是0x1F循環(huán)右移4位,?????????? ?
????????? ?
符合規(guī)范,所以是正確的.這樣做是因為指令長度的限制,不可能把32位立即數(shù)放在?????????? ?
????????? ?
32位的指令中.移位偶數(shù)也是這個原因.可以看一看ARM體系結構(ADS自帶的英文文?????????? ?
????????? ?
檔)的相關部分.?????????? ?
????????????????????? ?
第3問:?????????? ?
????????? ?
Q:請教:《ARM微控制器基礎與實戰(zhàn)》2.2.1節(jié)關于第2個操作數(shù)的描述中有這么一段:?????????? ?
????????? ?
#inmed_8r常數(shù)表達式.該常數(shù)必須對應8位位圖,即常熟是由一個8位的常數(shù)循環(huán)移?????????? ?
????????? ?
位偶數(shù)位得到.?????????? ?
????????? ?
合法常量:0x3FC,0,0xF0000000,200,0xF0000001.?????????? ?
????????? ?
非法常量:0x1FE,511,0xFFFF,0x1010,0xF0000010.?????????? ?
????????? ?
常數(shù)表達式應用舉例:?????????? ?
????????? ?
...?????????? ?
????????? ?
...?????????? ?
????????? ?
LDR R0,[R1],#-4 ;讀取 R1 地址上的存儲器單元內(nèi)容,且 R1 = R1-4?????????? ?
????????? ?
?????????? ?
?????????? ?
????????? ?
針對這一段,我的疑問:?????????? ?
????????? ?
1. 即常數(shù)是由一個8位的常數(shù)循環(huán)移位偶數(shù)位得到,這句話如何理解?????????? ?
????????? ?
2. 該常數(shù)必須對應8位位圖,既然是8位位圖,那么取值為0-255,怎么0x3FC這種超?????????? ?
????????? ?
出255的數(shù)是合法常量呢?????????? ?
????????? ?
3. 所舉例子中,合法常量和非法常量是怎么區(qū)分的 如0x3FC合法,而0x1FE卻非法?????????? ?
????????? ?
0xF0000000,0xF0000001都合法,而0xF0000010又變成了非法?????????? ?
????????? ?
4. 對于匯編語句 LDR R0,[R1],#-4,是先將R1的值減4結果存入R1,然后讀取R1所?????????? ?
????????? ?
指單元的 值到R0,還是先讀取R1到R0,然后再將R1減4結果存入R1?????????? ?
????????? ?
A:提示,任何常數(shù)都可用底數(shù)*2的n次冪 來表示.?????????? ?
????????? ?
1. ARM結構中,只有8bits用來表示底數(shù),因此底數(shù)必須是8位位圖.?????????? ?
????????? ?
2. 8位位圖循環(huán)之后得到常數(shù),并非只能是8位.?????????? ?
????????? ?
3. 0xF0000010底數(shù)是9位,不能表示.?????????? ?
????????? ?
4. LDR R0, [R1], #-4 是后索引,即先讀,再減.?????????? ?
????????? ?
可以看一看ARM體系結構對相關尋址方式的說明.?????????? ?
?????????????????? ?
第4問:?????????? ?
????????? ?
Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,?????????? ?
????????? ?
有沒有一種標志或辦法能夠識別"代碼段處于什么樣的模式"?????????? ?
????????? ?
A:讀取 CPSR ,任何時候都是可以讀.?????????? ?
???????????????????? ?
第5問:?????????? ?
????????? ?
Q:為什么保護現(xiàn)場時,總是保護 R0-R3,R12,為什么不保護R4-R11?????????? ?
????????? ?
A:請看一看"ARM-thumb過程調(diào)用標準"這個文檔.?????????? ?
??????????????????? ?
第6問:?????????? ?
????????? ?
Q:請問 mov R1,#0x00003DD0 錯誤ut of the range of operation是怎么回事情?????????? ?
????????? ?
我就是想IODIR=0x00003dd0,匯編就是?????????? ?
????????? ?
LDR R0,=IODIR?????????? ?
????????? ?
MOV R1,#0x00003dd0?????????? ?
????????? ?
STR R1,[R0]?????????? ?
????????? ?
編譯時候說是超出操作范圍?????????? ?
????????? ?
A:使用ldr,mov的操作數(shù)為8位位圖數(shù).?????????? ?
??????????????????? ?
第7問:?????????? ?
????????? ?
Q:"在ARM7TDMI(-S)處理器內(nèi)部有37個用戶可見的寄存器:"?????????? ?
????????? ?
問題:"用戶可見"應該怎樣理解 這37個寄存器是否是37個不同的物理寄存器,?????????? ?
????????? ?
例如R8與R8_fiq應該是兩個不同的物理寄存器吧?????????? ?
????????? ?
A:用戶可見是指用戶可以通過程序操作的.R8與R8_fiq是兩個不同的寄存器.?????????? ?
???????????????????? ?
第8問:?????????? ?
????????? ?
Q:USR模式,SVC模式,IRQ模式分別有哪些限制?????????? ?
????????? ?
A:對于外設操作限制與芯片設計有關.USR模式不能設置CPSR寄存器.?????????? ?
????????? ?
用戶模式下無SPSR寄存器,代碼可以為ARM,Thumb.?????????? ?
???????????????????? ?
第9問:?????????? ?
????????? ?
Q:請問"在初始化堆棧時就決定了工作模式"是什么意思 如何決定工作模式的?????????? ?
????????? ?
A:設置CPSR寄存器.?????????? ?
????????? ?
?
??????????? 第10問:?????????? ?
??????????? Q:請問:ARM匯編程序設計中所謂的"文字池"作何理解?????????? ?
??????????? A:可以理解為常量數(shù)組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是?????????? ?
??????????? 地址.?????????? ?
?
?
?
??????????? 第11問:?????????? ?
??????????? Q:為什么在中斷向量表中不直接LDR PC,"異常地址".而是使用一個標號,然有再在后面?????????? ?
??????????? 使用DCD定義這個標號?????????? ?
??????????? A:因為LDR指令只能跳到當前PC 4kB范圍內(nèi),而B指令能跳轉到32MB范圍,而現(xiàn)在這樣?????????? ?
??????????? 在LDR PC, "xxxx"這條指令不遠處用"xxxx"DCD定義一個字,而這個字里面存放最終異?????????? ?
??????????? 常服務程序的地址,這樣可以實現(xiàn)4GB全范圍跳轉.?????????? ?
??????????? QDR 不是可以全空間跳轉的嗎 《ARM微控制器基礎與實戰(zhàn)》程序清單5.3.?????????? ?
??????????? ADR偽指令通過設置指令緩沖池才能實現(xiàn)全范圍跳轉,而LDR指令則只能實現(xiàn)4KB范圍?????????? ?
??????????? 跳轉.?????????? ?
?????????????? ?
??????????? 第12問:?????????? ?
??????????? Q:ARM7TDMI-S和ARM7TDMI有何區(qū)別?????????? ?
??????????? A:ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核).?????????? ?
??????????? 對應用工程師來說,除非芯片生產(chǎn)廠商對ARM7TDMI-S進行了裁減,?????????? ?
??????????? 否則ARM7TDMI-S與ARM7TDMI沒有太大的區(qū)別,其編程模型與ARM7TDMI一致.?????????? ?
?????????? ?
??????????? 第13問:?????????? ?
??????????? QCD偽指令的疑惑.?????????? ?
??????????? "StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4"?????????? ?
??????????? 這句話是什么意思 DCD后面的程序標號或數(shù)字表達式是何意?????????? ?
??????????? A:它的內(nèi)容是初始化遞減堆棧的最高地址,看《ARM微控制器基礎與實戰(zhàn)》2.3.2節(jié).?????????? ?
????????? ?
??????????? 第2章 編譯器與語言?????????? ?
??????????? 第14問:?????????? ?
??????????? Q:00254: Unimplemented RDI message是什么錯誤提示 我的設置連接都正常,是不是?????????? ?
??????????? 芯片燒了?????????? ?
??????????? A:是JTAG的問題.可以先使用ISP操作試試就知道了,如果能ISP,說明LPC2104沒有損?????????? ?
??????????? 壞,還能正常運行程序.?????????? ?
?????????? ?
???????????? 第15問:?????????? ?
??????????? Q:請教:我在調(diào)試程序的時候在AXD中出現(xiàn)這樣的提示信息:?????????? ?
??????????? RDI Warning 00159:could not open specified device port.?????????? ?
??????????? 我是根據(jù)配套教程的步驟設置的.?????????? ?
??????????? A:請按照光盤\\easyarm_drive\\readme.txt安裝驅(qū)動程序.?????????? ?
?????????? ?
??????????? ?
??????????? 第16問:?????????? ?
??????????? Q:我用實驗程序運行經(jīng)常出現(xiàn)下列信息! 程序不能下載到目標板.?????????? ?
??????????? Warnning! interrupt vectors data is not correct!?????????? ?
??????????? Program you downloaded can not run freely!?????????? ?
??????????? A:1.仿真器配置一定要正確,即"EasyARM Configuration"設置窗口中的"FLASH"項中選擇?????????? ?
??????????? "Erase Flash when need";?????????? ?
??????????? 2.向量表累加和要為0;?????????? ?
??????????? 3.可以先在RAM調(diào)試一個程序(運行),然后STOP,再使用File->Load Image...加載要?????????? ?
??????????? 下載到FLASH的調(diào)試文件.?????????? ?
?????????? ?
???????????? 第17問:?????????? ?
??????????? Q:在ADS中是否可以進行軟件調(diào)試基于UCOS-II的程序?????????? ?
??????????? A:ADS軟件調(diào)試只能調(diào)試ARM的內(nèi)核,不能調(diào)試外設.但是取消 PLL 鎖定檢測后,?????????? ?
??????????? 可以調(diào)試任務切換,最終到空閑任務上.開始移植時軟件仿真是最好的工具.?????????? ?
??????????? ?
??????????? 第18問:?????????? ?
??????????? Q:ARMulate軟件是干什么的 2104不是用EasyJTAG.dll來仿真嗎?????????? ?
??????????? A:軟件仿真只能仿真 ARM 核.?????????? ?
???????????? ?
??????????? 第19問:?????????? ?
??????????? Q:有關LPC2106.INC的問題.我無法在project引用lpc2106.inc文件,只能引用lpc2106.h?????????? ?
??????????? 文件, 這是什么原因 且當我的主程序用匯編編寫時,不能引用lpc2106.h,用?????????? ?
??????????? lpc2106.inc則無法加入project,請問匯編器應如何設置?????????? ?
??????????? A:不用加2106.inc只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加?????????? ?
??????????? 6?????????? ?
?????????? ?
?????????? ?
??????????? "include 2106.inc".?????????? ?
??????????? 注意:該文件是匯編文件定義的頭文件,定義內(nèi)部寄存器.?????????? ?
??????????????????????? ?
??????????? 第20問:?????????? ?
??????????? Q:入口點是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時總是提示我?????????? ?
??????????? Image does not have an entry point,可是我是把光盤的vetctors.s 復制過來的,?????????? ?
??????????? 而且仔細看了看,已經(jīng)聲明了ENTERY,這是怎么回事?????????? ?
??????????? A:需要在ADS中設置入口.?????????? ?
??????????? ?
??????????? 第21問:?????????? ?
??????????? Q:請教:如何定義不被初始化變量?????????? ?
??????????? A:讓編譯器不知道有這個內(nèi)存地址即可.?????????? ?
??????????? A:如用分散加載文件分配RAM故意預留一部分RAM不分配,用它來存您不需要初始化的東?????????? ?
??????????? 西.或者不調(diào)用編譯器提供的啟動代碼,不過這樣可能編程會麻煩一些.?????????? ?
???????????? ?
??????????? 第22問:?????????? ?
??????????? Q:我直接通過JTAG口下載EasyArm板帶的Ext1_test程序到ARM中,出現(xiàn)中斷向量的告警:?????????? ?
??????????? interrupt vector is not correct arm is not running freely.?????????? ?
??????????? 果然復位后芯片不能運行.但是我用串口下載后芯片能正常工作,中斷也行的.?????????? ?
??????????? 并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨JTAG口下載不行.?????????? ?
??????????? 不知道是什么原因?????????? ?
??????????? A:仿真器配置中要設置Erase Flash when need.也可以這樣試試:?????????? ?
??????????? 1.可以先打開一個工程在RAM中調(diào)試運行;?????????? ?
??????????? 2.stop程序;?????????? ?
??????????? 3.使用File->Load Image…重新加載Ext1_test生成的*.axf文件.?????????? ?
??????????? Q:仿真器配置中我是設置了Erase Flash when need,但照你說的話,那不是在RAM下調(diào)?????????? ?
??????????? 試嗎?????????? ?
??????????? 在RAM下調(diào)試我是可以的,但是下載后出現(xiàn)interrupt vector data is not correct.?????????? ?
??????????? 我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關系啊?????????? ?
??????????? A:是的,是向量表的累加和不為零.?????????? ?
??????????? 因為如果用ISP下載能運行,說明向量表的累加和已為零,而用JTAG下載不能運行的情?????????? ?
??????????? 況可能是 沒有正常下載代碼.先在RAM中調(diào)試,目的是為了后面正確下載程序到?????????? ?
??????????? FLASH.?????????? ?
??????????? ?
??????????? 第23問:?????????? ?
??????????? Q:用Scatter怎樣將某個函數(shù)或文件定位在Flash的某個位置?????????? ?
??????????? A:參考http://www.zlgmcu.com/download/downs.asp ID=1009?????????? ?
?????????? ?
???????????? ?
??????????? 第24問:?????????? ?
??????????? Q:我在仿真時遇到這樣的提示:?????????? ?
??????????? Error, Flash is protected by user configation!?????????? ?
??????????? 怎么寫到flash里面呢?????????? ?
??????????? A:看配套《ARM微控制器基礎與實戰(zhàn)》附錄一.?????????? ?
?????????? ?
?????????????? 第25問:?????????? ?
??????????? Q:我在移植實驗中想到了兩個問題,如下:?????????? ?
??????????? 1.Debug和Release以及DebugRel有什么不同,為什么在作2104移植實驗時,要用?????????? ?
??????????? Release?????????? ?
??????????? 2.在Release中為什么要將RW Base設置為0x40000040 我將其設置為0x40003000,?????????? ?
??????????? 為什么不能工作?????????? ?
??????????? A:都只是一個問題,內(nèi)存空間的使用,因為跑OS要比較大的內(nèi)存空間,所以要騰出點地方.?????????? ?
?
??????????? 第26問:?????????? ?
??????????? Q:請問沒有MMU的ARM芯片是否支持使用malloc()函數(shù)動態(tài)分配內(nèi)存?????????? ?
??????????? A:是否支持malloc()函數(shù)與芯片沒有多大關系,主要與編譯器有關.?????????? ?
??????????? Q:再問:如果沒有操作系統(tǒng)支持呢?????????? ?
??????????? A:也支持.?????????? ?
?????????? ?
???????????? 第27問:?????????? ?
??????????? Q:在I2C實驗程序中,我想查看數(shù)據(jù)緩沖區(qū)DataBuf的值,怎么查看?????????? ?
??????????? A:watch窗口或鼠標停留在要查看的變量名上.?????????? ?
??????????? Q:我查詢的是寫入DataBuf緩沖區(qū)的值,鼠標在上面根本就不會出現(xiàn)他的值,即使在watch?????????? ?
??????????? 中加入,?????????? ?
??????????? 結果也是"name not found".?????????? ?
??????????? A:變量被優(yōu)化,調(diào)試時可以把該變量定義為全局變量查看.?????????? ?
??????????? ?
??????????? 第28問:?????????? ?
??????????? Q:仿真軟件和2104開發(fā)板連接不上?????????? ?
??????????? DBE Warning 00041:?????????? ?
??????????? !An unspecified Debug Toolbox call failed?????????? ?
??????????? 電源和開發(fā)板都連好,錯誤和沒接開發(fā)板一樣,驅(qū)動也安裝了,安裝時按確定鍵時,軟?????????? ?
??????????? 件很長時間才有如上反應,請幫忙?????????? ?
??????????? A:1.并口是否正常?????????? ?
??????????? 2.在其它操作系統(tǒng)(如98)下或其它臺式PC下試試.?????????? ?
????????????? 第29問:?????????? ?
??????????? Q:如何生成32位hex文件?????????? ?
??????????? 8?????????? ?
?????????? ?
?????????? ?
??????????? 我在Release Setting->ARM fromELF->Output Format中設置為Intel 32bit HEX,可?????????? ?
??????????? 是好像沒有生成hex文件?????????? ?
??????????? A:試試這種方法:?????????? ?
??????????? Target-->Target Setting-->ost Link中選擇"ARM fromELF"加上你上面設的應該不?????????? ?
??????????? 成問題.?????????? ?
?????????? ?
?? 第30問:?????????? ?
??????????? Q:請問關于settings中r0 base rw base的意思?????????? ?
??????????? A:rread only,rw:read and write.?????????? ?
??????????? ?
??????????? 第31問:?????????? ?
??????????? Q:編譯成功后的信息第一行,code,R0 data,RW data,ZI data,debug分別代表什么?????????? ?
??????????? A:R0 只讀段,即程序代碼空間;?????????? ?
??????????? RW 可讀/寫段,即數(shù)據(jù)變量空間;?????????? ?
??????????? ZI 清零變量段,即需要清零初始化的數(shù)據(jù)變量空間.?????????? ?
?????????? ?
?
??????????? 第32問:?????????? ?
??????????? Q:如何在ADS里面看任務執(zhí)行的一些情況 比如堆棧.?????????? ?
??????????? A:多任務環(huán)境下的堆棧,內(nèi)存等信息需要調(diào)試軟件的支持才可以實現(xiàn).?????????? ?
??????????? ucos下有一個統(tǒng)計功能的模塊可以間接實現(xiàn)部分功能.?????????? ?
?????????? ?
?? ?
??????????? 第33問:?????????? ?
??????????? Q:請問向flash燒數(shù)據(jù)時出現(xiàn):exceeds flash limitation 請予賜教!?????????? ?
??????????? A:要寫入的flash地址超過了范圍.如果不是代碼太大的問題,可以檢查scf文件是否正?????????? ?
??????????? 確.?????????? ?
?
?????????? ?
??????????? 第34問:?????????? ?
??????????? Q:在LPC2214之類的芯片中如何實現(xiàn)數(shù)組的絕對地址定位,比如51的_at_的用法.?????????? ?
??????????? A:*((char*)0x40000300)類似訪問?????????? ?
??????????? Q:謝謝,但這樣做就無須定義數(shù)組變量,訪問也不便,還有高招嗎?????????? ?
??????????? A:可以使用分散加載.?????????? ?
?
??????????? 第35問:?????????? ?
??????????? Q:請問 ADS編譯錯誤"L6221E:Execution region ER_RO overlays with Execution region?????????? ?
??????????? ER_ZI" 該如何解決?????????? ?
??????????? A:請用我們網(wǎng)站上的工程模板試一試,最大的可能是因為你的RELEASE或者DEBUG選項里?????????? ?
??????????? 面沒有正確設置,按照參考《ARM微控制器基礎與實戰(zhàn)》上面的設置,是不會有這個問題的.
?
第36問:?????????? ?
??????????? Q:請教一下:將程序?qū)懭雈lash,再用從JTAG方式調(diào)試寫入之后再復位程序沒什么反映.?????????? ?
??????????? 看了很多以前的帖子,說memmap寄存器要為1,我用的是一個很簡單的控制led的例子,?????????? ?
??????????? 改動了參數(shù)之后寫入flash的.在這個程序的vectors中找不到關于memmap寄存器操作?????????? ?
??????????? 的部分啊,這是怎么回事,該怎么辦呢?????????? ?
??????????? A:《ARM微控制器基礎與實戰(zhàn)》上附錄有"常見問題",列舉了幾點程序?qū)懙紽LASH不能運?????????? ?
??????????? 行的原因. memmap操作可以在target.c中的TargetResetInit()函數(shù)內(nèi)添加.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第37問:?????????? ?
??????????? Q:HEX文件.EASY2100配套《ARM微控制器基礎與實戰(zhàn)》上講:把項目編譯成HEX文件,?????????? ?
??????????? 我不會呀,咋辦?????????? ?
??????????? A:Target-〉target settings設置Post-linker并且設置Linker-〉fromELF.?????????? ?
??????????? Q:再問:我用的是光盤里的例子,打開工程項目里是DebugInARM.DebugInFlash.?????????? ?
??????????? RelInFlash.不是《ARM微控制器基礎與實戰(zhàn)》上的DebugRel呀,我都照《ARM微控制?????????? ?
??????????? 器基礎與實戰(zhàn)》上設置的,可用ISP下載,提示無法找到HEX文件.?????????? ?
??????????? A:光盤上的例子是用專用工程模板建立,已經(jīng)設置好參數(shù),與默認模板不同.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第38問:?????????? ?
??????????? Q:EasyARM2100開發(fā)板如何通過JTAG接口下載到Flash?????????? ?
??????????? 我在用EasyARM2100開發(fā)板時JTAG接口不能進行Flash中的調(diào)試(DebugInFlash),但?????????? ?
??????????? 是可以在RAM中調(diào)試(DebugInRAM),且通過ISP編程可以寫入Flash.?????????? ?
??????????? 通過JTAG接口進行DebugInFlash調(diào)試時,總是出現(xiàn)如下提示:?????????? ?
??????????? Flash Sector 0 write failed!?????????? ?
??????????? Warnning interrupt vectors data is not correct!?????????? ?
??????????? Program you downloaded can not run freely!?????????? ?
??????????? 請問是什么原因 我該如何辦?????????? ?
??????????? A:仿真器設置選項有一個允許擦除FLASH的選項,選擇它.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第39問:?????????? ?
??????????? Q:我發(fā)現(xiàn)程序在RAM調(diào)試時(RO=0X40000000) OK,但是JTAG下載到FLASH(RO=0X00000000),?????????? ?
??????????? 顯示如下:?????????? ?
??????????? The session file \'c:\\Documents and Settings\\jan\\default-1-2-0-0.ses\'?????????? ?
??????????? could not be loaded.?????????? ?
??????????? A:這是ADS自身的問題,請不要通過IDE運行AXD,而是通過開始菜單運行,然后Load調(diào)?????????? ?
??????????? 試文件調(diào)試.?????????? ?
?????????? ?
第40問:?????????? ?
??????????? Q:我有幾個問題想問問大家.?????????? ?
??????????? 10?????????? ?
?????????? ?
?????????? ?
??????????? 調(diào)試主機負責對ARM源程序進行編譯鏈接,最好用什么樣的高級語言對ARM源程序進行?????????? ?
??????????? 編譯鏈接 使用調(diào)試程序(如AXD)進行JTAG調(diào)試,AXD是什么調(diào)試程序,是否是類?????????? ?
??????????? 似什么軟件之類的 到哪能下載AXD的調(diào)試程序呢 怎么樣進行AXD程序進行JTAG調(diào)?????????? ?
??????????? 試?????????? ?
??????????? 如何通過JTAG仿真器發(fā)送到目標機上呢?????????? ?
??????????? 對于單片機的調(diào)試,都用到了什么軟件?????????? ?
??????????? 都個有什么作用呢?????????? ?
??????????? A:可以使用 ADS1.2,Keil C也支持.AXD是ADS的一個組件.?????????? ?
??????????? 您可以在本公司網(wǎng)站下載 EasyARM2100開發(fā)套件快速入門看一看.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第41問:?????????? ?
??????????? Q:EasyARM2100AXD調(diào)試時出錯,故障現(xiàn)象:?????????? ?
??????????? 按照光盤上的方法設置好ADS1.2后打開光盤上的expamples\\gpio\\c\\LedDisp的工程文?????????? ?
??????????? 件(從光盤上拷貝到硬盤,已去處只讀屬性).?????????? ?
??????????? 編譯通過后,按Debug按鍵運行調(diào)試,進入AXD.按Go按鍵,EasyARM沒有反應.再按?????????? ?
??????????? Stop按鍵.?????????? ?
??????????? AXD彈出兩個確認框窗口:?????????? ?
??????????? "No disassembly could be read at the requested address".?????????? ?
??????????? 如果進入AXD直接按Step按鍵,也是會彈出同樣的兩個確認框.?????????? ?
??????????? 軟件是光盤上的,沒有經(jīng)過任何改動.光盤上的程序試過4,5個都是這種情況.?????????? ?
??????????? AXD的設置是按照光盤上的說明設置的.?????????? ?
??????????? EasyARM上的JP8 是斷開的.ADS在出現(xiàn)這種問題后重新安裝過,故障依舊.?????????? ?
??????????? 出現(xiàn)這個問題前,可以調(diào)試.只是單步的時候感覺比較慢.差不多1-2秒鐘才能單步一?????????? ?
??????????? 次.?????????? ?
??????????? A:原因找到了,是芯片被加密了,無法寫入新的程序,用FLASH ISP清除后解決.?????????? ?
??????????? 加密后JTAG完全不能控制芯片,否則可能被解密.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第42問:?????????? ?
??????????? Q:我板上的lpc2214開始可以在線編程,只搞了兩三次可以把文件寫進去.但我發(fā)現(xiàn)P0.14?????????? ?
??????????? 未置低電平時也進入ISP模式,燒入的文件原來可以ISP下載到2014開發(fā)板中運行的.?????????? ?
??????????? 最后只能讀芯片的一些ID,載文件都不能進行.以下是對整片ERASE時,對串口的捕獲,?????????? ?
??????????? 命令返回是19.?????????? ?
??????????? Synchronized?????????? ?
??????????? Synchronized?????????? ?
??????????? OK?????????? ?
??????????? 11059?????????? ?
??????????? OK?????????? ?
??????????? U 23130?????????? ?
??????????? 0?????????? ?
??????????? P 0 14?????????? ?
??????????? 0?????????? ?
??????????? E 0 14?????????? ?
??????????? 11?????????? ?
?????????? ?
?????????? ?
??????????? 19 configure tar... -> ARMUL , 只能仿真ARM核外設不能仿真.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第48問:?????????? ?
??????????? Q:為什么盤中的工程會出錯啊?????????? ?
??????????? A:文件的只讀屬性去掉了嗎?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第49問:?????????? ?
??????????? Q:您在2104的《ARM微控制器基礎與實戰(zhàn)》中提到ucos與應用代碼分開編譯,在分開編?????????? ?
??????????? 譯調(diào)試成功之后,最后要將代碼統(tǒng)一固化到芯片中.在最后一步需要注意什么 統(tǒng)一編?????????? ?
??????????? 譯時感覺要改動很多東西,有沒有什么最簡單的辦法 能否詳細介紹一下方法 多謝!?????????? ?
??????????? A:使用我們的工程模板,可在本公司網(wǎng)站下載.其實不分開編譯也可調(diào)試.?????????? ?
??????????? http://www.zlgmcu.com/tools/**/EasyARM2104.asp?????????? ?
??????????? 的EasyARM2104開發(fā)套件快速入門和LPC210...?????????? ?
?
?
第50問:?????????? ?
??????????? Q:請問,我的2104板子,通過EasyJTAG仿真時,在AXD上沒有文件,而且出現(xiàn)這樣?????????? ?
??????????? "Error, Flash is protected by user configation!"?????????? ?
??????????? 的提示,這是怎么回事啊 在AXD應該打開什么類型的文件啊 謝謝啦!!!!?????????? ?
??????????? A:在仿真器的配置窗口設置仿真器允許擦除FALSH.?????????? ?
??????????? AXD->Options->configure target->configure->erase……?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 13?????????? ?
?????????? ?
?????????? ?
??????????? 第51問:?????????? ?
??????????? Q:關于arm匯編語言跳轉指令的特殊用法.有如下兩條跳轉指令:?????????? ?
??????????? beq lablef?????????? ?
??????????? beq lableb?????????? ?
??????????? 其中l(wèi)able為某段程序的標號,beq lablef 表示向前跳轉到與當前指令最接近的標號?????????? ?
??????????? lable處執(zhí)行,而beq lableb表示向后跳轉到與當前指令最接近的標號lable處執(zhí)行.?????????? ?
??????????? 在arm匯編中有定義這樣的用法嗎?????????? ?
??????????? A:沒有.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第52問:?????????? ?
??????????? Q:我將一段程序從flash從復制到了RAM中,但是因為混合編程中不能直接向PC寄存器中?????????? ?
??????????? 賦值來實行跳轉,這樣我該如何跳轉到這個RAM中的地址呢?????????? ?
??????????? A:用函數(shù)指針.可參考IAP例子.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第53問:?????????? ?
??????????? Q:我想詳細的了解一下ADS開發(fā)工具中的stack.s ,heap.s和startup.s中代碼的含義,?????????? ?
??????????? 各位高手推薦本書或給解釋一下?????????? ?
??????????? A:開發(fā)套件用戶指南的第3.1.3節(jié)有說明.?????????? ?
??????????? stack.s定義了系統(tǒng)模式堆棧的起始地址.?????????? ?
??????????? heap.s為初始化庫函數(shù)的堆,是按ADS的編譯器要求編寫的.?????????? ?
??????????? startup.s向量表及初始化代碼,是根據(jù)CPU來編寫的.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第54問:?????????? ?
??????????? Q:我不知道所選擇的C文件到底是用ARM還是THUMB編譯的,請大俠指點!?????????? ?
??????????? A:看配套《ARM微控制器基礎與實戰(zhàn)》7.1,7.2,7.3節(jié).?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第55問:?????????? ?
??????????? Q:我重新建立了一個工程,沒有用模板,TEST.C程序在編譯的時候提示OS_EVENT沒有申?????????? ?
??????????? 明,但是我看了代碼,TEST.C中包含了CONFIG_EX.H,而congif_ex.h中又包含了?????????? ?
??????????? include_ex.h, include_ex.h,這兩個頭文件又包 含了ucos_ii.h,而OS_EVENT是在?????????? ?
??????????? ucos_ii.h中申明的,不知道為什么會出現(xiàn)這種錯誤,能不能給我一個比較合理的目錄?????????? ?
??????????? 結構?????????? ?
??????????? A:請參考我們光盤的目錄結構.最好使用我們的工程模板.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第56問:?????????? ?
??????????? Q:請問,我現(xiàn)在做2114的產(chǎn)品開發(fā).出現(xiàn)以下問題,特向您請教! 問題:?????????? ?
??????????? 我們開發(fā)的產(chǎn)品要采樣,采用周期固定.于是我們采用timer0進行時鐘觸發(fā),利用觸發(fā)?????????? ?
??????????? 中斷程序 每隔10毫秒采樣一次并顯示波形.這都能很好的進行.但是在中斷程序里?????????? ?
??????????? 面對幾個全局變量賦值, 跳出中斷后卻不能使用該全局變量.很是頭疼!請賜教!!?????????? ?
??????????? 14?????????? ?
?????????? ?
?????????? ?
??????????? 框架如下:?????????? ?
??????????? uint8 a; //全局變量?????????? ?
??????????? void __irq funtimer0()?????????? ?
??????????? {?????????? ?
??????????? ...?????????? ?
??????????? a=0; //在中斷函數(shù)里面對全局變量賦值?????????? ?
??????????? ...?????????? ?
??????????? }?????????? ?
?????????? ?
?????????? ?
??????????? void fun1()?????????? ?
??????????? {?????????? ?
??????????? uint8 i;?????????? ?
??????????? i=0;?????????? ?
??????????? .......?????????? ?
??????????? i=a; // 出錯位置,在調(diào)試過程中運行到當前位置,鼠標移動到變量a上?????????? ?
??????????? // 顯示數(shù)值是0,但是不能傳給i,i的值不會隨該命令改變.?????????? ?
??????????? ......?????????? ?
??????????? }?????????? ?
?????????? ?
?????????? ?
??????????? 因此,我在中斷函數(shù)中采集到的數(shù)據(jù)放到全局數(shù)組中.采集完成關中斷后在用戶模式下?????????? ?
??????????? 的程序中來處理該數(shù)組,但是該數(shù)組中的數(shù)據(jù)也不能使用!全局數(shù)組變量占1000個字節(jié),?????????? ?
??????????? IRQ堆棧長度是256.?????????? ?
??????????? A:全局變量用volatile聲明.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第57問:?????????? ?
??????????? Q:在AXD里打開Debuger Internals,在Variable Name里為什么沒有PINSEL2,ADDR,ADCR?????????? ?
??????????? 等寄存器 要在哪里設置?????????? ?
??????????? A:有些片內(nèi)外設寄存器是不能讀出,《ARM微控制器基礎與實戰(zhàn)》上的P33頁有說明及處理?????????? ?
??????????? 方法(在Memory窗口寫入相應寄存器地址).?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第58問:?????????? ?
??????????? Q:請問不連easyArm板可不可以直接軟件調(diào)試程序?????????? ?
??????????? 我是指如果想直接調(diào)軟件部分,能不能在ads或axd里直接調(diào)試?????????? ?
??????????? A:這和板子沒關系啊,你直接選ARMulate不就行了,注意把等待PLL配置完那條語句屏蔽?????????? ?
??????????? 就可以啦!?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第59問:?????????? ?
??????????? Q:AXD里面出現(xiàn) "RDI Warning 00159: Could not open specified device port"?????????? ?
??????????? 誰能告訴我這個是問題啊我一直搞不懂啊,全部是按照《ARM微控制器基礎與實戰(zhàn)》第4?????????? ?
??????????? 章上配的圖做的啊,但是就是不能仿真啊.?????????? ?
??????????? A:請先按照光盤的easyarm_drive\\readme.txt安裝驅(qū)動程序.?????????? ?
??????????? 15?????????? ?
?????????? ?
?????????? ?
第60問:?????????? ?
??????????? Q:1.在《ARM微控制器基礎與實戰(zhàn)》的2.6.3節(jié)有說到"浮點數(shù)寄存器(F0-F7...)",2104?????????? ?
??????????? 是否具有這些寄存器?????????? ?
??????????? 2.如果EasyArm不支持浮點運算,而我的程序需要用到浮點運算,請問可以實現(xiàn)嗎?????????? ?
??????????? A:1.沒有.?????????? ?
??????????? 2.用C就可以用浮點運算.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第61問:?????????? ?
??????????? Q:EASYARM2104的例子程序怎么都是調(diào)用C寫的程序,匯編那個怎么沒用的啊?????????? ?
??????????? A:按如下步驟進行處理:?????????? ?
??????????? 1.在項目管理窗口中刪除原來的所有文件;?????????? ?
??????????? 2.在項目管理窗口中增加匯編文件*.S;?????????? ?
??????????? 3.編譯鏈接,調(diào)試.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第62問:?????????? ?
??????????? Q:請問版主:在AXD調(diào)試軟件中,我單步運行到一定時候,我想讓自己編的軟件從復位處?????????? ?
??????????? 重新運行, 在AXD軟件中,EXECUTE欄目中有單步,連續(xù),運行到光標處等功能,但?????????? ?
??????????? 無復位功能,如果要實現(xiàn)此功能,如何操作?????????? ?
??????????? A:我也沒有發(fā)現(xiàn),目前只能用重新裝載的操作實現(xiàn).?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第63問:?????????? ?
??????????? Q:在AXD調(diào)試中,通過從jtag接口,連接上lpc2106,出現(xiàn)如下信息:?????????? ?
??????????? TKSimulator for ADS, V1.2, 2003/08?????????? ?
??????????? Software Supplied by: ZLGMCU?????????? ?
??????????? ARM7TDMI-S, Little Endian?????????? ?
?????????? ?
?????????? ?
??????????? 在從file|load imgage...文件,出現(xiàn)兩種情況:?????????? ?
??????????? 1.正常,完全能調(diào)試;?????????? ?
??????????? 2.出現(xiàn)問題,如下:?????????? ?
??????????? RDI Warning 00254: Unimplemented RDI message?????????? ?
??????????? 請問,這是錯在哪里 如何解決 謝謝!?????????? ?
??????????? A:可能是電源或其他接插件接觸不良引起.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第64問:?????????? ?
??????????? Q:請教幾個問題:?????????? ?
??????????? 1.移植中底層接口里的__swi關鍵字在SDT中能用嗎?????????? ?
??????????? 2.為什么在勘誤文檔中時鐘節(jié)拍服務子程序里去掉了開中斷及關中斷的宏?????????? ?
??????????? 3.時鐘節(jié)拍中斷的優(yōu)先級應該設為最高嗎?????????? ?
??????????? 16?????????? ?
?????????? ?
?????????? ?
??????????? A:1.不知,請自己看一看軟件自帶文檔.?????????? ?
??????????? 2.因為中斷服務程序中肯定是關中斷的.?????????? ?
??????????? 3.不必.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第65問:?????????? ?
??????????? Q:arm匯編中的中括號是什么意思 比如下面的例子中括號是什么作用呀?????????? ?
??????????? [ PLLONSTART?????????? ?
??????????? ldr r0,=PLLCON?????????? ?
??????????? ldr r1,=((0xe8<<12)+(0x4<<4)+0x2)?????????? ?
??????????? str r1,[r0]?????????? ?
??????????? ]?????????? ?
??????????? A:等效于:?????????? ?
??????????? IF PLLONSTART?????????? ?
??????????? ldr r0,=PLLCON?????????? ?
??????????? ldr r1,=((0xe8<<12)+(0x4<上電->啟動AXD.現(xiàn)象:數(shù)碼管能?????????? ?
??????????? 顯示不斷變化的數(shù)字0--F,但是AXD的連接失敗,提示"DBE Warning 00041: ....".?????????? ?
??????????? 重復試了幾遍,現(xiàn)象相同.?????????? ?
??????????? 請教原因以及對策.?????????? ?
??????????? A:剛才把我機器的Win2K系統(tǒng)的用戶屬性從"PowerUser"修改為"Administrator"就沒?????????? ?
??????????? 問題了.可能是ADS/AXD安裝的時候用了Administrator權限,在"PowerUser"下工作?????????? ?
??????????? 有問題吧.?????????? ?
??????????? 如果哪位老兄有類似問題,不妨試一下這個方法.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第67問:?????????? ?
??????????? Q:在Init.s中有這樣一段:?????????? ?
??????????? Reset?????????? ?
??????????? BL InitStack ;初始化堆棧?????????? ?
??????????? BL TargetResetInit ;目標板基本初始化?????????? ?
??????????? B __main ;跳轉到c語言入口?????????? ?
??????????? 誰知道__main()函數(shù)的具體內(nèi)容?????????? ?
??????????? 假如我不需要調(diào)用庫函數(shù)的話,是否可以改為B main?????????? ?
??????????? A:看調(diào)試是匯編代碼里有__main(),組成成分與一些鏈接選項有關.?????????? ?
??????????? 可以.但是全局變量初始化不了.?????????? ?
?????????? ?
?????????? ?
??????????? 17?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第68問:?????????? ?
??????????? Q:我在C中嵌入這樣一條語句?????????? ?
??????????? __asm?????????? ?
??????????? {?????????? ?
??????????? MRS R4,CPSR;?????????? ?
??????????? STMFD SP!,{R4};?????????? ?
??????????? ORR R4,R4,0x80;?????????? ?
??????????? MSR CPSR_cxsf,R4?????????? ?
??????????? }?????????? ?
??????????? 會出新報錯"illegal write to sp"版主和各位大俠有什么辦法解決阿?????????? ?
??????????? A:嵌入?yún)R編不能使用SP.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第69問:?????????? ?
??????????? Q:請問 ADS如下的編譯錯誤是什么意思?????????? ?
??????????? L6221E:Execution region ER_RO overlays with Execution region ER_ZI?????????? ?
??????????? A:程序段內(nèi)存分配可能有問題,RO(只讀),ZI(0初始化)
?
?
?
?
第70問:?????????? ?
??????????? Q:在axd中有沒有運行程序的時間計算器 keil中就有那樣的東西.?????????? ?
??????????? A:有的,不過不是時間而是執(zhí)行周期,可以換算成時間.在debugger internals中,具體?????????? ?
??????????? 可以參考幫助文檔.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第71問:?????????? ?
??????????? Q:我最初的init.s中沒有加入heap的分配和__user_initial_stackheap函數(shù),結果程序?????????? ?
??????????? 跳到SWI中死循環(huán).我把他們加入后就好了.或者不加入他們,把B __main改為B main?????????? ?
??????????? 也可以.請問何解 另外,就算目標板會陷入死循環(huán),但是用軟件仿真卻可以正常運?????????? ?
??????????? 行.何解?????????? ?
??????????? A:堆的位置沒有分配到有效的RAM中.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第72問:?????????? ?
??????????? Q:在ARM匯編語言中,對立即數(shù)的有要求,我記得原來沒有這樣一說了.現(xiàn)在反而糊涂了,?????????? ?
??????????? 用立即數(shù)時候,很小心很忌諱,不回象51下隨心所欲的使用了,有對立即數(shù)熟悉的朋友?????????? ?
??????????? 站出來給大家釋疑.?????????? ?
??????????? A:如使用"非法數(shù)據(jù)可以使用lrd送到寄存器"的方法.?????????? ?
??????????? 首先在存儲器中定義一個常量,再ldr進去,編譯器是這樣弄的.可以看下面語句反匯?????????? ?
??????????? 編的區(qū)別;?????????? ?
??????????? int z=0x101;?????????? ?
??????????? int z=0Xff;?????????? ?
?????????? ?
?????????? ?
??????????? 18?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第73問:?????????? ?
??????????? Q:請教各位:我在AXD中單步運行一段程序后,想回到程序的開始重新運行,除了重新加?????????? ?
??????????? 載,?????????? ?
??????????? 還有其他方法或按鍵?????????? ?
??????????? A:你的程序有多大 程序在Flash運行點擊Reload Current Image也不需要1秒吧~?????????? ?
??????????? 或在代碼窗口Set PC=0?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第74問:?????????? ?
??????????? Q:在《ARM微控制器基礎與實戰(zhàn)》程序清單6.22的376頁的OSIntCtxSW_1中:?????????? ?
??????????? LDR R4, [R6]?????????? ?
??????????? ADD SP, R4, #68?????????? ?
??????????? LDR LR, [SP, #-8]?????????? ?
??????????? MSR CPSR_c, #(NoInt | SVC32Mode)?????????? ?
??????????? MOV SP, R4?????????? ?
?????????? ?
?????????? ?
??????????? LDMFD SP!, {R4,R5}?????????? ?
??????????? LDR R3, =OsEnterSum?????????? ?
??????????? STR R4, [R3]?????????? ?
??????????? MSR SPSR_cxsf, R5?????????? ?
??????????? LDMFD SP!, {R0-R12, LR, PC }^?????????? ?
?????????? ?
?????????? ?
??????????? 請問高手DMFD SP!, {R0-R12, LR, PC }^是不是恢復新任務工作寄存器和工作模式,?????????? ?
??????????? LR寄存器一并得到恢復,那么ADD指令后面的 LDR LR, [SP, #-8] 指令是不是可?????????? ?
??????????? 以去掉?????????? ?
??????????? A:兩者恢復的是兩個不同處理器模式的LR.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第75問:?????????? ?
??????????? Q:既然option頁中的Image entry Point填入的是調(diào)試入口地址,那么在實際的程序運行?????????? ?
??????????? 當中它是不會 覆蓋代碼中的ENTRY入口聲明的,對嗎 僅僅是為了調(diào)試的方便.?????????? ?
??????????? A:Image entry Point優(yōu)先.其實代碼中的ENTRY是為了確保代碼不被優(yōu)化掉.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第76問:?????????? ?
??????????? Q:我想使用標準C語言的庫函數(shù),比如memset 在string.h中有定義,可是我直接包含?????????? ?
??????????? #include , 但是編譯沒錯誤,運行確有錯誤,應當怎么設置?????????? ?
??????????? A:請使用最新的工程模板?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第77問:?????????? ?
??????????? Q:軟件中斷是不是必須由SWI指令觸發(fā)?????????? ?
??????????? A:可以直接用你定義成軟中斷的函數(shù)名啊.比如:?????????? ?
??????????? 19?????????? ?
?????????? ?
?????????? ?
??????????? __SWI(0x12) void myswi(void); // 聲明函數(shù)?????????? ?
?????????? ?
?????????? ?
??????????? __asm // 調(diào)用方式1?????????? ?
??????????? {?????????? ?
??????????? swi 0x12?????????? ?
??????????? }?????????? ?
?????????? ?
?????????? ?
??????????? myswi(); // 調(diào)用方式2?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第78問:?????????? ?
??????????? Q:《ARM微控制器基礎與實戰(zhàn)》程序清單6.9的程序是在哪里被調(diào)用的?????????? ?
??????????? _user_initial_stackheap?????????? ?
??????????? LDR r0,=bottom_of_heap?????????? ?
??????????? MOV pc,lr?????????? ?
??????????? A:__main.千萬別刪喲, 否則出大事的.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第79問:?????????? ?
??????????? Q:"LDR R0, =PINSEL0" 中"="是什么意思 這語句是取地址還是取地址中的內(nèi)容呢?????????? ?
??????????? A:這是LDR偽指令,可用來加載32位立即數(shù)或地址,LDR R0,=PINSEL0是將PINSEL0的地?????????? ?
??????????? 址加載到R0中.?????????? ?
?????????? ?
?????????? ?
?
第80問:?????????? ?
??????????? Q:我不明白 0"和 0X123456"這兩條指令中的0和0X123456中有何用.?????????? ?
??????????? 有沒有應的具體例子讓我看看?????????? ?
??????????? A:那是特定的中斷入口地址,見ADS_DeveloperGuide_D.pdf下.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第81問:?????????? ?
??????????? Q的功能表嗎?????????? ?
??????????? A的功能表異常服務程序決定.很多時候由編程者自己決定.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第82問:?????????? ?
??????????? Q:請問:我在實驗您的原代碼進行ucos移植時用的是例1,但是在按照圖7.17設置處理?????????? ?
??????????? 器的仿真器模式時enable comms channel view 和semihostin項為不可激活狀態(tài).為?????????? ?
??????????? 什么,能否給一點提示?????????? ?
??????????? A:在一些仿真器上使能了它們會影異常處理程序.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第83問:?????????? ?
??????????? Q:請問"Unimplemented RDI message"這個出錯提示是什么意思啊?????????? ?
??????????? 20?????????? ?
?????????? ?
?????????? ?
??????????? 還有,有的時候當我用axd load一個.axf文件時,常常loading的沒完沒了,這是怎?????????? ?
??????????? 么回事啊?????????? ?
??????????? A:Unimplemented RDI message:為命令操作失敗,需要重新連接.?????????? ?
??????????? 下載不結束為出現(xiàn)不正?,F(xiàn)象,請重新連接并下載.如果每次都出現(xiàn)該現(xiàn)象請聯(lián)系我們?????????? ?
??????????? 的技術支持.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第84問:?????????? ?
??????????? Q:各位高手好,我是ARM初學者我在程序調(diào)試中"LDR PC,[PC,R2]"命令執(zhí)行后PC為什么?????????? ?
??????????? =0x0000000c, 在這條命令執(zhí)行前PC+R2地址上的值是0x0000000c嗎?????????? ?
??????????? A:要使用軟件仿真.0x0000000C是預取中止了.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? Q:請問:ARM7在初始化CPU堆棧時,寄存器CPSR和CPSR_c有什么關系 CPSR_c是在那里?????????? ?
??????????? 定義的?????????? ?
??????????? A:這是MSR指令的語法,"_"后部分指定CPSR的域,請參考《ARM微控制器基礎與實戰(zhàn)》?????????? ?
??????????? 上關于這條指令的說明.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第85問:?????????? ?
??????????? Q:軟中作底層接口的問題.以下函數(shù)為啥要通過軟中斷調(diào)用,可以直接調(diào)用嗎?????????? ?
??????????? OS_TASK_SW(),?????????? ?
??????????? _OSStartHighTdy(),?????????? ?
??????????? OS_ENTER_CRITICAL),?????????? ?
??????????? OS_EXIT_CRITICAL(),?????????? ?
??????????? A:在用戶模式或Thumb狀態(tài)不能直接調(diào)用.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第86問:?????????? ?
??????????? Q:ARM的一條指令是32bit長, 但有時一個立即數(shù)也是32bit, 這是如何解釋的?????????? ?
??????????? A:指令中使用的立即數(shù)需要時8位數(shù)移位獲得,并非所有數(shù)都可以.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第87問:?????????? ?
??????????? Q:請教:全局變量的值在復位(不斷電)后會不會自動清零 (用光盤自帶的啟動代碼)?????????? ?
??????????? A:在C語言中一般會會初始化0或用戶指定的值,但這不是硬件自動的.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第88問:?????????? ?
??????????? Q:the setting files for *.mcp is locked!是什么問題?????????? ?
??????????? A:文件屬性只讀.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第89問:?????????? ?
??????????? 21?????????? ?
?????????? ?
?????????? ?
??????????? Q:請問,關于printf() 在ads中怎么用不了 謝謝!?????????? ?
??????????? A:請用我們我們網(wǎng)站上下載2104的工程模板,它解決了這個問題.?????????? ?
??????????? 即使這樣,也不能真正使用prinf.您還需要自己編寫一些底層函數(shù)才能使用,詳細參?????????? ?
??????????? 考ads自帶的ADS_CompilerGuide_D.pdf.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
第90問:?????????? ?
??????????? Q:swi的功能號是如何來的 它和LR寄存器的值是何關系?????????? ?
??????????? 如《ARM微控制器基礎與實戰(zhàn)》程序清單6.13?????????? ?
??????????? LDREQ R0,[LR,#-4] ;BICEQ R0,R0,0xff000000?????????? ?
??????????? ADREQ R0,[LR,#-4] ;用來讀SWI的代碼?????????? ?
??????????? BICEQ R0,R0,0xff000000 ;是ARM 方式進入,取低24bit?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第91問:?????????? ?
??????????? Q:請問在TargetInit()中函數(shù)開始會執(zhí)行srand((INT32U)TargetInit),它是做什么用的?????????? ?
??????????? A:ex1用它來產(chǎn)生隨機數(shù)種子的.?????????? ?
?????????? ?
?????????? ?
??????????? Q:請問:我建立的工程中,所有源文件與2104附帶的光盤例子源文件相同,編譯鏈接也一?????????? ?
??????????? 切正常, 可就是不能到板子上跑!?????????? ?
??????????? 提示錯誤是:向量中斷有錯誤,無法自由運行!!?????????? ?
??????????? 這是怎么回事 相同的源文件,加在你的工程里,正常;加到我的工程中就出錯!?????????? ?
??????????? 我創(chuàng)建的是ARM可執(zhí)行映象.?????????? ?
??????????? A:vector.s你自己的嗎 如果是要計算向量去的累加和了.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第92問:?????????? ?
??????????? Q:請問:vectors.s中"DCD 0xb9205f80" 的0xb9205f80在實際運用中需要改動嗎?????????? ?
??????????? A:不需要更改,除非改動了向量表中的指令代碼.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第93問:?????????? ?
??????????? Q:請問,為什么queue數(shù)據(jù)隊列,《ARM微控制器基礎與實戰(zhàn)》上給畫成了環(huán)形?????????? ?
??????????? A:因為頭跟尾的指針指向一個地址,隊列邏輯上是環(huán)狀的.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第94問:?????????? ?
??????????? Q:有沒有人成功的把一個數(shù)據(jù)定義到程序空間里 各種方法我都試了,是不是有什么編譯?????????? ?
??????????? 開關?????????? ?
??????????? A:使用const修飾,定義變量時帶初始化值,要定義為全局的變量.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第95問:?????????? ?
??????????? Q:ads里沒有CODE關鍵詞,怎樣使定義的字符串數(shù)組不占用RAM空間?????????? ?
??????????? 22?????????? ?
?????????? ?
?????????? ?
??????????? A:const unsigned char string[]?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第96問:?????????? ?
??????????? Q:在例程中TIME_test中的TIMEOUT當寫入時提示:?????????? ?
??????????? Warnning! interrupt vectors data is not correct!?????????? ?
??????????? Program you downloaded can not run freely!?????????? ?
??????????? 我不知怎樣改設置,哪位提醒一下?????????? ?
??????????? A:中斷向量表的校驗和不為0,用AXD看0地址的數(shù)據(jù)(32位方式),自己加一下.注意把?????????? ?
??????????? 高于32位的部分去掉.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第97問:?????????? ?
??????????? Q:請教各位:我做TIMEOUT實驗(2104板),Make通過,Debug時出現(xiàn)了如下錯誤提示:?????????? ?
??????????? Warnning! interrupt vectors data is not correct!?????????? ?
??????????? Program you downloaded can not run freely!?????????? ?
??????????? 設置Link:ARM Link?????????? ?
??????????? r0 base:0x00000000?????????? ?
??????????? rw base:0x40003000?????????? ?
??????????? image entry point:0x00000000 其它的沒變!!?????????? ?
??????????? 而我使用ISP完全可以下載而且可以運行!這可以說是設置問題,但是我實在找不到!?????????? ?
??????????? 怎么辦?????????? ?
??????????? A:請看一看配套《ARM微控制器基礎與實戰(zhàn)》附錄1,ISP軟件可能對它進行了處理,而JTAG?????????? ?
??????????? 沒有特殊處理?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第98問:?????????? ?
??????????? Q:*(volatile unsigned int *)是什么意思 例如*(volatile unsigned int *)addr具體?????????? ?
??????????? 是什么意思?????????? ?
??????????? A:分開來看,(volatile unsigned int *)就是定義一個可變的無符號整形指針,前面的那?????????? ?
??????????? 個*就是取起內(nèi)容.?????????? ?
?????????? ?
?????????? ?
?????????? ?
?????????? ?
??????????? 第99問:?????????? ?
??????????? Q:如何理解#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))?????????? ?
??????????? A:宏定義,參考C語言的書籍.?????????? ?
??????????? (volatile unsigned long *) 0xFFFFF000 將0xFFFFF000強行轉換為指針,然后 *(指?????????? ?
??????????? 針) 即可對此地址進行訪問.?????????? ?
?????????? ?
?????????? ?
第100問:?????????? ?
??????????? Q:在異常處理向量表的設置中,為什么不直接將異常向量的入口地址寫入PC中呢,為什么?????????? ?
??????????? 非要用什么DCD這些偽指令,到底有什么用啊?????????? ?
??????????? A:為了保證任何時候其累加和為零,不然改一次程序就要計算一次.?????????? ?
??????????? 23文章來源地址http://www.zghlxwxcb.cn/news/detail-820653.html
到了這里,關于嵌入式培訓機構四個月實訓課程筆記(完整版)-Linux ARM平臺編程第一天-ARM常見問題1-100問(物聯(lián)技術666)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!