1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      ARM嵌入式學習經典10問

      更新時間: 2012-09-26 16:31:48來源: 粵嵌教育瀏覽量:3775


        在嵌入式學習過程中,基于ARM核的嵌入式芯片必不可少。那么,在學習ARM嵌入式知識或開發中,嵌入式工程師會遇到哪些不可預知的問題?哪些問題會在嵌入式的學習中成為您的攔路虎?為了盡量為讀者掃清這些令人困惑的障礙,故粵嵌整理推出《ARM嵌入式學習經典10問》,以饗讀者。

        第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.對于匯編語句LDRR0,[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.LDRR0,[R1],#-4是后索引,即先讀,再減。

        可以看一看arm體系結構對相關尋址方式的說明。

        第4問:

        Q:在程序移植的過程中,什么代碼段處于什么樣的模式,這可真是一個困擾人的大難題,有沒有一種標志或辦法能夠識別“代碼段處于什么樣的模式”?

        A:讀取CPSR,任何時候都是可以讀。

        第5問:

        Q:為什么保護現場時,總是保護R0-R3,R12,為什么不保護R4-R11?

        A:請看一看“arm-thumb過程調用標準”這個文檔。

        第6問:

        Q:請問movR1,#0x00003DD0錯誤:outoftherangeofoperation是怎么回事情我就是想IODIR=0x00003dd0,匯編就是

        LDRR0,=IODIR

        MOVR1,#0x00003dd0

        STRR1,[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:可以理解為常量數組,文字池中保存的是常量,這些常量可以是正常的常量,也可以是地址。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 视频一区二区三区自拍偷拍 | 在线观看91免费精品国产拍在线 | 亚洲日韩乱码人人爽人人澡人人 | 亚洲国产欧美丝袜精品一区 | 在线看片免费人成视频国产片 | 亚洲精品中文字幕制服丝袜 |