<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Embedded Linux 技術(shù)與概念解析

Embedded Linux 技術(shù)與概念解析

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

使用initrd做為root filesystem裝置

將initial RAM disk當成root filesystem來(lái)使用,是在Embedded Linux應用上是相當常見(jiàn)的技巧,如果我們想將initial RAM disk當成存放root filesystem的裝置來(lái)使用,在開(kāi)機時(shí),只需要配合root=的kernel開(kāi)機參數即可。

initramfs

Linus本人在Linux 2.6時(shí)代所提出的 initramfs ,是1種更好的 root= 做法。簡(jiǎn)單來(lái)說(shuō),initramfs就是kernel 2.6 的 initrd,initramfs是屬于1種compressed ramfs(ram filesystem)的映像檔。

C鏈接庫

在C鏈接庫方面,除了標準的glibc也被廣泛應用在嵌入式系統領(lǐng)域外,也有一些專(zhuān)門(mén)針對嵌入式系統應用所發(fā)展的C鏈接庫,像是uClibc以及Diet libc。但是由于現在的ARM9處理器計算效能都很快,平臺也多搭載大容量NAND閃存,所以許多實(shí)作都直接使用libc來(lái)實(shí)作root filesystem。

Linux驅動(dòng)程序

由于嵌入式系統整體來(lái)看,除了軟件開(kāi)發(fā)外,也包含硬件客制化,因此驅動(dòng)程序在嵌入式系統技術(shù)領(lǐng)域中,占了舉足輕重的地位。學(xué)習驅動(dòng)程序需要確實(shí)了解硬件的規格與微處理器架構,并且工程師還要能分得清楚哪些東西是接口(interfacing),也就是與硬件無(wú)關(guān)的程序(machine-independent);以及哪些是站在第一線(xiàn)做硬件控制的程序(machine-dependent)。各種軟件硬接口與匯流排也都要精通。

了解Linux驅動(dòng)程序的架構,是進(jìn)入嵌入式Linux領(lǐng)域的重點(diǎn)功課,因為許多針對ARM9平臺的驅動(dòng)程序都是參考框架、或是針對特定開(kāi)發(fā)板的實(shí)作,因此必須了解Linux驅動(dòng)程序的架構,并進(jìn)行修改,以符合自己的開(kāi)發(fā)板與外圍規格。

Linux驅動(dòng)程序,采取嚴謹的分層式架構設計(layered architecture),利用分層的架構設計來(lái)徹底區分generic device driver(machine independent)與machine dependent driver。

Linux驅動(dòng)程序透過(guò)注冊與回呼的機制來(lái)清楚區分每1層的關(guān)系。分層架構的實(shí)作必須在下層將自己注冊給上層,上層再回呼下層;上層的驅動(dòng)程序必須提供注冊函數供下層呼叫,下層驅動(dòng)程序所使用的注冊函數也將決定自己的上層架構。

與user application如何互動(dòng),是撰寫(xiě)驅動(dòng)程序時(shí)所要考慮的重要一環(huán),因此撰寫(xiě)驅動(dòng)程序時(shí),要提供什么功能給應用程序引用,就必須事先定義清楚。Linux的 generic device driver層已經(jīng)幫我們把這些功能定義清楚了。Linux驅動(dòng)程序如何透過(guò)I/O port或I/O memory來(lái)控制裝置,也就是與芯片組的溝通,方式是使用Linux kernel所提供的I/O函數來(lái)存取并控制實(shí)體硬件裝置。

Linux驅動(dòng)程序的裝置文件

Device files是UNIX系統的獨特觀(guān)念,在UNIX系統底下我們把外部的周邊裝置均視為1個(gè)檔案,并透過(guò)此檔案與實(shí)體硬件溝通,這樣的檔案就叫做device files或special files。

Device file的major number代表1個(gè)特定的裝置,例如major number 1為”null”虛擬裝置,major number定義于kernel文件目錄Documentation/devices.txt。Minor number代表裝置上的子裝置,例如同1個(gè)硬盤(pán)上的分割區就用不同的major number來(lái)代表,但其major number相同。

我們在設計device driver時(shí),會(huì )先透過(guò)1個(gè)“注冊”(register)的動(dòng)作,將自己注冊到kernel里,注冊時(shí),我們會(huì )指定1個(gè)major number參數,以指定此驅動(dòng)程序所要實(shí)作的外圍裝置。當user開(kāi)啟device file時(shí),kernel便會(huì )根據device file的 major number找到對應的驅動(dòng)程序響應使用者。Minor number則是device driver內部所使用,kernel并不會(huì )處理不同的minor number。

Linux 2.6的kobject模型

Linux 2.6在驅動(dòng)程序的架構方面,加入kobject的概念。kobject以更有系統、組織的方式維護系統里的driver(集中式管理),但并非改變現有(kernel 2.4以來(lái))的driver架構。在kobject的模型下,可以看到1個(gè)platform driver觀(guān)念。所謂「platform driver」就是machine- dependent driver,當驅動(dòng)程序設計師在kernel 2.6底下實(shí)作machine-dependent driver時(shí),就要以platform driver的架構來(lái)實(shí)作。例如,針對我們的目標裝置進(jìn)行硬件層的驅動(dòng)程序撰寫(xiě)時(shí),就要以platform driver的方式來(lái)撰寫(xiě),實(shí)作上,只是多1個(gè)注冊到platform driver層的動(dòng)作而已。

Flash裝置的支持

針對嵌入式系統經(jīng)常使用的閃存(Flash)儲存裝置,Linux kernel支持JFFS2與NFTL 2個(gè)專(zhuān)門(mén)針對快閃記億體設計的檔案系統。JFFS2(Journaling Flash File System version 2)是專(zhuān)門(mén)針對 NOR 型閃存所設計的檔案系統。NFTL(NAND Flash Translation Layer)則是專(zhuān)門(mén)針對NAND型閃存設計的檔案系統。

結論

綜合而言,Embedded Linux是1個(gè)平臺、也是一些工具的集合、也是1個(gè)嵌入式軟件的開(kāi)發(fā)環(huán)境;實(shí)作上,Embedded Linux除了會(huì )進(jìn)行kernel的修改、驅動(dòng)程序的移植或開(kāi)發(fā)外,也會(huì )是系統管理與系統整合的再應用,這是一門(mén)集大成的技術(shù),并不只是1個(gè)嵌入式操作系統,也不只是1套開(kāi)發(fā)工具。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>