移植ucGUI到s3c2440
會在以后的完善過程中更新文檔。
本文引用地址:http://www.ex-cimer.com/article/201611/317290.htm1、在http://www.ucgui.com/zuoping.asp下載uc/GUI 3.24版源碼
2、參考《基于MDK+jlink平臺s3c2440裸機程序》建立工程S3C2440-ucGUI。
直接用友善之臂裸機下的s3c2440 LCD底層驅動,在MDK環(huán)境調通LCD驅動。
3、復制源碼到工程目錄下
A.復制Config和gui目錄到工程目錄下。
B.復制Sample目錄下的GUI_X目錄到工程目錄下,要用到GUI_X.c
4、添加源代碼到工程中。
A.在Project Workspace下"New Group"建立以下組:
Config GUI-Core GUI-ConvertColor
GUI-ConvertMono GUI-LCDDriver GUI-Font GUI_X
B.把Config GUI-Core GUI-ConvertColor GUI-ConvertMono GUI-Font
相應的文件夾下的全部文件添加進相應的組下,
把GUI-LCDDriver下的LCDWin.c和GUI_X下的GUI_X.c添加進相應的組下。
5、修改配置文件
A.LCDConf.h
#define LCD_XSIZE (320)
#define LCD_YSIZE (240)
#define LCD_BITSPERPIXEL (16)
#define LCD_CONTROLLER 1375
B.GUIConf.h
#define GUI_OS (0)
#define GUI_SUPPORT_TOUCH (0)
#define GUI_SUPPORT_UNICODE (1)
#define GUI_DEFAULT_FONT &GUI_Font6x8
#define GUI_ALLOC_SIZE 12500
#define GUI_WINSUPPORT 0
#define GUI_SUPPORT_MEMDEV 0
#define GUI_SUPPORT_AA 0
6、修改.c文件
A.在GUI_X.c末尾添加:
void GUI_X_Warn(const char *s){}
void GUI_X_ErrorOut(const char *s){}
B.LCDWin.c
把以下幾行注釋掉:(否則,編譯不了這個C文件)
//??#if defined(WIN32) && !defined(LCD_SIMCONTROLLER)
//??#include
//??#include "memory.h"
//#else
//#endif /* defined(WIN32) && defined(LCD_USE_WINSIM) */
在#include ..之后,添加以下代碼:(前三個函數還沒寫好,目前只是為了編譯通過)
int LCDSIM_GetPixelIndex(int x, int y){return 0;}
void LCDSIM_SetLUTEntry(U8 Pos, LCD_COLOR color){}
int LCDSIM_GetPixelColor(int x, int y){return 0;}
void LCDSIM_SetPixelIndex(int x, int y, int Index)
{
PutPixel(x, y, Index); /* 這個函數是底層控制LCD在指定點畫點的函數 */
}
7、ucGUI的頭文件路徑:
Config
GUI/Core
GUI/Widget (如果使用到視窗控件庫)
GUI/WM (如果使用視窗管理器)
將目前使用到的前兩個包含路徑添加進工程:
"Option for Target Target 1 -> "C/C++" -> "Include Paths"
8、測試程序:
在初始完LCD硬件的后面,初始化GUI
Lcd_Init();
Lcd_PowerEnable(0, 1);
Lcd_EnvidOnOff(1);//turn on vedio
Lcd_ClearScr( (0x00<<11) | (0x00<<5) | (0x00) );
GUI_Init();
GUI_DispString("Hello world!");
更新中............
主要步驟總結:一、調通LCD硬件的底層驅動。
二、將ucGUI源代碼加入工程,想辦法,通過構造空接口函數編譯通過。
三、修改接口函數,讓ucGUI能通過調用底層接口,控制LCD。
四、逐步添加功能,如抗鋸齒,窗口,觸摸屏。
評論