此文來源于:http://mianshi.fenzhi.com/post/1301.html,轉(zhuǎn)載時請說明出處
1.嵌入式系統(tǒng)的定義
以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ)的,并且軟件硬件是可剪裁的,能滿足應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗等指標(biāo)的嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。它可以實(shí)現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理等功能。
2.嵌入式系統(tǒng)的特點(diǎn)?
1系統(tǒng)內(nèi)核小。2專用性強(qiáng)。3系統(tǒng)精簡。4高實(shí)時性的系統(tǒng)軟件(OS)是嵌入式軟件的基本要求。而且軟件要求固態(tài)存儲,以提高速度;軟件代碼要求高質(zhì)量和高可靠性。 5嵌入式軟件開發(fā)要想走向標(biāo)準(zhǔn)化,就必須使用多任務(wù)的操作系統(tǒng)。6嵌入式系統(tǒng)開發(fā)需要開發(fā)工具和環(huán)境7 硬件與軟件的互相依賴性強(qiáng)8采用專用的嵌入式微處理器9 多種技術(shù)間結(jié)合更加緊密10 系統(tǒng)對用戶透明11系統(tǒng)資源有限12 應(yīng)用方面廣泛
3.嵌入式系統(tǒng)有哪幾個組成部分?
嵌入式系統(tǒng)通常由嵌入式處理機(jī)、嵌入式外圍設(shè)備、嵌入式操作系統(tǒng)和嵌入式應(yīng)用軟件等幾大部分組成。一個嵌入式系統(tǒng)裝置一般都由嵌入式計(jì)算機(jī)系統(tǒng)和執(zhí)行裝置組成,嵌入式計(jì)算機(jī)系統(tǒng)是整個嵌入式系統(tǒng)的核心,由硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層組成。硬件層中包含嵌入式微處理器、存儲器(SDRAM、ROM、Flash等)、通用設(shè)備接口和I/O接口(A/D、D/A、I/O等),中間層包含相關(guān)底層硬件的初始化、數(shù)據(jù)的輸入/輸出操作和硬件設(shè)備的配置功能。系統(tǒng)軟件層由實(shí)時多任務(wù)操作系統(tǒng)、文件系統(tǒng)、圖形用戶接口、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。RTOS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺。
4.試說明嵌入式操作系統(tǒng)與通用的計(jì)算機(jī)系統(tǒng)的區(qū)別?
1.面向特定應(yīng)用,一般都有實(shí)時要求
2.集先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體工藝、電子技術(shù)和通信網(wǎng)絡(luò)技術(shù)于一體的并且在不斷創(chuàng)新的知識 集成系統(tǒng)。
3.嵌入式系統(tǒng)是和具體應(yīng)用對象有機(jī)地結(jié)合在一起,因而其升級換代也是和具體的產(chǎn)品同步進(jìn)行的。
4.嵌入式系統(tǒng)的軟硬件設(shè)計(jì)著重于高效率性。在最大限度滿足應(yīng)用需求的前提下,降低成本是必需要考慮的主要問題。
5.嵌入式系統(tǒng)軟件一般都固化在存儲器芯片或單片機(jī)本身中,而不是存貯于磁盤等載體中。
6.嵌入式系統(tǒng)通常是面向特定應(yīng)用的嵌入式CPU與通用型的最大不同就是嵌入式CPU大多工作在為特定用戶群設(shè)計(jì)的系統(tǒng)中,它通常都具有低功耗、體積小、集成度高等特點(diǎn),能夠把通用CPU中許多由板卡完成的任務(wù)集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設(shè)計(jì)趨于小型化,移動能力大大增強(qiáng),跟網(wǎng)絡(luò)的耦合也越來越緊密。
7.嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場,具有較長的生命周期。
8.嵌入式系統(tǒng)本身不具備自舉開發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對其中的程序功能進(jìn)行修改的,必須有一套開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。
5.RTOS實(shí)時操作系統(tǒng)中強(qiáng)調(diào)的實(shí)時是什么概念?
RTOS,實(shí)時系統(tǒng)(Real-time operating system),實(shí)時系統(tǒng)能夠在指定或者確定的時間內(nèi)完成系統(tǒng)功能和外部或內(nèi)部、同步或異步時間做出響應(yīng)的系統(tǒng)。它的正確性不僅依賴系統(tǒng)計(jì)算的邏輯結(jié)果,還依賴于產(chǎn)生這個結(jié)果的時間。因此實(shí)時系統(tǒng)應(yīng)該在事先定義的時間范圍內(nèi)識別和處理離散事件的能力;系統(tǒng)能夠處理和儲存控制系統(tǒng)所需要的大量數(shù)據(jù)。根據(jù)操作系統(tǒng)的工作特性,實(shí)時是指物理進(jìn)程的真實(shí)時間。實(shí)時操作系統(tǒng)具有實(shí)時性,能從硬件方面支持實(shí)時控制系統(tǒng)工作的操作系統(tǒng)。其中實(shí)時性是第一要求,需要調(diào)度一切可利用的資源完成實(shí)時控制任務(wù),其次才著眼于提高計(jì)算機(jī)系統(tǒng)的使用效率,重要特點(diǎn)是要滿足對時間的限制和要求,實(shí)時指的是特定操作所消耗的時間(以及空間)的上限是可預(yù)知的。操作系統(tǒng)能夠在規(guī)定響應(yīng)時間內(nèi)完成客戶服務(wù)程序
6.Linux指的是什么,有什么區(qū)別?
Linux是指由Linux本人維護(hù)并不斷更新的內(nèi)核 。一個嵌入式Linux系統(tǒng)指的是一個基于Linux內(nèi)核的,但不包含有關(guān)這個內(nèi)核的任何專業(yè)的庫或是用戶工具的嵌入式系統(tǒng)。Linux最初是專門為基于Intel處理器的個人計(jì)算機(jī)而設(shè)計(jì)的。Linux的前身指的是由Linus Torvald維護(hù)開發(fā)的開放源代碼的類Unix操作系統(tǒng)的內(nèi)核。目前大多數(shù)人用它來表示以Linux內(nèi)核為基礎(chǔ)的整個操作系統(tǒng)。從這種意義講,Linux指的是源碼開放,包含內(nèi)核和系統(tǒng)工具、完整的開發(fā)環(huán)境和應(yīng)用的類Unix操作系統(tǒng)。
7.為什么要采用Linux內(nèi)核來構(gòu)建嵌入式操作系統(tǒng)?
內(nèi)核本身小而且簡單,易于理解,易于維護(hù)。各種特殊的模塊(如文件系統(tǒng)等)、設(shè)備驅(qū)動乃至中斷處理程序,都可以作為獨(dú)立的進(jìn)程開發(fā),既簡單又容易調(diào)試,并且容易在其他環(huán)境下模擬。系統(tǒng)的配置也變得更方便靈活。以微內(nèi)核為基礎(chǔ)的系統(tǒng)的擴(kuò)充就比較靈活、方便,或者說可裁減性較好。程度代碼是可以獲取的;有完整的源碼,軟件豐富并且免費(fèi);得到眾多硬件生產(chǎn)家的廣泛支持;包括cpu、計(jì)算機(jī)外圍設(shè)備;完善的通信協(xié)議、軟件標(biāo)準(zhǔn)和文件管理機(jī)制;提供完全免費(fèi)且優(yōu)秀的開發(fā)工具;廣泛的社群支持;無需購買licence,是免費(fèi)的;不依賴特定廠商、供應(yīng)商;成本相對低廉。
8.簡要說明linux內(nèi)核的基本構(gòu)成?(結(jié)構(gòu)模塊表示)
MMU:內(nèi)存管理單元,完成地址映射(應(yīng)用虛擬地址方式)
VFS:虛擬文件管理系統(tǒng),提供了統(tǒng)一管理計(jì)算機(jī)資源的途徑。使統(tǒng)一規(guī)范計(jì)算機(jī)資源的使用格式成為可能,方便傳輸
SCHED:進(jìn)程調(diào)用單元。支持多任務(wù)運(yùn)行。利用軟件中斷的特點(diǎn),將CPU 的時間線劃分給各個任務(wù),完成多任務(wù)管理
IPC:進(jìn)程間通信單元。實(shí)現(xiàn)多個不同程序在運(yùn)行時可以進(jìn)行數(shù)據(jù)交換、通信。
NET:網(wǎng)絡(luò)。網(wǎng)絡(luò)不做為通用設(shè)備,以特定工作單元存在。負(fù)責(zé)計(jì)算機(jī)系統(tǒng)與其他計(jì)算機(jī)相互通信的接口。
9.試簡要敘述嵌入式Linux系統(tǒng)的類型
10.通??刹捎媚膸追N方式來開發(fā)嵌入式Linux系統(tǒng)?給出連接示意圖。
方式有:
(1)連接型(宿主機(jī)/目標(biāo)板鏈接開發(fā))
(2)可移動連接型(利用可移動的存儲器作為宿主機(jī)/目標(biāo)板之間的中介)
(3)標(biāo)準(zhǔn)化(在開發(fā)板上進(jìn)行獨(dú)立開發(fā))
11.試簡要說明Linux系統(tǒng)在目標(biāo)板上的啟動過程?
用戶打開PC的電源,BIOS開機(jī)自檢,按BIOS中設(shè)置的啟動設(shè)備(通常是硬盤)啟動,接著啟動設(shè)備上安裝的引導(dǎo)程序lilo或grub開始引導(dǎo)Linux,Linux首先進(jìn)行內(nèi)核的引導(dǎo),接下來執(zhí)行init程序,init程序調(diào)用了rc.sysinit和rc等程序,rc.sysinit和rc,當(dāng)完成系統(tǒng)初始化和運(yùn)行服務(wù)的任務(wù)后,返回init;init啟動了mingetty后,打開了終端供用戶登錄系統(tǒng),用戶登錄成功后進(jìn)入了Shell,這樣就完成了從開機(jī)到登錄的整個啟動過程。
12.試解釋建立交叉開發(fā)平臺的必要性?
嵌入式系統(tǒng)的硬件一般有很大的局限性,或者處理器頻率很低,或者存儲空間很小,或者沒有鍵盤、鼠標(biāo)設(shè)備,所以一般不可能在這種嵌入式目標(biāo)硬件平臺上直接編譯構(gòu)建Linux系統(tǒng),因此開發(fā)者提出了交叉開發(fā)環(huán)境模型。它滿足兼容性要求;目標(biāo)系統(tǒng)對其可用的編譯工具沒有本地設(shè)置;主機(jī)資源比目標(biāo)系統(tǒng)快的多,或具有多得多的可用資源也是其建立的原因。
13.GNU提供的開發(fā)工具鏈有哪些工具程序,試舉出2、3例
編輯器: vi,emacs
代碼打補(bǔ)丁工具: diff & patch:
項(xiàng)目構(gòu)建工具: make(Makefile),autotool(包括Autoconf, Automake 和 Libtool)
版本控制工具: cvs,subversion,GNU Arch:GNU,git:
C庫: glibc,uclibc,newlib,diet libc
二進(jìn)制和目標(biāo)文件處理工具: binutils
編譯器: gcc
源代碼調(diào)試器: gdb
內(nèi)存管理檢查器: valgrind
調(diào)用跟蹤器: strace,ltrace:,truss
性能分析器: gprof,qprof,oprofile
(編譯開發(fā)工具:即能夠把一個源程序編譯生成一個可執(zhí)行程序的軟件,如gcc等。
調(diào)試工具:即能夠?qū)?zhí)行程序進(jìn)行源碼或匯編級調(diào)試的軟件,如gdb等。
軟件工程工具:用于協(xié)助多人開發(fā)或大型軟件項(xiàng)目的管理的軟件,如make、cvs等。)
14.為什么要配置內(nèi)核?為何要重新編譯內(nèi)核?
內(nèi)核,是個操作系統(tǒng)的核心。他負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動程式、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性,Linux不同發(fā)行版、甚至同發(fā)行版但不同內(nèi)核之間的驅(qū)動都很難兼容。根據(jù)用戶需求量體裁衣、使內(nèi)核更小,而且更穩(wěn)定、更高效。
Linux。內(nèi)核版本不斷更新。新的內(nèi)核修訂了舊內(nèi)核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身制定一個更高效,更穩(wěn)定的內(nèi)核,就需要重新編譯內(nèi)核。通常,更新的內(nèi)核會支持更多的硬件,具有更好的進(jìn)程管理能力,運(yùn)行速度更快、 更穩(wěn)定,并且一般會修復(fù)老版本中發(fā)現(xiàn)的許多漏洞等,經(jīng)常性地選擇升級更新的系統(tǒng)內(nèi)核是Linux使用者的必要操作內(nèi)容。支持新硬件,解決bug,提升效率,支持新功能,主要面向網(wǎng)絡(luò)、開發(fā)、服務(wù)應(yīng)用的。
15什么是根文件系統(tǒng)?在構(gòu)建嵌入式Linux系統(tǒng)時,其根文件系統(tǒng)必須包含哪些目錄?
Linux引導(dǎo)啟動時,默認(rèn)使用的文件系統(tǒng)是根文件系統(tǒng),是Linux系統(tǒng)的安裝點(diǎn),它是一種目錄結(jié)構(gòu),包括Linux啟動時所必須的目錄和關(guān)鍵性的文件。其中一般都包括這樣一些子目錄: /etc, /dev,/proc,/lib, /usr,/bin,/sbin, /var,/tmp;等。
16VFS指的是什么?它在Linux內(nèi)核中的主要作用是什么?
Virtual File System虛擬文件系統(tǒng),也稱為虛擬文件系統(tǒng)開關(guān)(Virtual Filesystem Switch).,Linux檔案系統(tǒng)對外的接口,是物理文件系統(tǒng)與服務(wù)之間的接口層,任何要使用檔案系統(tǒng)的程序都必須經(jīng)由這層接口來使用它。
通過VFS,可以為訪問文件系統(tǒng)的系統(tǒng)調(diào)用提供一個統(tǒng)一的抽象接口。VFS的作用就是采用標(biāo)準(zhǔn)的Linux系統(tǒng)調(diào)用讀寫位于不同物理介質(zhì)上的不同文件系統(tǒng)。在Linux下,通過VFS,一個抽象的通用訪問接口屏蔽了底層文件系統(tǒng)和物理介質(zhì)的差異性,記錄可用的文件系統(tǒng)類型,將設(shè)備同對應(yīng)的文件系統(tǒng)聯(lián)系起來,處理一些面向文件的通用操作,涉及到針對文件系統(tǒng)的操作時,VFS把它們影射到與控制文件、目錄以及inode。使統(tǒng)一規(guī)范計(jì)算機(jī)資源的使用格式成為可能,方便傳輸。
17.試解釋根文件目錄中/bin和/sbin及/usr/bin和/usr/sbin的區(qū)別?
用戶和管理員必備的二進(jìn)制文件,就會放在/bin。系統(tǒng)管理員必備,但是一般用戶根本不會用到的二進(jìn)制文件,就會放在/sbin。相對而言,不是用戶必備的二進(jìn)制文件,多半會放在/usr/bin;如果不是系統(tǒng)管理員必備的工具,多半會放在/usr/sbin. /bin里面一般是普通可執(zhí)行程序,而/sbin里多為系統(tǒng)管理程序和服務(wù)程序,后者是給超級用戶或者系統(tǒng)管理員進(jìn)行系統(tǒng)維護(hù)使用的,普通用戶沒有使用它們的權(quán)限,二者區(qū)別關(guān)鍵還是在于他們的權(quán)限不同。
18.Linux內(nèi)核中的設(shè)備驅(qū)動程序的一般編程模式是什么?
模塊編程模式
#include //所有模塊都需要的頭文件
#include // init&exit相關(guān)宏
MODULE_LICENSE(“GPL”);
static int __init hello_init (void)
{
printk(“Hello module init\n”);
return 0;
}
static void __exit hello_exit (void)
{
printk(“Hello module exit\n”);
}
module_init(hello_init);
module_exit(hello_exit);
19根文件系統(tǒng)可按幾種類型分類?
鏈接庫、內(nèi)核模塊、內(nèi)核映像、設(shè)備文件、主要系統(tǒng)應(yīng)用程序、定制用戶應(yīng)用程序
20.bootloader是什么?試解釋它的主要作用?
BootLoader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序,是與系統(tǒng)硬件環(huán)境高度相關(guān)的初始化軟件。
通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境,它擔(dān)負(fù)著初始化硬件和引導(dǎo)操作系統(tǒng)的雙重責(zé)任,它負(fù)責(zé)完成硬件初始化、操作系統(tǒng)引導(dǎo)和系統(tǒng)配制等。Bootloader移植是在特定硬件平臺上操作系統(tǒng)移植至關(guān)重要的一步。Linux系統(tǒng)是通過Bootloader引導(dǎo)啟動的。一上電,就要執(zhí)行Bootloader來初始化系統(tǒng)。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。