2017-11-13

1.(填空)數(shù)據(jù)類型

ARM處理器支持下列數(shù)據(jù)類型:

Byte 字節(jié),8位? ? ? Halfword 半字,16位(半字必須與2字節(jié)邊界對(duì)齊);

Word 字,32位(字必須與4字節(jié)邊界對(duì)齊)。

2.處理器模式

ARM體系結(jié)構(gòu)支持的處理器模式

在軟件控制下可以改變模式,外部中斷或異常處理也可以引起模式發(fā)生改變。

大多數(shù)應(yīng)用程序在用戶模式下執(zhí)行。當(dāng)處理器工作在用戶模式時(shí),正在執(zhí)行的程序不能訪問某些被保護(hù)的系統(tǒng)資源也不能改變模式,除非異常發(fā)生。這允許操作系統(tǒng)來控制系統(tǒng)資源的使用。

除用戶模式外的其他模式稱為特權(quán)模式。特權(quán)模式是為了服務(wù)中斷或異常,或訪問保護(hù)的資源。它們可以自由的訪問系統(tǒng)資源和改變模式。其中的5種被稱為異常模式,即:FIQ IRQ 管理 中止 未定義。

當(dāng)特定的異常出現(xiàn)時(shí),進(jìn)入相應(yīng)的模式。每種模式都有某些附加的寄存器,以避免異常出現(xiàn)時(shí)用戶模式的狀態(tài)不可靠。

剩下的模式是系統(tǒng)模式,不能由于任何異常而進(jìn)入該模式,它與用戶模式有完全相同的寄存器。然而它是特權(quán)模式,不受用戶模式的限制。

3.異常(問答)

? 異常由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。在處理異常之前,處理器狀態(tài)必須保留,以便在異常處理程序完成后原來的程序能夠重新執(zhí)行。異常出現(xiàn)后,強(qiáng)制從異常類型對(duì)應(yīng)的固定存儲(chǔ)器地址開始執(zhí)行程序。

(1)復(fù)位:處理器上一旦有復(fù)位輸入,ARM處理器立刻停止執(zhí)行當(dāng)前指令。復(fù)位后,ARM處理器在禁止中斷的管理模式下,從地址0x00000000或0xFFFF0000開始執(zhí)行指令。

(2)未定義指令異常:當(dāng)ARM處理器執(zhí)行處理器指令時(shí),它必須等待任一外部處理器應(yīng)答后,才能真正執(zhí)行這條指令。若處理器沒有響應(yīng),就會(huì)出現(xiàn)未定義指令異常。

(3)軟件中斷異常(SWI):該異常由執(zhí)行SWI指令產(chǎn)生,可使用此機(jī)制進(jìn)行軟件仿真。

(4)預(yù)取中止(取指令存儲(chǔ)器中止):若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問,存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。

(5) 數(shù)據(jù)中止(訪問數(shù)據(jù)存儲(chǔ)器中止):若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)中止異常。

(6) 中斷IRQ異常:當(dāng)處理器的外部中斷請求引腳有效,且CPSR中的I=0,產(chǎn)生IRQ異常。

系統(tǒng)的外設(shè)可通過該異常請求中斷服務(wù)。

(7)快速中斷FIQ異常:當(dāng)處理器的外部中斷請求引腳有效,且CPSR中的F=0,產(chǎn)生FIQ異常。FIQ支持?jǐn)?shù)據(jù)傳送和通道處理,并有足夠的私有寄存器,從而在應(yīng)用中可避免對(duì)寄存器保存的需求,減少了開銷。

(8)異常優(yōu)先級(jí)

4.塊復(fù)制尋址(語言描述,畫圖)

(1)R0的內(nèi)容傳送到R9指向的位置,傳送之后R9加一,指向下一位。R0占用32位地址,一次加4

(2)R0傳送之前加一,再將R0的內(nèi)容傳送到R9指向的位置,每傳送一次加4.

多寄存器指令映射:

STMIB/STMFA:向上生長、增加、之前、滿? ? LDMDA/LDMFA:向上生長、減少、之后、滿

STMIA/STMEA:向上生長、增加、之后、空? ? LDMDB/LDMEA:向上生長、減少、之前、空

LDMIA/LDMFD:向下生長、增加、之后、滿? STMDB/STMFD:向下生長、減少、之前、滿

LDMIB/LDMED:向下生長、增加、之前、空? ? STMDA/STMED:向下生長、減少、之后、空

