嵌入式linux ucgui,Helper2416开发板移植ucgui(嵌入式linux运行ucgui)
Helper2416开发板移植ucgui(嵌入式linux运行ucgui)
[复制链接]
本帖最后由 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
建立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地址
调试设置.JPG (128.03 KB, 下载次数: 1)
2015-1-30 17:06 上传
(5). 调试起来,界面如下图所示,可以单步运行,查看变量等等
调试界面.jpg (133.29 KB, 下载次数: 1)
2015-1-30 17:07 上传
(6). 程序运行起来,开发板看到的就是这样啦(拍照出来,颜色有点失真)
Helper2416开发板运行ucgui.jpg (1.47 MB, 下载次数: 0)
2015-1-30 17:09 上传
至此便可以正常显示图形界面啦,基本移植即告一段落,至于触摸屏的使用,以及其他优化,可以根据项目具体实战。
ucgui-emblinux.zip
(3.33 MB, 下载次数: 830)
2015-1-30 17:27 上传
点击文件名下载附件
嵌入式linux ucgui,Helper2416开发板移植ucgui(嵌入式linux运行ucgui)相关推荐
- 烧写linux系统到开发板中,【嵌入式开发】向开发板中烧写Linux系统
作者 : 万境绝尘 终于拿到板子了, 嵌入式开发正式开启. 板子型号 : 三星 S3C6410 基于ARM11, 指令集基于arm6指令集; 为毛不是 Cortext A9的板子; 烧写内容 : Bo ...
- linux下s3c2440开发板,SAMSUNG S3C2440 ARM LINUX 开发板 上手初体验 --开发环境搭建
1,linux开发环境搭建 2,程序测试 easyOpentag驱动安装,打开连接,选择ARM-linux 1,环境搭建 我的系统版本 root@ubuntu:~# lsb_release -a No ...
- [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植
文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...
- 北京迅为i.mx6ull终结者开发板使用手册+嵌入式Linux开发指南+裸机手册下载地址
i.MX6ULL终结者三大手册,加速学习和开发速度,一秒化无形! <嵌入式Linux开发指南>+<开发板使用手册>+<裸机使用手册> 详细手册点击链接下载:http ...
- 新手学习嵌入式Linux和Android开发板推荐
一,确定目标,linux是一个非常非常大的概念.想全部吃透是不可能的.理想的说,搞懂linux,就可以做所有工作.个人更倾向于说想做什么样工作,需要侧重学linux的哪部分. 二,选择开发板 学习嵌入 ...
- linux网线插拔后ip地址丢失,网线拔掉检测,嵌入式网线直连开发板断电网线拔掉之后,上电仍能自动设置static静态ip地址...
网线拔掉检测,嵌入式网线直连开发板断电网线拔掉之后,上电仍能自动设置静态ip地址 1.首先设置永久固定静态ip地址 luther@gliethttp:~$ sudo vim /etc/network/ ...
- 在arm Cortex-A9开发板移植rtl8821au无线网卡并实现与外网通信
开发板:Xilinx ZC702 嵌入式系统:linux4.4 交叉编译器:arm-xilinx-linux-gnueabi-gcc WIFi工具:wireless_tools.30.rtl 驱动版本 ...
- 野火iMX6ULL Pro开发板移植SDL2
承诺的Linux三部曲移植还没写完,差个根文件系统没有写呢,但实在压抑不住内心的亢奋情绪,先把SDL2移植奉献给大家吧.关于SDL的移植,已经进行一个月了,之前把SDL移植成功后打算写Python的模 ...
- 开发板移植RTOS操作系统,RTOS操作系统适配开发板整理大全
文章目录 一.单片机/嵌入式有无操作系统的区别 二.操作系统时的分层架构图 三.移植FreeRTOS到小熊派开发板(STM32L431RC) 1. 硬件准备 2. 下载FreeRTOS源码 2.1. ...
- 全志V853开发板移植基于 LVGL 的 2048 小游戏
LVGL 开发实战 移植基于 LVGL 的 2048 小游戏 这一节将以一个已经编写好的 lvgl 小游戏 2048 描述如何将已经编写完成的 lvgl 程序移植到开发板上. 这里使用的 2048 小 ...
最新文章
- git是航空母舰:ScrumBoard
- 思科发力虚拟化和云服务 推出多款新品
- 02基于python玩转人工智能最火框架之TensorFlow人工智能深度学习介绍
- 华为 命令 so easy
- Android 软键盘相关问题
- arduino消息服务器,在C(Arduino IDE)中将API链接消息解析为服务器(示例代码)
- (pytorch-深度学习)双向循环神经网络
- hql删除mysql语句_hibernate hql删除异常
- 推荐制作精良的笔记软件Wire Note 应用键盘钩子技术获取即时数据 资料查阅的好工具 建立代码片段数据库...
- Arduino应用开发——通过小爱同学控制灯光
- nodejs调用阿里云盾身份证二要素验证
- cba篮球暂停次数和时间_篮球比赛一节有几次暂停?
- Windows Server下独立根CA的安装及使用(超详细)
- 四级网络工程师试题二
- Unity技术手册 - 粒子基础主模块属性-中
- 学计算机要Ghz,ghz是什么意思,电脑ghz是什么意思?
- AutoCAD2006激活方法
- 啥是预乘?——Nuke中的Premult(预乘)和Unpremult(预除)
- custom_setting
- 《首席执行官》观后感
热门文章
- BIN文件和HEX文件区别
- win10安装打印机驱动的方法,电脑打印机驱动安装教程
- 目标检测:Object Detection in 20 Years: A Survey
- php网站服务器工具,PHP网站服务器管理软件LuManager1.1.9发布
- 因果推断笔记——DML :Double Machine Learning案例学习(十六)
- freemaker eclipse 插件下载
- 百度富文本编辑器的宽度自适应
- Qt-十字消除小游戏
- 基于matlab的信号频谱分析 开题报告,基于MATLAB的数字信号处理开题报告
- Idea如何设置页面内容模板