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

標題: ARM面試題 [打印本頁]

作者: 51黑tt    時間: 2016-3-5 04:04
標題: ARM面試題
ARM階段測試題答案
ARM體系結構
1、   請簡述ARM處理器的特點,至少說出5個以上的特點。(5分)
低功耗;低成本,高性能,RISC結構;指令定長;支持Thumb16位)/ARM32位)雙指令集;體積小;
2、   請寫出ARM內核和ARM SoC處理器的異同,并舉例進行說明。(5分)
ARM內核是ARM SoC處理器中的核心部分,所有ARM SoC都采用ARM的體系結構和指令集ARM SoC主要是在ARM 內核基礎上繼承了Memory ControllerInterrupt ControllerTimerDMA Controller 以及像 GPIOUSBIICLCD 等外設控制器
   ARM內核有多少種工作模式?請寫出這些工作模式的英文縮寫。(7分)
ARM7種工作模式usr(用戶模式)、sys(系統模式)、svcirqabtundfiq
   ARM內核有多少個寄存器,請列舉出這些寄存器的名字和數量。(5分)
ARM37個寄存器,(1)未分組寄存器:R0-R7,共8;(2)分組寄存器R8-R14,其中FIQ模式下有單獨的一組R8-R125個,另外6種模式共用一組R8-R12,共5USRSYS模式共用一組R13-R14,共2個,另外5種模式下各有獨自的一組R13-R14,共10;(3程序計數器PCR15寄存器,共1個;4狀態寄存器CPSR,和5個備份狀態寄存器SPSR,共6個;ARM總計37個寄存器。
   ARM通用寄存器中,有3個寄存器有特殊功能和作用,請寫出它們的名字和作用。(6分)
R13SP棧指針寄存器,用來保存程序執行時的棧指針位置;R14LR返回鏈接寄存器,用來保存程序執行BL指令或模式切換時的返回原程序繼續執行的地址;R15PC程序計數器,保存程序執行的當前地址。
6、   請描述一下CPSR寄存器中相關Bit的情況和作用。(5分)
條件位(指令進行算術運算后的結果是否有進位,借位等),IIRQ異常允許位),FFIQ異常允許位),TARM/Thumb工作狀態),模式位(處理器工作模式)
7、   請寫出以下相關ARM指令語句的注釋:(7分)
MOV   R0, PC PC的值傳送到 R0寄存器此時PC地址為當前指令位置8                                                           
ADD        R0,  R1, #1           R1加上1的結果給R0寄存器                                                        
LDR        R0,        =0x56000010  偽指令0x56000010放到R0寄存器中采用文字池技術。                                                           
LDR        PC,  [PC, #4]       把當前PC值加4位置的內容賦值給PC,實現絕對跳轉     
MRS        R0,  CPSR            CPSR的值傳送給R0                                                         
BL           LOOP           帶返回地址的跳轉指令,把下一條指令給LR后,跳轉到Loop 地址                                                     
STMFD    R13!,{R0-R12} 壓棧指令,把R0R12寄存器的值通過R13棧指針進行壓棧保存,同時這個棧是滿遞減方式的棧。
8、   什么是立即數?請簡要描述立即數在使用時有什么注意要點。(2分)
立即數,主要是指尋址時直接在指令中出現的數,在使用時注意(1立即數前需要加#2ARM指令只有32位長,立即數在指令中占12位存儲空間,ARM用這12位空間8位表示有效數字-基數B4位表示譯為的數M,按照把B循環右移M*2,構造成一個新的32位的數,其它位補0,所以在使用立即數時,要注意其是否合法。
9、   請問BL指令跳轉時LR寄存器保存的是什么內容?并請簡述原因。(3分)
BL跳轉時,LR中保存的是執行BL跳轉指令的下一條指令的地址,考慮流水線的情況,即當前的PC-4LR用來在需要返回程序時從LR中還原程序執行的位置繼續執行。
10、              請描述一下什么是處理器現場,如何進行保存現場?(5分)
每種工作模式下都包含R0-R15CPSR17個寄存器,程序的執行當前狀態就保存在這些寄存器中,稱為處理器現場。當發生模式切換時,由于其中的一些寄存器是多種模式下共用的寄存器,為了防止共用處理器寄存器中的值被破壞,所以需要保存原模式下的處理器現場,利用STM批量存儲指令,把處理器現場對應的寄存器保存到棧上,待還原時再出棧恢復(模式和返回地址)。其中保存現場的工作,硬件完成了CPSR模式的保存和PC返回地址的保存其他寄存器的保存工作主要依靠軟件壓棧完成,其中LR因為可能被異常處理程序中的BL跳轉指令修改,所以一般都需要軟件壓棧再保存
11、              請描述一下什么是小尾端Littler-Endian存儲格式,如何編程確定處理器的存儲格式?(2分)
小尾端:低地址存低字節,高地址存高字節。測試:按字節打印int型的0x12345678,如是小尾端,則先打78.(通過 union 的方式也可以實現測試是否是小尾端)
12、              請寫出一條完整的ARM軟件中斷指令,并簡要描述其作用。(2分)
SWI 0x1SWI指令觸發軟中斷異常,使程序的執行流跳轉到異常向量表地址0x80x1是軟中斷的中斷號,軟中斷處理程序可根據不同的中斷號調用對應的處理子程序。一般SWI軟中斷都用于操作系統的系統調用。
13、              請描述一下ARM體系中異常向量表的概念。(7分)
異常向量表是0x0地址開始,一共32個字節,包含8個表項,其中有1個保留不用,其他7個表項對應7種異常發生后的跳轉位置,這7種異常發生后分別對應到5種異常模式每個表項里面放的一般都是一條跳轉指令,用來跳轉到真正的異常處理程序入口,通過B指令,或者LDR PC[PC, #?] 的方式都可以實現此類跳轉。
14、              產生軟中斷和硬中斷異常時,程序計數器跳轉到的地址是哪里?(2分)
軟中斷:0x8,硬中斷:0x18
15、              請寫出發生異常后,在進行異常響應時,硬件完成了哪些工作?(5分)
異常響應時:(1)硬件自動保存程序的返回地址到要切換的工作模式下的LR中;(2)硬件自動保存CPSR到要切換的工作模式下的SPSR中;(3)修改CPSR的模式位;(4)映射相應模式下的寄存器;(5)設置PC跳轉到要進入的異常向量表的入口地址。
ARM SOC編程開發
16、              請寫出一個ARM程序生成的bin文件映像中包含哪些內容?(3分)
ARM生成的bin文件包含RO,RW 兩個段,注意 ZI 段一般都不在 bin 文件中占用存儲空間。
17、              請寫出完整編譯生成bin文件的命令行:使用文件為 start.s  main.c  (5)
armasm start.s –o start.o
armcc –c main.c –o main.o
armlink start.o main.o –first start.o –o main.axf
fromelf –bin main.axf –o main.bin
18、              請寫出armlink時經常使用的參數選項及其作用,不少于3個。(3分)
-first 指定目標二進制文件哪個鏈接時放在存儲的最前面;-entry 指定程序的入口地址,即程序從哪里開始首先執行;-ro-base 指定程序鏈接時RO段采用的內部加載基址;-rw-base 指定RW段加載時的加載地址。
19、              請舉例說明在ARM處理器上進行一次中斷處理和中斷異常處理的差異。(3分)
中斷處理相比異常處理,主要是中斷需要初始化中斷源和中斷控制器中斷發生后在ISR中要清除相應Pending,而且要在進入中斷處理程序一開始就清除。
20、              請寫出從中斷異常進行返回時,軟件編程要處理的事項和注意要點。(2分)
1返回地址LR的調整。2在恢復PC同時,恢復CPSR(恢復原來的模式,返回被打斷的地址。)
21、              請詳細描述我們在S3C2440開發板實驗過程中進行串口初始化的流程和要點。(5分)
時鐘頻率設置(MPLLPCLK的設置),串口數據位8位,停止位1位,奇偶校驗無,波特率設置需要根據PCLK代入公式進行計算等
22、              請詳細描述我們在S3C2440開發板實驗過程中進行按鍵中斷觸發的流程和要點。(8分)
SVCIRQ模式下的SP棧指針設置,IO管腳復用設置,設置按鈕的觸發模式(下降沿觸發),管腳的中斷模式使能,中斷掩碼寄存器屏蔽位打開,清除PND寄存器中的pending位,打開CPSR-I位;
23、              請說明S3C2440處理器,關于 memory map 的情況。(5分)
2440memory分為8bank每個bank固定大小為128M,每個bank均可以產生一個片選信號,共1G的地址空間8個片選信號,bank0-bank5用來存放SROM器件bank6bank7用來存放SDRAM器件
24、              請詳細描述 bootloader 啟動代碼的設計流程,并說明你目前所實現的bootloader已經完成的功能有哪些,實現中遇到了哪些困難和bug問題? 5分)
bootloader的設計流程:硬件的初始化1)初始化看門狗(2)關中斷(3)設置處理器時鐘(4)初始化SDRAM器件(5)初始化串口(6)實現shell命令解釋器功能,(7) 提供通過串口的下載功能download和執行功能go。要求能夠講的出你自己實現bootloader過程中遇到的實際問題和解決辦法,這個很重要。
25、              請說明以下代碼中可能存在的3bug,并給出解決辦法。(3分)
#define UART_BASE  0x50000000
#define UTRSTAT0   *(volatile unsigned int *) UART_BASE+0x10
#define UTXH0   *(volatile unsigned int *) UART_BASE+0x20
int mainvoid
{
if( UTRSTAT0 & 0x4 == 0x4 )   
UTXH0 = 'a';  
      return 0;
}
(1) UART_BASE+0x10應該加上括號(2& 的優先級比 == 要低,所以要加括號。(3) if應該改為while( !(UTRSTAT0 & 0x4) )
附加題:
請說明SRAM, SDRAM, Nor Flash Nand Flash的異同,并詳細描述各自編程上的注意要點。
異同見教材,編程上要注意說明 SRAMNorFlash無須初始化就可以使用SDRAMNandFlash都需要初始化驅動代碼才可以工作NorFlash的寫需要靠芯片手冊規定的時序來做STR指令不能夠直接寫入NorFlashNandFlash,但可以直接寫入SRAMSDRAM NandFlash器件是屬于IO方式進行讀,和其他3種器件的總線讀方式不一樣,因此讀寫NandFlash需要相應的驅動







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 天天操天天插天天干 | 91高清免费| 久久高清 | 国产成人免费视频 | 亚洲91精品 | 国产精品久久久久久久久久久免费看 | 免费看国产片在线观看 | 国产日屁 | 亚洲精品在线观 | 麻豆视频国产在线观看 | 日韩精品一 | 国产999精品久久久久久 | 久草免费在线视频 | 国产精品久久av | 国产色婷婷久久99精品91 | 天堂一区二区三区 | 中文字幕日韩欧美一区二区三区 | 国产精品久久久久久亚洲调教 | 欧美一级特黄aaa大片在线观看 | 亚洲精品91 | 日韩欧美精品一区 | 香蕉视频1024 | 欧美精品啪啪 | 国产精品视频www | 岛国二区 | 久久精品免费观看 | 免费一级黄 | 91视频精选 | 91午夜在线 | 欧美一区二区三区四区在线 | 91网站在线看 | 免费精品 | 毛片一级网站 | 亚洲高清三级 | 国产一区二区电影 | 国产一区 | 97精品超碰一区二区三区 | 亚洲精彩视频 | 中文一区 | 91免费入口 | av黄色免费|