例:STMIA R9{R0,R1,R5}? R9向上生長,R9'之后增加

STMFD R13!,{R2-R9};? 存儲(chǔ)寄存器到堆棧

? ? LDMFD R13!{R2-R9};? 從堆棧恢復(fù)

5.(簡答)基于ARM的硬件啟動(dòng)程序一般包括:

(1)分配中斷向量表;(2)初始化存儲(chǔ)器系統(tǒng);(3)初始化各工作模式下的堆棧;

(4)初始化有特殊要求的硬件模塊;(5)初始化用戶程序的執(zhí)行環(huán)境;(6)切換處理器的工作模式;(7)調(diào)用主應(yīng)用程序

6. S3C2410A的存儲(chǔ)器控制器提供訪問外部存儲(chǔ)器所需要的存儲(chǔ)器控制信號(hào)。具有以下特性:

(1)支持小/大端(通過軟件選擇)? (2)地址空間:每bank有128M字節(jié)(總共有8個(gè)banks,共1G字節(jié))? ? (3)除bank0(只能是16/32位寬)之外,其他bank都具有可編程的訪問大?。梢允?/16/32位寬)? (4)總共有8個(gè)存儲(chǔ)器bank(bank0~bank7)

(5)其中6個(gè)banks用于ROM,SRAM等? (6)剩下2個(gè)banks用于ROM,SRAM,SDRAM等? (7)7個(gè)固定的存儲(chǔ)器bank(bank0~bank6)起始地址? (8)最后一個(gè)bank(bank7)的起始地址是可調(diào)整的? (9)最后兩個(gè)bank(bank6~bank7)的大小是可編程的

(10)所有存儲(chǔ)器bank的訪問周期都是可編程的? (11)總線訪問周期可以通過插入外部等待來延長? ? ? (12)支持SDRAM的自刷新和掉電模式

S3C2410A復(fù)位后,存儲(chǔ)器的映射情況如下,bank6和bank7對(duì)應(yīng)不同大小存儲(chǔ)器時(shí)的地址范圍:

bank6地址? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bank7地址

2MB:起始(0X30000000)終止(0X301FFFFF)? ? 起始(0X30200000)終止(0X303FFFFF)

4MB:起始(0X30000000)終止(0X303FFFFF)? ? ? 起始(0X30400000)終止(0X307FFFFF)

8MB:起始(0X30000000)終止(0X307FFFFF)? ? ? 起始(0X30800000)終止(0X30FFFFFF)

16MB:起始(0X30000000)終止(0X30FFFFFF)? ? 起始(0X31000000)終止(0X31FFFFFF)

32MB:起始(0X30000000)終止(0X31FFFFFF)? ? 起始(0X32000000)終止(0X33FFFFFF)

64MB:起始(0X30000000)終止(0X33FFFFFF)? ? 起始(0X34000000)終止(0X37FFFFFF)

128MB:起始(0X30000000)終止(0X37FFFFFF)? ? 起始(0X38000000)終止(0X3FFFFFFF)

7.電源控制模式包括?? ? ? ? ? ? ? 正常、慢速、空閑、掉電

正常:正常運(yùn)行模式;? ? ? ? ? ? 慢速:不加PLL的低時(shí)鐘頻率模式;

空閑:只停止CPU的時(shí)鐘;? ? ? ? 掉電:所有外設(shè)和內(nèi)核的電源都切斷了

8.NAND Flash控制器的啟動(dòng)特點(diǎn)?

(1)NAND Flash模式:支持讀/擦除/編程N(yùn)AND FLASH存儲(chǔ)器(2)自動(dòng)啟動(dòng)模式:系統(tǒng)復(fù)位后,啟動(dòng)代碼被傳送到Steppingstone中。傳送完畢后,啟動(dòng)代碼在Steppingstone中執(zhí)行。(3)具備硬件ECC生成模塊(硬件生成校驗(yàn)碼,通過軟件校驗(yàn))(4)NAND Flash啟動(dòng)以后,4KB的內(nèi)部SRAM緩沖器Steppingstone可以作為其他用途使用(5)NAND Flash控制器不能通過DMA訪問,可以使用LDM/STM指令來代替DMA操作

9慢速模式?不使用PLL,而使用外部時(shí)鐘直接作為S3C2410A中的FCLK。在這種模式下,功耗大小僅取決外部時(shí)鐘的的頻率,與PLL無關(guān)。

