新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM內核的移植實例

        ARM內核的移植實例

        作者: 時間:2012-03-30 來源:網絡 收藏

        (4)所有程序在長度和速度方面都進行了優化,結構清晰;

        (5)對于慢速的LCD控制器,可以使用緩沖存儲器減少訪問時間,提高顯示速度。

        3.2 uC/GUl步驟

        在使用uC/GUI時,可以按照以下幾個步驟來進行:

        (1)按照需要,定制uC/GUI;

        (2)指定硬件設備的地址,編寫接口驅動代碼;

        (3)編譯、鏈接、調試例子程序;

        (4)修改例子程序,并測試增加需要的功能;

        (5)編寫自己的應用程序。

        3.3 具體實現

        (1)首先介紹uC/GUI的目錄結構和基本配置。

        uC/GUI主要目錄如下:

        GUI/ConvertMono 使用黑白顯示設備時,所要使用的灰度轉換函數

        GUI/ConvertColor 使用彩色顯示設備時,使用的色彩轉換函數

        GUI/Config 包含了對uC/GUI進行配置的一些文件

        GUI/Core uC/GUI核心代碼

        GUI/Font uC/GUI與字體相關的代碼文件

        GUI/LCDDriver LCD驅動代碼文件

        GUI/MemDev 內存設備支持文件代碼

        GUI/Touch 輸入設備支持的文件代碼

        GUI/Widget uC/GU1支持的控件代碼,包括編輯框、列表框、按鈕和選擇框等

        GUI/WM uC/GUI窗口管理部分代碼

        (2)修改uC/GUI,使之適于

        在ADS環境中新建一個工程,將上述gui文件夾下的所有文件加入工程。

        將Config文件夾下的3個文件GUIConf.h、

        GUITouchConf.h和LCDConf.h加入新工程,如下修改LCDConf.h的內容:

        C程序

        /*LCDConf.h*/

        #ifndef LCDCONF_H

        #define LCDCONF_H

        #define LCDG4 //lcd顏色數,必須定義,LCDMONO(單色),LCDG4(四級灰度),LCDG16(16級灰度)

        #define LCD_XSIZE(640) /* LCD水平分辨率 */

        #define LCD_YSIZE(480) /* LCD垂直分辨率 */

        #define LCD BITSPERPIXEL(8)#endif /*LCDC0NF_H*//*以下是S3C44B0X LCD控制器的配置*/

        #include ..incoption.h

        #define SCR_XSIZE (640) //視窗屏幕大小

        #define SCR_YSIZE (480)#define LCD_XSIZE (640) //液晶屏幕大小

        #define LCD_YSIZE (480)#define M5D(n)((n)0x1fffff)

        #define ARRAY_SIZE_G4(SCR_XSIZE/4*SCR_YSIZE)

        #define HOZVAL (LCD_XSIZE/4-1)

        #define HOZVAL_COLOR (LCD_XSIZE*3/8-1)

        #define LINEVAL (LCD_YSIZE-1)

        #define MVAL (13)

        #define CLKVAL_G4 (10)

        #define MVAL_USED 0

        #endif /*LCDCONF_H */

        (3)加載LCD驅動。

        LCD驅動程序如前面所述,保存在lcd44b0.c中。出了底層的初始化函數LCD_Init_Controler()以外,還需要做以下修改,這里只提關鍵部分。

        主要進行相關的寄存器配置,以及和GUI的接口程序。這里只提及關鍵部分。

        ① 定義顯示緩沖區時使用的char數據類型,它是8bit的:

        unsigned char Bmp[ARRAY_SIZE_G16];//液晶顯示緩沖數組

        ② 定義讀寫緩沖區時使用的數據類型,也是8bit的U8:

        #define LCD_READ_MEM (Off)*((U8*)(frameBuffer256+(((U32)(Off)))))

        #define LCD_WRRITE_MEM(Off,data)*((U8*)frameBuffer256+(((U32)(Off)))))=data

        #define LCD_WRITE_REG(Off,data)

        ⑧ 定義液晶總線寬度定義位8bit:

        #ifndef LCD_BUSWIDTH

        #define LCD_BUSWIDTH(8)

        #endif

        ④ 定義字節順序:

        #define LCD_SWAP_BYTE_ORDER(0)

        至此uC/GUI的基本上已經完成了。當然這里只提供了移植的關鍵部分,更多更完整的移植還需要做不少的工作,如觸控屏的移植、鍵盤鼠標的移植以及中文字體的移植等。詳情請參閱uC/GUI手冊中Getting Started一章。

        4、數據顯示程序設計

        數據顯示程序主要是基于uC/GUI平臺的GUI函數庫,完成字符、曲線的繪制。與畫線相關的GUI函數有:

        GUI DrawHLine()

        原型:void GUI_DrawLine(int x0,int y0,int x1,int y1);

        其中,x0、y0、x1、y1分別為UGI坐標系下的起點和終點的橫坐標和縱坐標。

        GUI DispDec()

        原型:void GUI_DispDec(I32 v,U8 Len);

        其中,v為要顯示的十進制變量值,Len為要顯示的數據的位數。

        5、總結

        本文主要介紹了基于7S3C44B0X和L78C64液晶模塊硬件平臺的uC/GUI的移植,以及在工程上的應用,經過實際應用發現,uC/GUI功能強大,響應迅速,穩定性高,具有廣泛的應用前景。


        上一頁 1 2 下一頁

        關鍵詞: 實例 移植 內核 ARM

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 民乐县| 永济市| 沿河| 澳门| 陇南市| 亳州市| 漳平市| 秭归县| 浦东新区| 江城| 嘉黎县| 隆安县| 东宁县| 察雅县| 潜山县| 潼关县| 黄石市| 宣威市| 宝应县| 田林县| 马尔康县| 阳新县| 乌什县| 清水河县| 洪湖市| 施秉县| 合水县| 原平市| 沽源县| 四平市| 苏尼特右旗| 舟山市| 福清市| 汤原县| 伊金霍洛旗| 安达市| 塔城市| 增城市| 乐清市| 大姚县| 鲁山县|