久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4884|回復: 0
打印 上一主題 下一主題
收起左側

ARM學習之經典40問答不可不看

[復制鏈接]
跳轉到指定樓層
樓主
ID:53623 發表于 2013-9-27 14:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
第1問:
    Q:請問在初始化CPU堆棧的時候一開始在執行movr0, LR這句指令時處理器是什么模式
    A:復位后的模式,即管理模式。
    第2問:
    Q:請教:MOV中的8位圖立即數,是怎么一回事0xF0000001是怎么來的
    A:是循環右移,就是一個0—255 之間的數左移或右移偶數位的來的,也就是這個數除以4一直除, 直到在0-255的范圍內它是整數就說明是可以的!
    A:8位數(0-255)循環左移或循環右移偶數位得到的,F0000001既是0x1F循環右移4位,符合規范,所以是正確的。這樣做是因為指令長度的限制,不可能把32位立即數放在32位的指令中。移位偶數也是這個原因。可以看一看arm體系結構(ADS自帶的英文文檔)的相關部分。
    第3問:
    Q:請教:《arm微控制器基礎與實戰》2.2.1節關于第2個操作數的描述中有這么一段:#inmed_8r常數表達式。該常數必須對應8位位圖,即常熟是由一個8位的常數循環移位偶數位得到。
    合法常量:0x3FC,0,0xF0000000,200,0xF0000001.
    非法常量:0x1FE,511,0xFFFF,0x1010,0xF0000010.
    常數表達式應用舉例:
    …
    …
    LDRR0,[R1],#-4 ;讀取 R1 地址上的存儲器單元內容,且 R1 = R1-4
    針對這一段,我的疑問:
    1. 即常數是由一個8位的常數循環移位偶數位得到,這句話如何理解
    2. 該常數必須對應8位位圖,既然是8位位圖,那么取值為0-255,怎么0x3FC這種超出255的數是合法常量呢
    3. 所舉例子中,合法常量和非法常量是怎么區分的如0x3FC合法,而0x1FE卻非法0xF0000000,0xF0000001都合法,而0xF0000010又變成了非法
    4. 對于匯編語句LDR R0,[R1],#-4,是先將R1的值減4結果存入R1,然后讀取R1所指單元的 值到R0,還是先讀取R1到R0,然后再將R1減4結果存入R1
    A:提示,任何常數都可用底數*2的n次冪來表示。
    1. arm結構中,只有8bits用來表示底數,因此底數必須是8位位圖。
    2. 8位位圖循環之后得到常數,并非只能是8位。
    3.0xF0000010底數是9位,不能表示。
    4. LDR R0,[R1], #-4 是后索引,即先讀,再減。
    可以看一看arm體系結構對相關尋址方式的說明。
    第4問:
    Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,有沒有一種標志或辦法能夠識別"代碼段處于什么樣的模式"
    A:讀取 CPSR ,任何時候都是可以讀。
    第5問:
    Q:為什么保護現場時,總是保護R0-R3,R12,為什么不保護R4-R11
    A:請看一看"arm-thumb過程調用標準"這個文檔。
    第6問:
    Q:請問 movR1,#0x00003DD0 錯誤:  out of the range ofoperation是怎么回事情 我就是想IODIR=0x00003dd0,匯編就是
    LDR R0,=IODIR
    MOV R1,#0x00003dd0
    STR R1,[R0]
    編譯時候說是超出操作范圍
    A:使用ldr,mov的操作數為8位位圖數。
    第7問:
    Q:"在arm7TDMI(-S)處理器內部有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:可以理解為常量數組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。
    第11問:
    Q:為什么在中斷向量表中不直接LDRPC,"異常地址".而是使用一個標號,然有再在后面使用DCD定義這個標號
    A:因為LDR指令只能跳到當前PC4kB范圍內,而B指令能跳轉到32MB范圍,而現在這樣在LDR PC, "xxxx"這條指令不遠處用"xxxx"DCD定義一個字,而這個字里面存放最終異常服務程序的地址,這樣可以實現4GB全范圍跳轉。
    Q: LDR 不是可以全空間跳轉的嗎《arm微控制器基礎與實戰》程序清單5.3.
    A: LDR偽指令通過設置指令緩沖池才能實現全范圍跳轉,而LDR指令則只能實現4KB范圍跳轉。
    第12問:
    Q:ARM7TDMI-S和arm7TDMI有何區別
    A:ARM7TDMI-S是ARM7TDMI的可綜合(synthesizable)版本(軟核)。 對應用工程師來說,除非芯片生產廠商對ARM7TDMI-S進行了裁減,否則ARM7TDMI-S與ARM7TDMI沒有太大的區別,其編程模型與arm7TDMI一致。
    第13問:
    Q: DCD偽指令的疑惑。
    "StackUsr DCD UsrStackSpace + (USR_STACK_LEGTH - 1) * 4"
    這句話是什么意思 DCD后面的程序標號或數字表達式是何意
    A:它的內容是初始化遞減堆棧的最高地址,看《arm微控制器基礎與實戰》2.3.2節。
    第2章 編譯器與語言
    第14問:
    Q:00254:Unimplemented RDI message是什么錯誤提示 我的設置連接都正常,是不是芯片燒了
    A:是JTAG的問題。可以先使用ISP操作試試就知道了,如果能ISP,說明LPC2104沒有損壞,還能正常運行程序。
    第15問:
    Q:請教:我在調試程序的時候在AXD中出現這樣的提示信息:
    RDI Warning 00159:could not open specified deviceport.
    我是根據配套教程的步驟設置的。
    A:請按照光盤\easyarm_drive\readme.txt安裝驅動程序。
    第16問:
    Q:我用實驗程序運行經常出現下列信息!程序不能下載到目標板。
    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調試一個程序(運行),然后STOP,再使用File->Load Image…加載要下載到FLASH的調試文件。
    第17問:
    Q:在ADS中是否可以進行軟件調試基于UCOS-II的程序
    A:ADS軟件調試只能調試arm的內核,不能調試外設。但是取消PLL 鎖定檢測后,可以調試任務切換,最終到空閑任務上。開始移植時軟件仿真是最好的工具。
    第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只要該文件在你的工程文件夾中,就可以直接在匯編程序的開始處加
   "include 2106.inc".
    注意:該文件是匯編文件定義的頭文件,定義內部寄存器。
    第20問:
    Q:入口點是什么意思 我在使用LPC2106上移植UCOS-II,每次MAKE時總是提示我Image does not have an entry point,可是我是把光盤的vetctors.s 復制過來的,而且仔細看了看,已經聲明了ENTERY,這是怎么回事
    A:需要在ADS中設置入口。
    第21問:
    Q:請教:如何定義不被初始化變量
    A:讓編譯器不知道有這個內存地址即可。
    A:如用分散加載文件分配RAM故意預留一部分RAM不分配,用它來存您不需要初始化的東西。或者不調用編譯器提供的啟動代碼,不過這樣可能編程會麻煩一些。
    第22問:
    Q:我直接通過JTAG口下載EasyArm板帶的Ext1_test程序到arm中,出現中斷向量的告警:
    interrupt vector is not correct arm is notrunning freely.
    果然復位后芯片不能運行。但是我用串口下載后芯片能正常工作,中斷也行的。
    并且我用JTAG仿真的話,芯片能正常工作,中斷也行的,唯獨JTAG口下載不行。
    不知道是什么原因
    A:仿真器配置中要設置EraseFlash when need.也可以這樣試試:
    1.可以先打開一個工程在RAM中調試運行;
    2.stop程序;
    3.使用File->LoadImage…重新加載Ext1_test生成的*.axf文件。
    Q:仿真器配置中我是設置了EraseFlash when need,但照你說的話,那不是在RAM下調試嗎
    在RAM下調試我是可以的,但是下載后出現interruptvector data is not correct.
    我又看了幾篇文章,是不是跟中斷向量表的累加和不為零有關系啊
    A:是的,是向量表的累加和不為零。
    因為如果用ISP下載能運行,說明向量表的累加和已為零,而用JTAG下載不能運行的情況可能是沒有正常下載代碼。先在RAM中調試,目的是為了后面正確下載程序到FLASH.
    第23問:
    Q:用Scatter怎樣將某個函數或文件定位在Flash的某個位置
    第24問:
    Q:我在仿真時遇到這樣的提示:
    Error, Flash is protected by userconfigation!
    怎么寫到flash里面呢
    A:看配套《arm微控制器基礎與實戰》附錄一。
    第25問:
    Q:我在移植實驗中想到了兩個問題,如下:
    1.Debug和Release以及DebugRel有什么不同,為什么在作2104移植實驗時,要用Release
    2.在Release中為什么要將RWBase設置為0x40000040 我將其設置為0x40003000,
    為什么不能工作
    A:都只是一個問題,內存空間的使用,因為跑OS要比較大的內存空間,所以要騰出點地方。
    第26問:
    Q:請問沒有MMU的arm芯片是否支持使用malloc()函數動態分配內存
    A:是否支持malloc()函數與芯片沒有多大關系,主要與編譯器有關。
    Q:再問:如果沒有操作系統支持呢
    A:也支持。
    第27問:
    Q:在I2C實驗程序中,我想查看數據緩沖區DataBuf的值,怎么查看
    A:watch窗口或鼠標停留在要查看的變量名上。
    Q:我查詢的是寫入DataBuf緩沖區的值,鼠標在上面根本就不會出現他的值,即使在watch中加入,結果也是"name not found".
    A:變量被優化,調試時可以把該變量定義為全局變量查看。
    第28問:
    Q:仿真軟件和2104開發板連接不上
    DBE Warning 00041:
    !An unspecified Debug Toolbox call failed
    電源和開發板都連好,錯誤和沒接開發板一樣,驅動也安裝了,安裝時按確定鍵時,軟件很長時間才有如上反應,請幫忙
    A:1.并口是否正常
    2.在其它操作系統(如98)下或其它臺式PC下試試。
    第29問:
    Q:如何生成32位hex文件
    我在ReleaseSetting->arm fromELF->Output Format中設置為Intel 32bit HEX,可是好像沒有生成hex文件
    A:試試這種方法:
   Target-->Target Setting--> ost Link中選擇"arm fromELF"加上你上面設的應該不成問題。
    第30問:
    Q:請問關于settings中r0base rw base的意思
    A:ro:read only,rw:read and write.
    第31問:
    Q:編譯成功后的信息第一行,code,R0data,RW data,ZI data,debug分別代表什么
    A:R0 只讀段,即程序代碼空間;
    RW 可讀/寫段,即數據變量空間;
    ZI 清零變量段,即需要清零初始化的數據變量空間。
    第32問:
    Q:如何在ADS里面看任務執行的一些情況比如堆棧。
    A:多任務環境下的堆棧,內存等信息需要調試軟件的支持才可以實現。
    ucos下有一個統計功能的模塊可以間接實現部分功能。
    第33問:
    Q:請問向flash燒數據時出現:exceedsflash limitation 請予賜教!
    A:要寫入的flash地址超過了范圍。如果不是代碼太大的問題,可以檢查scf文件是否正確。
    第34問:
    Q:在LPC2214之類的芯片中如何實現數組的絕對地址定位,比如51的_at_的用法。
    A:*((char*)0x40000300)類似訪問
    Q:謝謝,但這樣做就無須定義數組變量,訪問也不便,還有高招嗎
    A:可以使用分散加載。
    第35問:
    Q:請問 ADS編譯錯誤"L6221E:Executionregion ER_RO overlays with Execution region
    ER_ZI" 該如何解決
    A:請用我們網站上的工程模板試一試,最大的可能是因為你的RELEASE或者DEBUG選項里面沒有正確設置,按照參考《arm微控制器基礎與實戰》上面的設置,是不會有這個問題的。
    第36問:
    Q:請教一下:將程序寫入flash,再用從JTAG方式調試寫入之后再復位程序沒什么反映。看了很多以前的帖子,說memmap寄存器要為1,我用的是一個很簡單的控制led的例子,改動了參數之后寫入flash的。在這個程序的vectors中找不到關于memmap寄存器操作的部分啊,這是怎么回事,該怎么辦呢
    A:《arm微控制器基礎與實戰》上附錄有"常見問題",列舉了幾點程序寫到FLASH不能運行的原因。memmap操作可以在target.c中的TargetResetInit()函數內添加。
    第37問:
    Q:HEX文件。EASY2100配套《arm微控制器基礎與實戰》上講:把項目編譯成HEX文件,我不會呀,咋辦
    A:Target-〉targetsettings設置Post-linker并且設置Linker-〉fromELF.
    Q:再問:我用的是光盤里的例子,打開工程項目里是DebugInarm.DebugInFlash.
    RelInFlash.不是《ARM微控制器基礎與實戰》上的DebugRel呀,我都照《arm微控制器基礎與實戰》上設置的,可用ISP下載,提示無法找到HEX文件。
    A:光盤上的例子是用專用工程模板建立,已經設置好參數,與默認模板不同。
    第38問:
   Q:Easyarm2100開發板如何通過JTAG接口下載到Flash
    我在用Easyarm2100開發板時JTAG接口不能進行Flash中的調試(DebugInFlash),但是可以在RAM中調試(DebugInRAM),且通過ISP編程可以寫入Flash.
    通過JTAG接口進行DebugInFlash調試時,總是出現如下提示:
    Flash Sector 0 write failed!
    Warnning interrupt vectors data is notcorrect!
    Program you downloaded can not run freely!
    請問是什么原因 我該如何辦
    A:仿真器設置選項有一個允許擦除FLASH的選項,選擇它。
    第39問:
    Q:我發現程序在RAM調試時(RO=0X40000000)OK,但是JTAG下載到FLASH(RO=0X00000000),
    顯示如下:
    The sessionfile 'c:\Documents and Settings\jan\default-1-2-0-0.ses'
    could not beloaded.
    A:這是ADS自身的問題,請不要通過IDE運行AXD,而是通過開始菜單運行,然后Load調試文件調試。
    第40問:
    Q:我有幾個問題想問問大家。
    調試主機負責對ARM源程序進行編譯鏈接,最好用什么樣的高級語言對arm源程序進行編譯鏈接使用調試程序(如AXD)進行JTAG調試,AXD是什么調試程序,是否是類似什么軟件之類的 到哪能下載AXD的調試程序呢 怎么樣進行AXD程序進行JTAG調試
    如何通過JTAG仿真器發送到目標機上呢
    對于單片機的調試,都用到了什么軟件
    都個有什么作用呢
    A:可以使用ADS1.2,Keil C也支持。AXD是ADS的一個組件。
    您可以在下載Easyarm2100開發套件快速入門看一看。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草在线 | www.国产精品 | 国产91久久精品一区二区 | 91亚洲精品国偷拍自产在线观看 | 99久久夜色精品国产亚洲96 | 91在线视频播放 | 国产一区 | 涩涩视频在线观看 | 中文字幕高清 | 日韩欧美一区二区三区免费观看 | 亚州无限乱码 | 九九热精品在线 | 亚洲国产精品99久久久久久久久 | 成人精品一区二区 | 伊人久久大香线 | 嫩草视频免费 | 国产在线第一页 | 欧美成人精品激情在线观看 | 久久com| 成人欧美一区二区三区黑人孕妇 | 国产亚洲一区二区三区在线 | 亚洲日韩视频 | 亚洲三区在线观看 | 日韩一区二区三区在线播放 | 午夜电影一区二区 | 亚洲一二三在线观看 | 亚洲欧美国产一区二区三区 | 亚洲精品丝袜日韩 | 久久国产精品偷 | 啪啪免费 | 91精品国产一区二区在线观看 | 亚洲巨乳自拍在线视频 | 久久国产一区二区三区 | 一级毛片观看 | 综合网在线 | 中文字幕日韩欧美一区二区三区 | 中文字幕第十页 | 日韩中文一区二区三区 | 一区二区三区在线看 | 国产日韩欧美一区二区 | 久久综合一区 |