10掉電模式?電源管理模塊斷開內(nèi)部電源。因此,除喚醒邏輯外,CPU和內(nèi)部邏輯都不會(huì)產(chǎn)生功耗。激活掉電模式需要兩個(gè)獨(dú)立的電源,一個(gè)電源為喚醒邏輯供電;另一個(gè)為包括CPU在內(nèi)的其他內(nèi)部邏輯供電,并且這個(gè)電源的開、關(guān)可以控制。在掉電模式下,CPU和內(nèi)部邏輯供電的第二電源將關(guān)斷。

11(填空)Vi編輯器的使用

Vi有4種基本的工作模式:正常模式,插入模式,命令模式和可視模式。

:q退出? ? :q!強(qiáng)行退出vi,不改寫文件? ? :w存盤? ? :wq 存盤退出

12.介紹makefile文件的編寫格式

(1)makefile中以“#”開始的行是注釋行。

(2)Makefile中最終要的是描述文件依賴關(guān)系的說明。一般格式是:target:components——表示依賴關(guān)系? ? ? ? ? ? ? TAB? rule——表示規(guī)則

(3)clean 當(dāng)用戶鍵入“make clean”命令時(shí),會(huì)執(zhí)行clean后面的語句。對(duì)于上面的makefile,當(dāng)用戶鍵入“makeclean”命令時(shí),會(huì)執(zhí)行“rm-rf? *0? main”從而刪除*0和main文件

(4) makefile有三個(gè)非常有用的變量,分別是“$@”“$^”“$<”

? ?

13.(簡答)Bootloader的stage1通常包含以下步驟:

(1)Bootloader 的第一階段(Stage1)步驟:

①硬件設(shè)備初始化? ? ? ②為加載Bootloader的stage2準(zhǔn)備RAM空間

③復(fù)制Bootloader的stage2到RAM空間中? ? ④設(shè)置好堆棧? ⑤跳轉(zhuǎn)到stage2入口點(diǎn)

(2)Bootloader的stage2通常包含以下步驟:

①初始化本階段要使用的硬件設(shè)備? ? ②檢測系統(tǒng)內(nèi)存映射? ? ③將kernel映像和根文件系統(tǒng)映像從Flash讀到RAM中? ? ? ? ④為內(nèi)核設(shè)置啟動(dòng)參? ? ⑤調(diào)用內(nèi)核

14. ViVi程序架構(gòu)? ? ? ? ? ? vivi代碼包括arch init lib drivers和include幾個(gè)主要目錄。

①arch:該目錄主要包括所有vivi所支持的目標(biāo)板的子目錄

②drivers:該目錄包括引導(dǎo)內(nèi)核需要的設(shè)備驅(qū)動(dòng)程序

③init:該目錄只含有main.c 和version.c兩個(gè)文件,vivi將從main.c函數(shù)開始C語言的執(zhí)行。

④lib:該目錄包含一些平臺(tái)的接口函數(shù)

⑤include:該目錄是頭文件的公共目錄,該目錄定義了目標(biāo)系統(tǒng)相關(guān)的資源配置參數(shù)。

15. file-operation結(jié)構(gòu)的作用:

一個(gè)設(shè)備驅(qū)動(dòng)程序包括兩個(gè)基本任務(wù):執(zhí)行系統(tǒng)調(diào)用和負(fù)責(zé)中斷處理。而file-operation結(jié)構(gòu)的每一個(gè)成員的名稱都對(duì)應(yīng)一個(gè)系統(tǒng)調(diào)用。在操作系統(tǒng)內(nèi)部,外部設(shè)備的存取是通過一組固定入口點(diǎn)進(jìn)行的,這些入口點(diǎn)由每個(gè)外設(shè)的驅(qū)動(dòng)程序提供,由file-operation結(jié)構(gòu)向系統(tǒng)說明,因此編寫驅(qū)動(dòng)程序的主要工作就是編寫子函數(shù),并填充file-operation的各個(gè)域。

16.驅(qū)動(dòng)程序的開發(fā)步驟:

(1)對(duì)該驅(qū)動(dòng)程序使用到的硬件寄存器進(jìn)行初始化,包括中斷寄存器。

(2)初始化與設(shè)備相關(guān)的參數(shù)。一般來說,每個(gè)設(shè)備要定義一個(gè)設(shè)備變量,用來保存設(shè)備的相關(guān)參數(shù)。

