




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、簡答題與應用題:1、什么是嵌入式系統(tǒng)?主要有什么特點?答:以應用為中心,以計算機技術(shù)為基礎(chǔ)的,并且軟件硬件是可剪裁的,能滿足應用系統(tǒng)對功能、可靠性、成本、體積、功耗等指標的嚴格要求的專用計算機系統(tǒng)。他可以實現(xiàn)對其他設(shè)備的控制、監(jiān)視或者管理等功能。與通用的計算機系統(tǒng)相比,特點為:(1) 面向特定應用,一般都有實時要求;(2) 集先進性的計算機技術(shù)、半導體工藝、電子技術(shù)和通信網(wǎng)絡(luò)技術(shù)于一體的并且在不斷創(chuàng)新的知識集成系統(tǒng);(3) 嵌入式系統(tǒng)是和具體應用對象有機結(jié)合在一起,因而其升級換代也是和具體的產(chǎn)品同步進行的。(4) 嵌入式系統(tǒng)的軟硬件設(shè)計著重于高效率性。在最大限度滿足應用需求的前提下,降低成本是
2、必須要考慮的主要問題。(5) 嵌入式系統(tǒng)軟件一般都固化在存儲器芯片中。2、嵌入式系統(tǒng)有哪幾個部分?答:嵌入式系統(tǒng)通常由嵌入式處理機、嵌入式外圍設(shè)備、嵌入式操作系統(tǒng)和嵌入式應用軟件等幾大部分組成。3、嵌入式操作系統(tǒng)的作用是什么?*實際是一組軟件模塊集合滿足多任務(wù)處理、穩(wěn)定運行、安全可靠、占用系統(tǒng)資源少、特有的實時事件處理、便于維護和管理、簡潔良好的用戶界面4、什么是Linux?什么是嵌入式Linux?答:嚴格來講,Linux是指由Linux本人維護并不斷更新的內(nèi)核。一個嵌入式Linux系統(tǒng)指的是一個基于Linux內(nèi)核的,但不包含有關(guān)這個內(nèi)核的任何專業(yè)的庫或是用戶工具的嵌入式系統(tǒng)。5、用Linux
3、內(nèi)核構(gòu)建嵌入式操作系統(tǒng)有什么優(yōu)勢(優(yōu)良特性)?答:(1)程度代碼是可以獲取的,可靠度高;(2)有完整的源碼,軟件豐富并且免費;(3)得到眾多硬件生產(chǎn)家的廣泛支持;包括cpu、計算機外圍設(shè)備(4)完善的通信協(xié)議、軟件標準和文件管理機制;(5)提供完全免費且優(yōu)秀的開發(fā)工具;(6)廣泛的社群支持(7)無需購買licence,是免費的;(8)不依賴特定廠商、供應商;(9)成本相對低廉。6、RTOS(嵌入式操作系統(tǒng))強調(diào)的實時是什么概念?與中斷的關(guān)系?答:實時指的是特定操作所消耗的時間(以及空間)的上限是可預知的。操作系統(tǒng)能夠在規(guī)定響應時間內(nèi)完成客戶服務(wù)程序。中斷程序響應中斷并完成是在固定時間內(nèi)。7、什
4、么是實時Linux?涉及到哪些軟硬件內(nèi)容?答:實時Linux(RT-Linux)通過在Linux內(nèi)核與硬件中斷之間增加一個精巧的可搶先的實時內(nèi)核,把標準的Linux內(nèi)核作為實時內(nèi)核的一個進程與用戶進程一起調(diào)度,標準的Linux內(nèi)核的優(yōu)先級最低,可以被實時進程搶斷。正常的Linux進程仍可以在Linux內(nèi)核上運行,這樣既可以使用標準分時操作系統(tǒng)即Linux的各種服務(wù),又能提供低延時的實時環(huán)境。它在硬件上涉及到硬件中斷,軟件上涉及到對高優(yōu)先級的實時硬件中斷的快速響應。能在規(guī)定的時間內(nèi)完成對突發(fā)事件的處理的Linux系統(tǒng);軟件:中斷服務(wù)程序、進程調(diào)度程序,硬件:嵌入式系統(tǒng)所采用的中斷管理硬件。8、試
5、簡要說明Linux內(nèi)核構(gòu)成,并簡要說明各部分的功能?答:MMU:內(nèi)存管理單元,完成地址映射(應用虛擬地址方式)VFS:虛擬文件管理系統(tǒng),提供了統(tǒng)一管理計算機資源的途徑。使統(tǒng)一規(guī)范計算機資源的使用格式成為可能,方便傳輸SCHED:進程調(diào)用單元。支持多任務(wù)運行。利用軟件中斷的特點,將CPU的時間線劃分給各個任務(wù),完成多任務(wù)管理IPC:進程間通信單元。實現(xiàn)多個不同程序在運行時可以進行數(shù)據(jù)交換、通信。NET:網(wǎng)絡(luò)。網(wǎng)絡(luò)不做為通用設(shè)備,以特定工作單元存在。負責計算機系統(tǒng)與其他計算機相互通信的接口。9、通常可采用哪幾種方式來開發(fā)嵌入式Linux系統(tǒng)?給出示意圖。答:方式有:(1)連接型(宿主機/目標板鏈接
6、開發(fā))(2)可移動連接型(利用可移動的存儲器作為宿主機/目標板之間的中介)(3)標準化(在開發(fā)板上進行獨立開發(fā))(3)第二引導加載程序內(nèi)核根文件系統(tǒng)10、 為什么要建立交叉開發(fā)平臺?在何種情形下可以不必建立?答:嵌入式系統(tǒng)的構(gòu)造決定。嵌入式處理器多為專用的cpu,1、必須將用C編寫的程序編譯成能在該專用平臺上運行的機器碼。2、C語言庫是必需的,必需提供能在專用cpu上運行的庫的二進制代碼。以上兩點要求有這么一種編譯工具能夠?qū)崿F(xiàn)兩種CPU之間的交叉。當執(zhí)行應用程序的平臺和用來建立應用程序的平臺相同時就可以不建立交叉開發(fā)平臺。11、 試簡要敘述GNU及其所提供的開發(fā)工具鏈。答:GNU是“GNU
7、39;sNotUnix”的遞歸縮寫,它是一個自由軟件工程項目組織。提供各種開源代碼。提供一整套的開發(fā)工具鏈包括:GNU工具鏈基礎(chǔ),內(nèi)核頭文件安裝程序,Binutils(二進制工具)的安裝程序,引導編譯器安裝程序,C庫安裝程序,全編譯器安裝程序,完成工具鏈的設(shè)置。12、 試解釋make和makefile的關(guān)系?簡單舉例說明。答:使用make就必須寫makefile文件,它描述工程中文件之間的關(guān)系,提供更新每個文件的命令。Make巾le就是一組規(guī)則,它指導make程序的運行,告訴make需要做什么,多數(shù)情況是怎樣編譯和鏈接一個程序。目標和目標運行規(guī)則一旦建立,make就會按此進行工作。edit:m
8、ain.okbd.ocommand.odisplay.oinsert.osearch.ofiles.outils.occ-oeditmain.okbd.ocommand.odisplay.oinsert.osearch.ofiles.outils.omain.o:main.cdefs.hcc-cmain.ckbd.o:kbd.cdefs.hcommand.hcc-ckbd.ccommand.o:command.cdefs.hcommand.hcc-ccommand.cdisplay.o:display.cdefs.hbuffer.hcc-cdisplay.cinsert.o:insert.cd
9、efs.hbuffer.hcc-cinsert.csearch.o:search.cdefs.hbuffer.hcc-csearch.cfiles.o:files.cdefs.hbuffer.hcommand.hcc-cfiles.cutils.o:utils.cdefs.hcc-cutils.cclean:rmeditmain.okbd.ocommand.odisplay.oinsert.osearch.ofiles.outils.o(此段為Makefile)makeclean(此為make執(zhí)行上述Makefile規(guī)則)13、 GCC是什么?為什么說它是必不可少的?答:GCC是由GNU組織開
10、發(fā)的一個免費的C/C+編譯工具,由它將高級語言轉(zhuǎn)換為機器語言。因為GCC是一個交叉平臺的編譯器,幾乎所有主流CPU處理平臺上目標代碼的變換,它有力的支持了Linux系統(tǒng)的發(fā)展。沒有就無法獲得可執(zhí)行程序。14、 C庫是什么概念?在嵌入式Linux系統(tǒng)中對此有何要求?答:提供C語言里包含常用函數(shù)的源代碼。在嵌入式Linux系統(tǒng)中是必不可少的。否則無法獲得可執(zhí)行程序的完整代碼。因為操作系統(tǒng)是用C語言編寫的。15、 在設(shè)計嵌入式Linux系統(tǒng)時為什么要配置內(nèi)核?可用哪幾種命令來配置?答:針對嵌入式系統(tǒng),內(nèi)核需要知道運行在怎么樣的平臺上,它要管理的硬件單元,這就需要我們重新組裝內(nèi)核來達成上述目標。因為完
11、整的Linux的內(nèi)核比較龐大,不適合嵌入式系統(tǒng)這樣的對速度、容量要求苛刻的系統(tǒng)上面運行,因此我們需要去掉那些與目標系統(tǒng)無關(guān)的、只編譯系統(tǒng)需要的功能的代碼。我們通常使用內(nèi)核配置命令makeconfig(字符界面);makeoldconfig;makemenuconfig(文本圖形界面);makexconfig(x-window圖形界面)來配置內(nèi)核。通常使用后兩個命令,在圖形界面下比較直觀。顯然,在makefile中詳細定義了界面是如何生成的,以及配置和編譯內(nèi)核的規(guī)則。此外還有makeoldconfig命令。16、 重新編譯內(nèi)核應考慮哪幾個方面的因素?模塊是什么概念?答:建立依存關(guān)系,建立內(nèi)核,建
12、立模塊。模塊的概念:可動態(tài)、靜態(tài)加載的二進制代碼。17、 什么是根文件系統(tǒng)?Linux內(nèi)核啟動與根文件系統(tǒng)的關(guān)系?答:根文件系統(tǒng)是Linux系統(tǒng)的安裝點,應該包括支持Linux系統(tǒng)正常運行的基本內(nèi)容,包含著系統(tǒng)使用的軟件和庫,以及所有用來為用戶提供支持構(gòu)架和用戶使用的應用軟件。Linux內(nèi)核在運行期必須要用到的存儲代碼體系,與內(nèi)核同時存在,只在內(nèi)核運行時才存在于內(nèi)存中。根文件系統(tǒng)必須要能夠提供Linux內(nèi)核啟動過程中要加載的模塊18、 在構(gòu)建嵌入式Linux系統(tǒng)時,對根文件系統(tǒng)的目錄項有什么要求?答:構(gòu)建嵌入式操作系統(tǒng)時應包括的目錄項有:/bin;/boot;/dev;/ect;/home;/
13、lib;/mnt;/opt;/proc;/root;/sbin;/tmp;/usr;/var其中/bin;/dev;/ect;/lib;/proc;/sbin;/tmp;/usr;/var這9項必須包含,另外5項可有可無。19、 Linux內(nèi)核在目標板上啟動過程(簡要敘述)?需要考慮哪些因素?答:1、通過合適的bootloader找到內(nèi)核源代碼,加載到內(nèi)存2、內(nèi)核源代碼開始進行初始化3、內(nèi)核源代碼初始化完畢,開始調(diào)用和用戶有關(guān)的進程。用戶進程初始化選用和目標板相配的啟動裝載程序20、 如何理解文件系統(tǒng)?常用的文件系統(tǒng)有哪幾種?答:文件系統(tǒng)是對一個存儲設(shè)備上的數(shù)據(jù)和元數(shù)據(jù)進行組織的機制另一種看待
14、文件系統(tǒng)的方式是把它看作一個協(xié)議。網(wǎng)絡(luò)協(xié)議(比如IP)規(guī)定了互聯(lián)網(wǎng)上傳輸?shù)臄?shù)據(jù)流的意義,同樣,文件系統(tǒng)會給出特定存儲媒體上數(shù)據(jù)的意義。常用的文件系統(tǒng):CRAMFS;JFFS2;Ext2overNFTL;Ext3overNFTL;Ext2overRAMdisk;EXT4。21、 什么是VFS?它在Linux內(nèi)核中的主要作用是什么?答:VFS(虛擬文件系統(tǒng))是物理文件系統(tǒng)與服務(wù)之間的接口層。它對Linux的每個文件系統(tǒng)的所有細節(jié)進行抽象,使得不同的文件系統(tǒng)在Linux核心以及系統(tǒng)中運行的其它進程看來,都是相同的。作用為:記錄可用的文件系統(tǒng)類型,將設(shè)備同對應的文件系統(tǒng)聯(lián)系起來,處理一些面向文件的通用
15、操作,涉及到針對文件系統(tǒng)的操作時,VFS把它們影射到與控制文件、目錄以及inodeo22、內(nèi)核模塊的編程和普通程序的編程有哪些區(qū)別?(6分)參考答案:主要區(qū)別為:(1)因為內(nèi)核模塊運行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)(2)模塊程序沒有main函數(shù),而是通過init_module函數(shù)在加載后初始化。(2分)(3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)(4)普通用戶程序可運行多次,而內(nèi)核函數(shù)通常則只能加載1次(1分)。23、什么是交叉編譯?為什么要采用交叉編譯(5分)參考答案:所謂交叉編譯,是
16、指在一個平臺上編譯生成在另一個平臺上運行的可執(zhí)行程序。(3分)。之所以采用交叉編譯,是因為目標平臺上不具備直接運行開發(fā)環(huán)境的條件。(2分)24、簡述嵌入式Linux系統(tǒng)的初始化過程(5分)參考答案:嵌入式Linux系統(tǒng)開機首先運行BootLoader,然后由BootLoader引導啟動內(nèi)核,由內(nèi)核檢查和初始化硬件設(shè)備,載入設(shè)備的驅(qū)動程序模塊,安裝root文件系統(tǒng),然后內(nèi)核將啟動一個名為init的進程(2分)。在init運行完成并啟動其它必要的后續(xù)進程后,系統(tǒng)開始運行,引導過程結(jié)束。init進程啟動時需要讀取inittab配置文件,該文件確定init在系統(tǒng)啟動和關(guān)機時的工作特性。(3分)應用題1
17、、管道是Linux中進程通信的一種方式,以下程序在父進程和子進程之間創(chuàng)建了一個管道,然后建立它們之間的通信,實現(xiàn)父進程向子進程寫數(shù)據(jù)的功能。說明標號所在行代碼的功能。#include<unistd.h>#include<sys/types.h>#include<errno.h>#include<stdio.h>#include<stdlib.h>intmain()intpipe_fd2;pid_tpid;charbuf_r100;char*p_wbuf;intr_num;memset(buf_r,0,sizeof(buf_r);(1)
18、if(pipe(pipe_fd)<0)(2)printf("pipecreateerrorn");return-1;if(pid=fork()=0)(3)printf("n");close(pipe_fd1);(4)sleep(2);if(r_num=read(pipe_fd0,buf_r,100)>0)(5)printf("%dnumbersreadfromthepipeis%sn",r_num,buf_r);close(pipe_fd0);(6)exit(0);elseif(pid>0)(7)close(pipe
19、_fd0);(8)if(write(pipe_fd1,"Hello",5)!=-1)(9)printf("parentwrite1success!n");if(write(pipe_fd1,"Pipe",5)!=-1)printf("parentwrite2success!n");close(pipe_fd1);(10)sleep(3);waitpid(pid,NULL,0);exit(0);答案要點:(1)將數(shù)據(jù)緩沖區(qū)清0(2)創(chuàng)建管道創(chuàng)建子進程(4)關(guān)閉子進程寫描述符(5)子進程讀取管道內(nèi)容(6)關(guān)閉子進程讀描
20、述符(7)父進程運行控制語句(8)關(guān)閉父進程的讀描述符(9)一后數(shù)據(jù)寫入緩沖區(qū)(10)關(guān)閉父進程寫描述符2、由于BootLoader的實現(xiàn)依賴于CPU的體系結(jié)構(gòu),因此大多數(shù)BootLoader都分為stagel和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的。而stage2則通常用C語言來實現(xiàn),這樣可以實現(xiàn)給復雜的功能,而且代碼會具有更好的可讀性和可移植性。請根據(jù)你對嵌入式系統(tǒng)中bootloader的理解,簡要設(shè)計一下stage1和stage2需要完成的功能。參考答案:BootLoader的st
21、age1通常包括以下步驟(以執(zhí)行的先后順序):(3分)基本硬件設(shè)備初始化。為加載BootLoader的stage2準備RAM空間??截怋ootLoader的stage2到RAM空間中。設(shè)置好堆棧。跳轉(zhuǎn)到stage2的C入口點。BootLoader的stage2通常包括以下步驟(以執(zhí)行的先后順序):(3分)初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。3、Qt/Embedded對嵌入式GUI提供了強大的支持,信號和插槽機制是QT的核心機制,使用QT實現(xiàn)如下界面的登陸程序,其原
22、代碼如下所示,請回答如下問題1)什么是Qt中的信號插槽機制?(3分)2)應用程序中用到了哪些控件,列舉2個并說明該控件的特點?(4分)3)根據(jù)注釋完成程序中相應的語句?(4分)#include<QtGui/QtGui>#include"window.h"CWinDlg:CWinDlg(QWidget*parent):QDialog(parent)setWindowTitle("Example");/*設(shè)置窗口的標題*/Edit1=newQLineEdit;/*創(chuàng)建一個Edit1和一個Buttion1*/Button1=newQPushButt
23、on("OK");Edit1->setEchoMode(QLineEdit:Password);QVBoxLayout*Layout1=newQVBoxLayout;/*創(chuàng)建個布局對像Layout1*/Layout1->addWidget(Edit1);/*把Edit1加入到Layout1*/Layout1->addWidget(Button1);/*把Button1加入到Layout1*/(1) setLayout(Layoutl);/*應用Layoutl布局*/(2) connect(Button1,SIGNAL(clicked(),this,SLOT
24、(function();/*建立Signal-Slot,使buttonl與function。相關(guān)聯(lián)*/CWinDlg:CWinDlg()deleteEdit1;/*刪除Edit1與Button1對象*/deleteButton1;voidCWinDlg:function()如果Edit1輸入"example"*/顯示"Pass!"消息框*/if(Edit1->text()="example")/*/*QMessageBox:warning(this,"warning","Pass!",QM
25、essageBox:Yes);else/*顯示"Error!"消息框*/QMessageBox:warning(this,"warning","Error!",QMessageBox:Yes);#include<QtGui/QtGui>#include"window.h"intmain(intargc,char*argv口)QApplicationapp(argc,argv);/*創(chuàng)建QTZ用程序*/CWinDlgdlg;/*創(chuàng)建窗口*/returndlg.exec();/*運行程序*/答案要點:1)什
26、么是Qt中的信號插槽機制?與回調(diào)函數(shù)機制有何不同?(3分)答案要點:回調(diào)函數(shù)機制是事先將一個回調(diào)函數(shù)指針傳遞給一個處理過程,當這個處理過程得到執(zhí)行時,回調(diào)預先定義好的回調(diào)函數(shù)以期實現(xiàn)激活其他處理程序的目的。不同與回調(diào)函數(shù)機制,Qt提供了信號和插槽機制,信號是一個特定的標識;一個槽就是一個函數(shù),與一般函數(shù)不同,槽函數(shù)既能和信號關(guān)聯(lián),當某個事件出現(xiàn)時,通過發(fā)送信號,可以將與之相關(guān)聯(lián)的槽函數(shù)激活,執(zhí)行相應代碼。2)應用程序中用到了哪些控件,列舉2個并說明該控件的特點?(4分)答案要點:應用程序中用到的控件有(1)文本框控件Edit,文本框控件主要用來顯示或接收用戶的輸入信息。(2)按鈕控件Butto
27、n,按鈕控件主要響應用戶單擊功能。3)根據(jù)注釋完成程序中相應的語句?(4分)(1)setLayout(Layout1);(2)connect(Button1,SIGNAL(clicked(),this,SLOT(function();4.在Linux操作系統(tǒng)下,完成下列任務(wù):1、編程實現(xiàn)以下功能主程序hello.c(打印HelloWorld!)主程序通過頭文件hello.h調(diào)用message函數(shù)頭文件hello.h(聲明message函數(shù))message函數(shù)由message.c定義(打印Thisisamessage!)1、答:hello.c:# include<stdio.h>#
28、include<stdlib.h># include<string.h># include"head.h"intmain(intargc,char*argv口)printf("HelloWorld!n");message();return0;head.h:voidmessage(void);message.c:# include<stdio.h>voidmessage(void)printf("Thisisamessage!n");5.用C語言編寫一個源程序main.c,(1)用以在打開當前目錄下的文件“test.txt",如果沒有創(chuàng)建該文件,并使其具有讀寫屬性,(2)編寫一個makefile實現(xiàn)自動編譯,生成可執(zhí)行文件main。注:頭文件可忽略。1、(5分)Voidmain(void)intfid;fid=open(".
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精神病居家康復
- 醫(yī)院掛號服務(wù)流程全解析
- 醫(yī)院管理人員年終述職報告
- 裝修全景案例講解實戰(zhàn)解析
- 中國結(jié)工藝技術(shù)與文化內(nèi)涵
- 快遞物流行業(yè)客戶滿意度調(diào)查方案
- 電力工程增容施工組織總計劃
- 自然植物課堂講解
- 智慧醫(yī)院建設(shè)與運營專題匯報
- 2003年7月國開電大法律事務(wù)??啤缎谭▽W(1)》期末紙質(zhì)考試試題及答案
- 肉夾饃的創(chuàng)業(yè)計劃書
- 《前置胎盤病例討論》課件
- MSOP(測量標準作業(yè)規(guī)范)測量SOP
- 年度安全生產(chǎn)投入臺賬(詳細模板)
- 【波司登羽絨服企業(yè)研發(fā)支出的會計處理】9000字論文
- 營養(yǎng)風險篩查(NRS2002)解讀
- 食材配送服務(wù)方案投標方案(技術(shù)標)
- DB43-T 140-2023 造林技術(shù)規(guī)程
- 過敏性休克病例討論
- GB 30616-2020食品安全國家標準食品用香精
- GA/T 1343-2016防暴升降式阻車路障
評論
0/150
提交評論