嵌入式系統(tǒng)開發(fā)基礎(chǔ)-基于ARM微處理器和Linux操作系統(tǒng)的課后答案_第1頁
嵌入式系統(tǒng)開發(fā)基礎(chǔ)-基于ARM微處理器和Linux操作系統(tǒng)的課后答案_第2頁
嵌入式系統(tǒng)開發(fā)基礎(chǔ)-基于ARM微處理器和Linux操作系統(tǒng)的課后答案_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

最新資料整理推薦最新資料整理推薦PAGEPAGE5么?舉例說明。答:問題一:嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機為基礎(chǔ),其軟硬件可裁剪配置,對功能、可靠性、成本、體積、功耗有嚴格約束的一種專用計算機系統(tǒng)。問題二:比較項目比較項目嵌入式系統(tǒng)普通計算機系統(tǒng)引導(dǎo)代碼BootLoader引導(dǎo),針主板的BIOS引導(dǎo)對不同電路進行移植OSWindowsCEVxWorksWindows、Linux,不Linux移植驅(qū)動程序每個設(shè)備都必須針對OS電路板進行開發(fā)接下載協(xié)議棧移植OS提供開發(fā)環(huán)境借助服務(wù)器進行交叉在本機可開發(fā)調(diào)試編譯仿真器需要不需要答:硬件微處理器外圍電路嵌入式系統(tǒng)的控制核心I/O電源等外設(shè)USB、LCD、鍵盤等軟件設(shè)備驅(qū)動接口負責(zé)嵌入式系統(tǒng)與外設(shè)的信息交互實時操作系統(tǒng)包括與硬件相關(guān)的底層軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議、圖形界面、標準化瀏覽器等可編程應(yīng)用接口為編制應(yīng)用程序提供各種編程接口庫應(yīng)用軟件答:R13:也記作SP,在ARM堆棧指針SP;在ThumbR14:也記作程序連接寄存器LR(LinkRegister),用于保存子程序調(diào)用或異常中斷處理返回時程序的返回地址。R15:也記作程序計數(shù)器PC,用于標示下一條將要執(zhí)行的指令地址。CPSR:程序狀態(tài)寄存器,包含條件標識位、中斷標識位、當(dāng)前處理器模式等狀態(tài)和控制位。SPSR:備份的程序狀態(tài)寄存器。在異常中斷處理過程中,用于保存被中斷處理程序的執(zhí)行現(xiàn)場和處理器狀態(tài)。()中斷。ARM統(tǒng)功能,也可以是用戶自定義的功能?;蛘咴摰刂凡辉试S當(dāng)前指令訪問,則產(chǎn)生該中斷。外部中斷:當(dāng)處理器的外部中斷請求引腳有效,而且的ICPSRF()ADRR0,TABLEADRR1,DATALDR R0,[R1]LDR R0,=DATATABLEEQUMOV R0,TABLESPACE20答:R0=DATA1這組數(shù)據(jù)在存儲器中所存放的起始地址,由編譯器分R1=0x0C0D0E0F; R2=0xF; R3=0x8020; [0x8020]=R1答:AREASWITCH,CODE,READONLYENTRYAND R2,R0,0x3 ;R2 R0MOV R2,R2,LSL#30 BIC R0,R0,0x3 ;將R0的低兩位清AND R3,R1,0xC0000000 ;R3R1的高兩位MOV R3,R3,LSR#30 ;將高兩位移動到低兩BIC R1,R1,0xC0000000 ;將R1的高兩位清0ORR R0,R0,R3 ;R1R0最新資料整理推薦最新資料整理推薦PAGEPAGE16位ORR R1,R1,R2 ;R0R1位END答://main.cInclude“stdio.h”extern int sum (intnum[],intmain(){int array[10]={20,30,23,5,15,64,6,15,72,73};int HE=sum(array,10);printf(“Thesumofarrayis%d”,HE);}//huibian.sAREA ASM,CODE,READONLYEXPORT sumsum MOV R2,#0LOOP LDR R3,[R0],ADD R2,R2,R3SUB R1,R1,CMP R1,0BNE LOOPMOV R0,R2MOV PC,END()要求很強的實時性,支持快速而明確的上下文切換塊來達到系統(tǒng)所需要的功能具有快速有效的中斷和異常處理能力具有優(yōu)化的浮點支持能夠進行動態(tài)的內(nèi)存管理略。略略按照要求完成以下操作。創(chuàng)建文件夾testmkdirtest進入testcdtest在test目錄下用Vitest.c,其內(nèi)容如下:#include<stdio.h>intmain()#include<stdio.h>intmain(){inta,i=0;a=0;while(i<20){a=a+3;printf("thevalueof\n",a);sleep(1);i=i+1;return}}vitest.c保存退出test.c。按照下面的要求編譯test.c。使用gcc-otest.otest.ctest.o。使用gcc-g-ogtest.otest.cgtest.o。比較gtest.o與test.o比test.o執(zhí)行g(shù)test.otest.o。使用GDBgtest.o。進入GDBgdbgtest.o列出源文件內(nèi)容。list在程序a0;breakpointprintf("thevalueofa%d\n",a)個斷點。run查看變量aprinta查看變量a執(zhí)行下一個源程序行,從而執(zhí)行其整體中的一個函數(shù)。從斷點開始繼續(xù)執(zhí)行到下一個斷點。查看變量aa不停地執(zhí)行continue,直到程序結(jié)束。退出GDB。根據(jù)要求編寫Makefile#include"stdio.h"intmain(intargc,char**argv){display1("hello");display2("hello");}五個文件分別是main.cdisplay1.hdisplay1.c#include"stdio.h"intmain(intargc,char**argv){display1("hello");display2("hello");}display1.hdisplay1.hvoiddisplay1(char*print_str);display2.hvoiddisplay2(char*print_str);display1.c#include"display1.h"voiddisplay1(char*print_str){printf("Thisisdisplay1print%sn",print_str);}display2.c#include"display2.h"voiddisplay2(char*print_str){printf("Thisisdisplay2print%sn",print_str);}如果上述文件在同一個目錄,請編寫Makefile如果按照下面的目錄結(jié)構(gòu)存放文件,請編寫Makefile件。|bin|obj|include|srcMakefile