(3)注冊設(shè)備(函數(shù)的作用)。Linux內(nèi)核通過主設(shè)備號(hào)將設(shè)備驅(qū)動(dòng)程序同設(shè)備文件相連。

(4)注冊設(shè)備使用的中斷,注冊中斷使用的函數(shù)。

(5)其他的一些初始化工作,比如給設(shè)備分配I/O,申請DMA通道等。

如果設(shè)備的驅(qū)動(dòng)程序使用如下的函數(shù)方式,那么設(shè)備驅(qū)動(dòng)可以被動(dòng)態(tài)地加載和卸載。

module_init(device_init);? ? ? ? ? ? ? ? module_exit(device_exit);

對(duì)于驅(qū)動(dòng)程序的使用,有靜態(tài)編譯和動(dòng)態(tài)編譯兩種。靜態(tài)編譯將設(shè)備的驅(qū)動(dòng)程序添加到內(nèi)核中,動(dòng)態(tài)編譯是指將設(shè)備驅(qū)動(dòng)程序編譯成驅(qū)動(dòng)模塊。

17.若在/dev目錄下沒有相應(yīng)的設(shè)備文件,就可用“mknod device_name.c主設(shè)備號(hào)從設(shè)備號(hào)”命令來創(chuàng)建一個(gè)設(shè)備文件,從而正確使用驅(qū)動(dòng)模塊。卸載驅(qū)動(dòng)模塊時(shí),使用“rmmod device_driver”命令。刪除設(shè)備文件使用“rm device_name”命令。建設(shè)被編譯成驅(qū)動(dòng)模塊。

18.開發(fā)linux應(yīng)用程序的一般分為以下幾個(gè)步驟:

編寫程序;編寫makefile文件;編譯程序;運(yùn)行程序;將生成的可執(zhí)行文件加入文件系統(tǒng)

19.ARM處理中斷步驟:

(1)保存現(xiàn)場(2)模式切換(3)獲取中斷源(4)中斷處理(5)中斷返回,恢復(fù)現(xiàn)場

20.自動(dòng)啟動(dòng)模式的執(zhí)行步驟:(1)完成復(fù)位 (2)如果自動(dòng)啟動(dòng)模式使能,NAND Flash存儲(chǔ)器的前4KB自動(dòng)復(fù)制到Steppingstone內(nèi)部緩沖器; (3)Steppingstone映射到nGCS0; (4)CPU在Steppingstone的4KB內(nèi)部緩沖器中開始執(zhí)行啟動(dòng)代碼。

21.Linux的移植?所謂Linux移植就是針對(duì)具體的目標(biāo)平臺(tái)對(duì)Linux做必要的改寫后,安裝到該目標(biāo)平臺(tái)并使其正確運(yùn)行的過程?;緝?nèi)容包括:

(1)獲取某一半杯的Linux內(nèi)核源碼;(2)根據(jù)具體的目標(biāo)平臺(tái),對(duì)源碼進(jìn)行必要的改寫,然后添加一些驅(qū)動(dòng),打造一款適合目標(biāo)平臺(tái)的新的操作系統(tǒng);(3)對(duì)該系統(tǒng)進(jìn)行針對(duì)目標(biāo)平臺(tái)的交叉編譯,生成一個(gè)內(nèi)核映像文件;(4)對(duì)該映像文件燒寫、安裝到目標(biāo)平臺(tái)中。

22.Linux內(nèi)核主要由5個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度子系統(tǒng),內(nèi)存管理子系統(tǒng),虛擬文件子系統(tǒng),網(wǎng)絡(luò)接口子系統(tǒng),進(jìn)程間通信子系統(tǒng)。

Linux內(nèi)核的主要目錄結(jié)構(gòu):(1)/arch:其中的子目錄包含所有與硬件體系結(jié)構(gòu)相關(guān)的內(nèi)核移植代碼,每一個(gè)目錄都代表一種硬件平臺(tái),每種平臺(tái)都應(yīng)該包括以下幾個(gè)部分:

boot:包含啟動(dòng)內(nèi)核所使用的部分或全部平臺(tái)的相關(guān)代碼。? kernel:包含支持體系結(jié)構(gòu)特有的特征代碼。? lib:包含存放體系結(jié)構(gòu)特有的通用函數(shù)的實(shí)現(xiàn)代碼? mm:包含存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實(shí)現(xiàn)。? ? mach-xxx:包含存放該處理器的移植代碼。

