首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S3C2440移植ucgui图形函数库 笔记(2)

S3C2440移植ucgui图形函数库 笔记(2)

void LCD_Off (void)
void LCD_ON(void)
这两个函数连接到LCD_240X320.C中的Lcd_EnvidOnOff(int onoff)
int LCD_L0_Init(void) 连接到 LCD_240X320.C 中的Lcd_Init();再加上一个清屏的函数
void LCD_L0_ReInit() 连接到LCD_240X320.C 中的Lcd_Init();不加清屏函数。
最后修改GUI_X.C文件
由于没有OS,所以有关OS的语句都得修改,幸好不是很多,就两个地方而已。
GUI_X_GetTime(void) 返回当前的OS_TimeMS ,那就修改一下,把变量赋值一个数比如是10 然后让函数返回这个值就行了 。
GUI_X_Delay(int ms)
自己写个延时程序吧,
GUI_X_Init();完成硬件的初始化,由于用的是现成的代码,板子的初始化都已经完成,我把LCD的初始化放在了这里。
做完以上的工作基本上算是完成了移植的工作了。
最后在主函数的适当位置添加一下程序
int Main()
{
其他代码
**************
GUI_Init();
GUI_DispString("Hello world!");
*************
其他无关代码
}
别忘记包含头文件 GUI.h
编译通过后 ,LCD上就会出现 “Hello World !”了。
下面说下我在移植时遇到的undefined symbol的主要三个比较难解决的错误:
1、  Error: undefined symbol LCDSIM_SetLUTEntry (referred from LCDWin.o);
这种错误应该还是很常见的,意思也很明显就是在LCDWin.c中没有定义LCDSIM_SetLUTEntry,一般只要把相应头文件加入即可,但就上面这个特定的错误,我发现函数LCDSIM_SetLUTEntry在LCDSIM.h里定义,而且已经在LCDWin.c里包含进了这个头文件,还是有错误,没办法我只好在LCDWin.c里重新定义了一次(其实这个函数什么也没实现)
void  LCDSIM_SetLUTEntry(U8 Pos, LCD_COLOR color, int LayerIndex)
{
       return;
}
2、  Error: undefined symbol main (referred from kernel.o)
这个错误我解决了好久,一是源文件里找不到kernel.c这个文件,二是我确实定义了main函数,最后终于在一篇相关文章的评论里找到了这个问题的解决方法(不知道是否具有通用性)原来mini2440的main函数是Main开头的m是大写的,应该改成小写,相关的当然还有起始代码中用到Main的一律小写就可以了。还有ADS的配置情况,在ucgui以及S3C2440的底层驱动中有多个main入口点,要在ADS里选择一个入口点:2440init.s;入口地址:0x30000000。
   3、Error:differing redefinition of #define macro U32
U32的定义不一致 为了不想改动太大,我直接把位于GUI\Core\LCD.h中的
#define U32 unsigned long 改为 #define U32 unsigned int
继承事业,薪火相传
返回列表