新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM&Linux圖形用戶界面開發(fā)平臺的設(shè)計

基于ARM&Linux圖形用戶界面開發(fā)平臺的設(shè)計

作者: 時間:2012-04-20 來源:網(wǎng)絡(luò) 收藏

摘要:本文首先介紹了自行研制的AT91RM9200的ARM板ARM221及顯示模塊的硬件電路;其次描述了嵌入式Linux系統(tǒng)在目標(biāo)板ARM221上移植過程及界面相關(guān)硬件驅(qū)動程序的開發(fā);最后移植了開源嵌入式界面系統(tǒng)MiniGUI到目標(biāo)板ARM221。

本文引用地址:http://butianyuan.cn/article/149195.htm

1引言嵌入式產(chǎn)品如PDA、機頂盒、WAP手機等迅速地普及,給廣大的非專業(yè)用戶帶來了極大方便。同時,這些產(chǎn)品都需要有高性能、穩(wěn)定可靠的GUI()來提供支持。

因此,在嵌入式產(chǎn)品的開發(fā)過程中,關(guān)鍵的一步就是嵌入式。本文介紹了一種ARM、Linux及MiniGUI的系統(tǒng)過程。

2硬件平臺設(shè)計及開發(fā)環(huán)境的搭建2。1硬件平臺設(shè)計硬件平臺ARM221為自行研發(fā)的AT91RM9200處理器芯片的ARM板,其核心板結(jié)構(gòu)圖如圖1所示。AT91RM9200處理器是一款基于ARM920T內(nèi)核的高性價比、低功耗、32位的ARM芯片,時鐘頻率為180Mhz,運算速度可達(dá)到200MIPS。AT91RM9200具有存儲器管理單元(MMU)、16KB的SRAM和128KB的ROM以及外部總線接口(EBI),支持SDRAM、靜態(tài)存儲器、BurstFlash、CompactFlash、SmartMedia以及NANDFlash,還集成了USB控制器、以太網(wǎng)控制器、RTC、SPI、I2C等豐富的外圍設(shè)備。AT91RM9200處理器內(nèi)部沒有集成LCD控制器,因而需要配備專用的顯示控制器,才能實現(xiàn)LCD顯示。

系統(tǒng)選用了一款應(yīng)用比較廣泛的LCD控制器S1D13506,它是EPSON大規(guī)模顯示控制器家族中較新的一款。它的輸出可以驅(qū)動VGA顯示或者最大為800×600的點陣LCD顯示屏,可以靈活地對各種不同的顯示方式進行設(shè)置,功能非常強大,可以和目前市場上流行的多種CPU總線兼容。另外顯示器選用了一款東華的320×240-16bppTFT-LCD。S1D13506的PC卡總線接口可以很方便地與AT91RM920相連,其與總線接口信號相關(guān)的信號為:數(shù)據(jù)總線DB[15:0]、地址總線AB[21:1]、片選信號CS、高位讀寫信號WE1、寫使能信號WE0、輸出讀使能命令信號RD、選擇讀寫顯存還是讀寫S1D13506寄存器信號M/R。

AT91RM9200的EBI總線接口用以確保多個外設(shè)與基于ARM器件的內(nèi)置控制存儲器之間實現(xiàn)正確數(shù)據(jù)傳輸。靜態(tài)存儲器、SDRAM及BurstFlash控制器均可作為EBI上的外部存儲控制器。EBI擁有8個片選信號(NCS[7:0]),可處理多達(dá)8個外設(shè)的數(shù)據(jù)傳輸;數(shù)據(jù)通過8位或者16位數(shù)據(jù)總線進行傳輸;地址總線高達(dá)26位。在16位總線寬度下,EBI與顯示控制器相關(guān)的總線接口信號有:數(shù)據(jù)總線DB[15:0]、地址總線AB[21:1]、片選信號NCS2(對應(yīng)的地址為0x30000000)、使能高字節(jié)讀與寫操作信號NWR1、使能字節(jié)或半字節(jié)讀/寫信號NRD/NWR0及復(fù)位信號NRST。由上述接口信號的定義分析得出,S1D13506與AT91RM9200的總線連接圖如上圖2所示。