(2)/documentation:有關(guān)內(nèi)核各部分的通用解釋和注釋(3)/drivers:設(shè)備驅(qū)動(dòng)程序(4)/fs:所支持的各種文件系統(tǒng)的代碼(5)/include:建立內(nèi)核代碼時(shí)頭文件,與系統(tǒng)相關(guān)的頭文件放置在include/linux子目錄下(6)/init:內(nèi)核初始化代碼,內(nèi)核從此目錄下開始工作。(7)/ipc:內(nèi)核進(jìn)程間通信的代碼(8)/kernel:主內(nèi)核的代碼,包括進(jìn)程調(diào)度、定時(shí)器等(9)/lib:通用的庫文件代碼(10)/mm:內(nèi)核的內(nèi)存管理代碼(11)/net內(nèi)核的:網(wǎng)絡(luò)相關(guān)代碼(12)/scripts:用于配置內(nèi)核的腳本文件。

23.S3C2410A的I/O口工作原理:S3C2410共有117個(gè)多功能服用輸入輸出口(I/O口),分為8組PORTA~PORTH。PORT A 除了作為功能口外,它只作為輸出口使用;其余的PORT B~PORT H都可以作為輸入輸出口使用。8組I/O口按照其位數(shù)的不同,可分為:

①1個(gè)23位的輸出口(PORT A)? ? ②2個(gè)11位的I/O口(PORT B和PORT H)

③4個(gè)16位的I/O口(PORT C 、PORT D、PORT E、PORT G)? ④1個(gè)8位的I/O口(PORT F)

1.嵌入式系統(tǒng)的特點(diǎn):⑴硬軟件一體化,集計(jì)算機(jī)技術(shù)、微電子技術(shù)和行業(yè)技術(shù)為一體⑵需要操作系統(tǒng)支持,代碼小執(zhí)行速度快⑶專用緊湊,用途固定,成本敏感⑷可靠性要求高⑸多樣性,應(yīng)用廣泛,種類繁多? ? 2.操作系統(tǒng)功能:處理器管理,存儲(chǔ)器管理,設(shè)備管理,文件管理,用戶接口? ? ? 3.實(shí)時(shí)操作系統(tǒng)的特點(diǎn):支持異步事件的響應(yīng);中斷和調(diào)度任務(wù)的優(yōu)先級(jí)機(jī)制;支持搶占式調(diào)度;確定的任務(wù)切換時(shí)間和中斷延遲時(shí)間;支持同步

4.板級(jí)支持包BSP完成的功能:①在系統(tǒng)啟動(dòng)時(shí),對(duì)硬件進(jìn)行初始化,比如對(duì)設(shè)備的中斷、CPU的寄存器和內(nèi)存區(qū)域的分配等進(jìn)行操作;②為驅(qū)動(dòng)程序提供訪問硬件的手段,BSP就是為上層的驅(qū)動(dòng)程序提供訪問硬件設(shè)備寄存器的函數(shù)包。

1.下面是實(shí)現(xiàn)LED1和LED2輪流閃爍的程序代碼。

void Main(void){

? ? int flag,i;

? ? Target_Init();//進(jìn)行硬件初始化操作,包括對(duì)I/O口的初始化操作

? ? for(; ;){

? ? ? ? ? if(flag==0){

? ? ? ? ? ? for(i=0;i<1000000;i++);? ? ? ? //延時(shí)

? ? ? ? ? ? rGPGCON=rGPGCON&0xfff0ffff|0x00050000; //配置第8、第9位為輸出引腳

? ? ? ? ? ? rGPGDAT=rGPGDAT&0xeff|0x200; //第8位輸出為低電平,第9位輸出為高電平? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? for(i=0;i<10000000;i++);? ? ? //延時(shí)

? ? ? ? ? ? flag=1;

? ? ? ? ? }

? ? ? ? ? else{

? ? ? ? ? ? for(i=0;i<1000000;i++);? ? ? ? //延時(shí)

? ? ? ? ? ? rGPGCON=rGPGCON&0xfff0ffff|0x00050000; //配置第8、第9位為輸出引腳

? ? ? ? ? ? rGPGDAT=rGPGDAT&0xdff|0x100; //第8位輸出為高電平,第9位輸出為低電平? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? for(i=0;i<10000000;i++);? ? ? //延時(shí)

? ? ? ? ? ? flag=0;? ? ? ? ? ? }? }? ? }?

? ?


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容