基于Linux的SoPC開(kāi)發(fā)
系統(tǒng)的構(gòu)建包括,硬件平臺(tái)的搭建和Linux操作系統(tǒng)的移植。首先進(jìn)行項(xiàng)目需求分析,決定實(shí)現(xiàn)系統(tǒng)需要的硬件IP核,繼而搭建硬件平臺(tái)。硬件平臺(tái)構(gòu)建完成之后,利用EDK軟件生成相關(guān)的硬件參數(shù)文件和設(shè)備驅(qū)動(dòng)文件。用戶需要利用生成的文件構(gòu)建Linux內(nèi)核,同時(shí)需要構(gòu)建適用于內(nèi)核的根文件系統(tǒng),最后在構(gòu)建完成的操作系統(tǒng)的基礎(chǔ)上開(kāi)發(fā)所需功能的應(yīng)用程序接口。其中根文件系統(tǒng)的構(gòu)造要考慮內(nèi)核中提供的服務(wù)和功能以及應(yīng)用程序所需的系統(tǒng)命令等。同樣所要實(shí)現(xiàn)的應(yīng)用功能又影響著內(nèi)核服務(wù)和功能的選擇。根文件系統(tǒng)、應(yīng)用程序接口以及內(nèi)核三者是互相影響的。具體的構(gòu)建流程圖如圖3所示。
2.1 利用EDK搭建硬件系統(tǒng)
利用EDK8.2軟件搭建硬件系統(tǒng),因?yàn)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/基于">基于Linux的操作系統(tǒng)設(shè)計(jì)中,CPU、RAM和總線是必須的。由于芯片內(nèi)部的BRAM只有128kb/s, 而下載Linux內(nèi)核的.elf文件通常遠(yuǎn)大于這個(gè)容量,因此需要使用外部的存儲(chǔ)單元。本文使用opb_sdram存儲(chǔ)控制模塊實(shí)現(xiàn)此功能。本文使用Uart16550控制模塊,能方便地通過(guò)RS232端口觀察測(cè)試的結(jié)果。為滿足本文應(yīng)用的需要,可以使用Uartlite模塊實(shí)現(xiàn)RS232的COM2端口和外部設(shè)備通信的功能。添加Ethernet_Mac的IP模塊,可使用以太網(wǎng)端口將開(kāi)發(fā)板連接到網(wǎng)絡(luò)上。為了調(diào)試的方便,可以加入GPIO模塊。通過(guò)GPIO控制LED燈,可顯示系統(tǒng)狀態(tài)。若選擇應(yīng)用程序初始化硬件,當(dāng)bit數(shù)據(jù)下載到FPGA系統(tǒng)正常運(yùn)行時(shí),可以觀察到LED燈被點(diǎn)亮。另外,根據(jù)設(shè)計(jì)需求,也可以掛載用戶定制的IP,以處理用戶的特定的需求。
選擇參數(shù)時(shí),可以使用默認(rèn)值,而存儲(chǔ)器參數(shù)可以選擇容量大一些的。使用的PowerPC 405硬核,PPC的工作頻率設(shè)置為100MHz, 參考時(shí)鐘和系統(tǒng)的總線頻率也分別設(shè)置為100MHz;使用的BRAM模塊IBRAM和DBRAM速率分別設(shè)置為64Kb/s。最終定制的SoPC硬件系統(tǒng)如圖4所示。
2.2 SoPC的Linux系統(tǒng)構(gòu)建
在SoPC的硬件系統(tǒng)構(gòu)建完成之后,利用EDK軟件生成的板級(jí)支持包(BSP)配置編譯內(nèi)核。BSP包含了所選定處理器架構(gòu)的屬性文件以及相關(guān)硬件的驅(qū)動(dòng)源文件。將這些文件加入到Linux內(nèi)核中,然后配置內(nèi)核選項(xiàng)選擇對(duì)應(yīng)的處理器架構(gòu)、所選硬件的驅(qū)動(dòng)模塊以及需要的其他內(nèi)核模塊,之后再對(duì)完成配置的內(nèi)核進(jìn)行編譯,生成Linux的內(nèi)核image文件。
生成內(nèi)核image文件之后,還需要生成系統(tǒng)運(yùn)行所需要的根文件系統(tǒng)。根文件系統(tǒng)中包含了嵌入式Linux系統(tǒng)的所有應(yīng)用程序、庫(kù)以及系統(tǒng)配置等相關(guān)文件。根文件系統(tǒng)中常用的程序和命令可利用開(kāi)源軟件Busybox構(gòu)造。構(gòu)造完成之后,在Busybox生成的目錄和文件的基礎(chǔ)上再構(gòu)造根文件系統(tǒng)的目錄樹(shù),并添加相關(guān)設(shè)備文件和配置文件以及系統(tǒng)運(yùn)行時(shí)需要的腳本文件,從而形成最終的根文件系統(tǒng)。至此,就可以將文件系統(tǒng)作為映像編譯到內(nèi)核中,也可以通過(guò)網(wǎng)絡(luò)使用NFS文件系統(tǒng)加載根文件系統(tǒng)。
3 應(yīng)用舉例
以一個(gè)多進(jìn)程的嵌入式Web服務(wù)器用于實(shí)現(xiàn)控制遠(yuǎn)程設(shè)備的的開(kāi)發(fā)為例,闡述在基于Linux的SoPC系統(tǒng)上開(kāi)發(fā)應(yīng)用程序的過(guò)程。嵌入式Web服務(wù)器的開(kāi)發(fā)包括HTTP協(xié)議裁減和具體的應(yīng)用程序?qū)崿F(xiàn)。用戶可以通過(guò)向Web服務(wù)器發(fā)送CGI請(qǐng)求的方式使服務(wù)器通過(guò)串口和外部設(shè)備通信,達(dá)到遠(yuǎn)程控制的目的。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論