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