欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5892|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

ARM面試題

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表