2。2交叉編譯環(huán)境的搭建移植Linux前,需要在宿主機上建立ARM-Linux的交叉編譯環(huán)境,社區(qū)的開發(fā)者和一些芯片廠商已經(jīng)編譯出了常用體系結(jié)構(gòu)的工具鏈,安裝簡單,使用這些工具鏈,可以大大減少工作量。針對移植的Linux內(nèi)核版本2。4。26,選用cross-2。95。3。tar。bz2工具鏈。另外,MiniGUI的交叉編譯,還需要一些字體、圖形等庫文件的支持,這些庫文件包括:zlib-1。2。3。tar。gz(該庫是后面幾個庫編譯的基礎(chǔ))、libpng-1。0。10rc1。tar。gz(png圖形)、jpegsrc。v6b。tar。gz(jpeg圖形)、freetype-1。3。1。tar。gz(TrueType字體)等,在進行MiniGUI交叉編譯之前,需要把這些庫安裝到交叉編譯器中去。安裝過程比較簡單,可查找相關(guān)資料。

3嵌入式Linux系統(tǒng)移植及相關(guān)驅(qū)動程序開發(fā)3。1嵌入式Linux系統(tǒng)移植移植嵌入式Linux系統(tǒng)是實現(xiàn)嵌入式系統(tǒng)圖形用戶界面的系統(tǒng)軟件核心。嵌入式Linux系統(tǒng)包括引導(dǎo)程序(Bootloader)、內(nèi)核(kernel)和根文件系統(tǒng)三個部分。嵌入式Linux移植到特定的硬件平臺上,一般需要以下五個步驟:①前期準(zhǔn)備包括從上下載嵌入式Linux的源碼包、搭建交叉編譯開發(fā)環(huán)境、配置主機的開發(fā)環(huán)境等;②配置Bootloader,并將其燒寫到目標(biāo)平臺的Flash上,使其能正常的啟動內(nèi)核;③配置和編譯Linux內(nèi)核,首先要對源碼進行一定的修改,并將其移植到目標(biāo)平臺上,然后再根據(jù)自己的硬件資源進行裁減,使內(nèi)核達(dá)到最優(yōu);④制作RAMDISK來掛接Linux的根文件系統(tǒng),并在RAMDISK上添加自己的應(yīng)用程序;⑤部署Linux系統(tǒng)使目標(biāo)板脫離交叉開發(fā)環(huán)境,直接在目標(biāo)機上本地啟動運行。由于篇幅所限,關(guān)于Linux的具體移植過程將不做詳細(xì)介紹。

3。2相關(guān)設(shè)備驅(qū)動的開發(fā)設(shè)備驅(qū)動在Linux內(nèi)核中扮演著特殊的角色。它們是一個個獨立的“黑盒子”,使某個特定硬件響應(yīng)一個定義良好的內(nèi)部編程接口,這些接口完全隱藏了設(shè)備的工作細(xì)節(jié)。用戶的操作通過一組標(biāo)準(zhǔn)化的調(diào)用執(zhí)行,而這些調(diào)用獨立于特定的驅(qū)動程序。Linux系統(tǒng)的設(shè)備分為字符、塊和網(wǎng)絡(luò)設(shè)備三種。字符設(shè)備是指存取時沒有緩存的設(shè)備。塊設(shè)備的讀寫都有緩存來支持,并且塊設(shè)備必須能夠隨機存取。網(wǎng)絡(luò)設(shè)備在Linux里做專門的處理。

3。2。1LCD控制器S1D13506驅(qū)動程序的開發(fā)①幀緩沖區(qū)驅(qū)動程序接口LCD控制器的功能就是產(chǎn)生驅(qū)動信號,進而驅(qū)動LCD。用戶只需要讀寫一系列寄存器,就可以配置和顯示驅(qū)動,在配置LCD控制器中最重要的一步是幀緩沖區(qū)的指定。幀緩沖區(qū)為圖像硬件設(shè)備提供了一種抽象化處理,它代表了一些視頻硬件設(shè)備,允許應(yīng)用軟件通過定義明確的界面來訪問圖像硬件設(shè)備。用戶程序只要與幀緩沖區(qū)驅(qū)動程序抽象出來的接口打交道,就可以把要顯示的內(nèi)容從緩沖區(qū)中讀出,從而顯示到屏幕上。

在Framebuffer(幀緩沖)驅(qū)動程序里最核心的結(jié)構(gòu)體是structfb_info,它記錄了當(dāng)前Framebuffer硬件設(shè)備的狀態(tài),其定義在Linux的include/linux/fb。h中,其中主要的結(jié)構(gòu)體有:(1)structfb_fix_screeninfo:定義了顯示設(shè)備自身的屬性,如屏幕緩沖區(qū)的物理地址和長度等。(2)structfb_var_screeninfo:記錄了楨緩沖區(qū)設(shè)備和指定顯示模式的可修改信息,主要包括屏幕的分辨率、顏色數(shù)和一些時序變量。實際的編程中,通過賦值來設(shè)置這兩個結(jié)構(gòu)體的相關(guān)參數(shù)。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 3 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