嵌入式linux ucgui,Helper2416开发板移植ucgui(嵌入式linux运行ucgui)

本文详细介绍了如何在Helper2416开发板上移植ucGUI图形库,包括修改配置文件、创建framebuffer访问接口、添加操作系统支持、使用Eclipse进行编译和调试。通过移植,ucGUI能够直接操作framebuffer设备,实现图形界面的快速开发和调试。
摘要由CSDN通过智能技术生成

Helper2416开发板移植ucgui(嵌入式linux运行ucgui)

[复制链接]

2a0fb537e2975b3e6b702942b53e1d04.gif

本帖最后由 Gyroxp 于 2015-1-30 17:28 编辑

一些简单的应用,使用ucgui作为图形界面可能更加方便快捷。得益于ucgui良好的可移植性,移植工作也非常简单,借助于eclipse,甚至不需要编写makefile,而且可以使用图形界面进行调试。

移植基本原理是ucgui通过接口直接操作framebuffer设备,液晶屏便显示相应图形。以下是基本移植过程。

1.修改 GUIConf.h 文件

#define  GUI_OS    (1)      //这个宏定义为1,即使用OS

2. 修改 LCDConf.h 文件

#define LCD_BITSPERPIXEL  (16)

#define LCD_XSIZE         (480)

#define LCD_YSIZE         (272)

#define LCD_SWAP_XY    (0)

#define LCD_SWAP_RB    (1)

根据实际使用屏的参数修改这几个宏

3. 创建io_fb.c及io_fb.h文件,提供framebuffer访问接口

接口函数主要包括

fb_init            初始化fb设备

fb_setpixel     画点函数

fb_readpixel  读点函数

具体内容可以从附属资源中下载查看

4.修改LCDDriver.c文件,添加framebuffer的支持

基本移植只修改以下函数就可以了。

//LCD初始化

int  LCD_L0_Init(void) {

return fb_init();

}

//画点函数

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) {

/* Convert logical into physical coordinates (Dep. on LCDConf.h) */

#if LCD_SWAP_XY | LCD_MIRROR_X| LCD_MIRROR_Y

int xPhys = LOG2PHYS_X(x, y);

int yPhys = LOG2PHYS_Y(x, y);

#else

#define xPhys x

#define yPhys y

#endif

/* Write into hardware ... Adapt to your system */

{

fb_setpixel(480, 272, xPhys, yPhys, PixelIndex);

}

}

//读点函数

unsigned int LCD_L0_GetPixelIndex(int x, int y) {

LCD_PIXELINDEX PixelIndex;

/* Convert logical into physical coordinates (Dep. on LCDConf.h) */

#if LCD_SWAP_XY | LCD_MIRROR_X| LCD_MIRROR_Y

int xPhys = LOG2PHYS_X(x, y);

int yPhys = LOG2PHYS_Y(x, y);

#else

#define xPhys x

#define yPhys y

#endif

/* Read from hardware ... Adapt to your system */

{

PixelIndex = 0;

PixelIndex = fb_readpixel(480, 272, xPhys, yPhys);

}

return PixelIndex;

}

5. 创建GUI_X_Linux.c文件,添加操作系统对GUI的支持

用一个互斥信号量对GUI资源进行加锁解锁。

//解锁

void GUI_X_Unlock(void)    {

pthread_mutex_unlock(&mutex);

return;

}

//锁定

void GUI_X_Lock(void)      {

pthread_mutex_lock(&mutex);

return;

}

其他函数具体内容可以从附属资源中下载查看

6. 使用eclipse编译

(1) 建立工程 File-->New-->Project

a26d678767e8b431ecd7a25f1936bdc5.gif

建立eclipse工程.jpg (132.91 KB, 下载次数: 2)

2015-1-30 16:40 上传

(2) 拷入代码

如上图所示,ucgui的相关内容包括两个目录

ucgui             ucgui与平台无关的核心代码

ucgui_port     移植部分单独放到这里

用户程序(例如main.c)放入app目录

(3) 设置工程

打开 Project-->Properties-->C/C++Build 进行设置

GCC C Compiler部分:

Command  --> 将gcc改成arm-linux-gcc

Directories --> 添加路径 ucgui/GUI/Core

ucgui/GUI/Widget

ucgui/GUI/WM

ucgui_port

GCCC Linker部分:

Command --> 将gcc改成 arm-linux-gcc

Libraries    --> 添加m选项,否则无法调用math.h中的函数

GCC Assembler部分:

Command --> 将as 改成arm-linux-as

这时,点击Project-->Build Project即可进行编译了7. 调试及运行

(1). 修改开发板/etc/init.d/rcS,禁止qtopia自动运行

(2). 启动开发板,通过nfs挂载到ucgui所在工程目录,并进入可执行文件所在目录

(3). 开发板运行gdbserver,假设端口为1234,可执行文件名为ucgui-emblinux

#gdbserver :1234 ucgui-emblinux

(4). 宿主机eclipse进行调试设置Run-->Debug Configurations,

如下图所示,其中192.168.1.222是开发板的ip地址

a26d678767e8b431ecd7a25f1936bdc5.gif

调试设置.JPG (128.03 KB, 下载次数: 1)

2015-1-30 17:06 上传

(5). 调试起来,界面如下图所示,可以单步运行,查看变量等等

a26d678767e8b431ecd7a25f1936bdc5.gif

调试界面.jpg (133.29 KB, 下载次数: 1)

2015-1-30 17:07 上传

(6). 程序运行起来,开发板看到的就是这样啦(拍照出来,颜色有点失真)

a26d678767e8b431ecd7a25f1936bdc5.gif

Helper2416开发板运行ucgui.jpg (1.47 MB, 下载次数: 0)

2015-1-30 17:09 上传

至此便可以正常显示图形界面啦,基本移植即告一段落,至于触摸屏的使用,以及其他优化,可以根据项目具体实战。

a9b0c5778e0fc8e407a0becc9077f4b9.gif

ucgui-emblinux.zip

(3.33 MB, 下载次数: 830)

2015-1-30 17:27 上传

点击文件名下载附件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值