存放生成的可執(zhí)行文件存放.o文件存放display1.hdisplay2.h存放main.c、display1.c、display2.c和如果按照下面的目錄結(jié)構(gòu)存放文件,請編寫Makefile件。|bin|obj|include|src

存放生成的可執(zhí)行文件存放.o文件存放display1.h和display2.h存放main.cMakefile|src/display1|src/display1|src/display2存放display1.c和Makefile存放display2.c和Makefilesrc下面的makefileSRC_DIR=.INC_DIR=../includeOBJ_DIR=../objBIN_DIR=../bininclude$(SRC_DIR)/test/makefileinclude$(SRC_DIR)/test1/makefiledisplay1下面的makefileall:$(OBJ_DIR)/display1.o$(OBJ_DIR)/display1.ogcc-o$(BIN_DIR)/display1$^display2下面的makefile$(OBJ_DIR)/display2.o:$(SRC_DIR)/display2/display.cgcc-c$<-o$@3-1答:建立宿主機開發(fā)環(huán)境,包括操作系統(tǒng)及編譯器等配置宿主機相關(guān)服務(wù)及軟件,如minicom3.建立引導(dǎo)加載程序BootLoader移植內(nèi)核kernel建立根文件系統(tǒng)root6.建立應(yīng)用程序的Flash開發(fā)應(yīng)用程序燒寫內(nèi)核、根文件系統(tǒng)和應(yīng)用程序發(fā)布產(chǎn)品3-2答:Stage1:硬件設(shè)備初始化。為加載BootLoaderStage2RAM復(fù)制BootLoaderStage2RAM設(shè)置好堆棧。堆棧指針的設(shè)置是為執(zhí)行CStage2:初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射MemoryMa。將內(nèi)核映像和根文件系統(tǒng)映像從FlashRAM中。為內(nèi)核設(shè)置啟動參數(shù)。3-3答:數(shù)據(jù)結(jié)構(gòu)file_operationsregister_chrdev注冊。unregister_chrdev的卸載。/open動程序通過函數(shù)release讀寫設(shè)備:read函數(shù)將數(shù)據(jù)從內(nèi)核復(fù)制到應(yīng)用程序空間,write函數(shù)則將數(shù)據(jù)從應(yīng)用程序空間復(fù)制到內(nèi)核。I/Oioctl以外的I/O3-4答:register_chrdev(0,”demo”,&demo_fops);mknod/dev/democ2200insmoddemo.o參見exam4-1參見exam4-2參見exam4-3略略5-3C:\Qt\4.3.2>sqlite3exam.dbSQLiteversion3.5.4Enter".help"forinstructionsEnterSQLstatementsterminatedwitha";"sqlite>createtablebook(IDIntegerprimarykey,Namevarchar(20),Typevarchar(10),CountInteger);sqlite>insertintobookvalues(1,'SQLite3','Database',10);sqlite>insertintobookvalues(2,'Qt4','GUI',20);sqlite>select*frombook;1|SQLite3|Database|102|Qt4|GUI|20sqlite>5-4#include<stdio.h>#include<sqlite3.h>intmain(){sqlite3*db=NULL;intrc;char*Errormsg;intnrow;intncol;char**Result;inti=0;rc=sqlite3_open("exam.db",&db);if(rc){fprintf(stderr,"can'topendatabase:%s\n",sqlite3_errmsg(db));sqlite3_close(db);return1;}elseprintf("opendatabasesuccessly!\n");char*sql="createtablebook(IDIntegerprimarykey,Namevarchar(20),Typevarchar(10),CountInteger)";sqlite3_exec(db,sql,0,0,&Errormsg);sql="insertintobookvalues(1,'SQLite3','Database',10)";sqlite3_exec(db,sql,0,0,&Errormsg);sql="insertintobookvalues(2,'Qt4','GUI',20);";sqlite3_exec(db,sql,0,0,&Errormsg);sql="select*frombook";sqlite3_get_table(db,sql,&Result,&nr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論