minigui在uclinux上的移植心得

合集下载

基于uClinux系统的MiniGUI的研究与移植

基于uClinux系统的MiniGUI的研究与移植

定 时 器等 。

的外观非常华丽的图形界面。 通过两种不同的内部软件结构支持低端显

示设 备( 如单色 L D 和高端显示设备( C ) 如彩色显 示器) 后者在前 者 的基 础上提供 了强大 的图形 ,
功能 。

2 M nG 1 iiU 的特 点和体 系结构
2 1 MiiU 的特 点 . nG I
l s s te sr c ue a d c aa trsiso n G ,a d p e e t a s h me ta r n p a t Mi i UIt a g tp afr fe o f u y e h t t r n h r ce it fMi i UI n r s ns c e h tt s ln s n G o tr e l t m atrc n g — u c a o i
T 9 17 N 1 .3
和特点 , 并在配置和编译好 u l u 后 , Ci x 提出一种将 Mi G 1 n n U 移植到 目标平 台上的方案 。 u 关键词 移植
中图分类号
Re e r h a d P ri g o ii sa c n o t fM nGUIBa e n u iu y tm n sd o Ci x S se n
l 引言
嵌入式系统是当今一个非常重要的发展方向,
嵌入 式 的广 泛应 用 已经 无所不 在 , 手机 、 电话 座机 、
G I 统 : 缩 的 X Widw 系 统 、 nG IMi U 系 紧 no MiiU 、 —
co n o s pn U 及 Q / m e d d 等 ,而 r d w 、O e G I Wi T E bde
( o p t ea m n , egagN r l o ee , egag4 10 ) C m u r pr e tH n n oma C l g H n n 2 08 eD t y l y

MiniGUI

MiniGUI

消息的队列(2)
系统向应用程序消息队列投递消息是通过填充一个MSG 消息结构,再把它复制到消息队列中,MSG结构中的信 息如上所述,包括接收消息的句柄、消息标识、两个消息 参数以及消息时间。 应用程序可以通过GetMessage函数从它的消息队列中取 出一条消息,该函数用所取出消息的信息填充一个MSG 消息结构。应用程序还可以调用HavePendingMessage 函数来检查消息队列中是否有消息而不取出消息。 int GUIAPI GetMessage(PMSG pMsg,HWND hWnd); BOOL GUIAPI HavePendingMessage(HWND hMainWnd); 非排队消息不通过消息队列而直接发送到目标窗口的窗口 过程。系统一般通过发送非排队消息通知窗口完成一些需 要立即处理的事件,比如MSG_ERASEBKGND消息。
MiniGUI
MiniGUI的工作流程和体系架构的分析 基于GUI的应用程序设计 MiniGUI在嵌入式Linux下的移植
MiniGUI的工作流程和体系架构的分析
的概念(1) MiniGUI的历史 MiniGUI的体系架构 MiniGUI的事件驱动和消息机制 MiniGUI的三种运行模式
GUI概念(2)
Gui Framework提供给应用的接口主要包括窗口的建立, 事件的注册,还会提供更加底层的接口让应用创建自己特 色的窗口。Framework内部实现主要分为四块: 1. 图形引擎 2. 事件系统 3. 窗口系统 4. 用户接口层 图形引擎提供最底层的图形函数,如点、线、矩形、椭圆 形、图片等,及最底层的图形区域的计算,颜色的计算等。 事件系统提供对最原始的硬件源事件的管理,如鼠标的点 击,键盘的输入,触摸屏的操作等,将这些事件发送到指 定的模块,以及提供内部自定义的事件管理和转发。 窗口系统实际上是对图形引擎和事件系统的封装,给本来 屏幕上每一块的区域都添加了”生命“,使得这些区域可 以响应事件,显示特定的图像。 用户接口层主要是为应用程序服务的,让应用程序不关心 图形引擎和事件系统的情况下来建立自己的窗口。

UCOS-II ucGUI的完美移植

UCOS-II ucGUI的完美移植

stm32 UCGUI 完美移植作者:Changing发表时间:09-16 04:13分类:电子相关1 Comment前一篇:stm32 DA 数模转换后一篇:Stm32 SWD 下载 调试配置UCGUI是一种嵌入式应用中的图形支持系统。

它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。

它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。

UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。

类似程序还有国产的一个MINIGUI (/zhcn/),MiniGUI 是一个自由软件项目。

其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Li nux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。

有机会尝试下,支持下国产,毕竟国内这样的公司不多。

这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。

但是目前来说只有这个版本的代码是最全的,包括了JPEG , MULTILAYER , MEMDEV ,AntiAlias等模块。

一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。

UCGUI390a 下载整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。

总之移植是个累人的活首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 T F T LCD stm32 驱动 触摸屏 两篇文章UCGUI的文件数量很大,主要用到UCGUI390a/Start/Con f ig 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。

uCGUI简单移植

uCGUI简单移植

嵌入式图形用户界面uc/gui在nios II上的移植uc/gui是一个优秀的嵌入式图形用户界面,这几天的工作就是将它移植到nios II系统上。

前人也做了一些工作,不过大部分都是针对其他硬核处理器,针对nios II软核处理器的移植资料那简直是凤毛麟角。

在阅读了相关文档后,我决定自己亲自动手实践,这下面的很多过程都是自己摸索出来的,并通过了实验的验证。

这只是一个初步的移植,也许在以后的更复杂的应用中,还需要对其进行调整。

但对目前我的应用而言,应该足够了。

写这篇文章的目的一是由于自己记性不好,所以需要给自己留个备忘,免得以后忘的一干二净;二是给有需要的朋友提供一些参考,也好相互交流,共同进步。

请大家多提宝贵意见。

一、源码和文档下载/上有很多不同版本的源码下载,目前能下到的最新版本是3.98,不过还有一些组件不是很完整,但作基础开发已经够用了。

ucgui3.98源码下载地址:uC-GUI-V3-98.zip。

ucgui最新版用户手册下载地址:uC-GUI-user.rar。

开发软件:quartus II 6.0, Nios II IDE 6.0。

二、移植过程先来看看解压后都有些什么东西:如图,核心的东西包括Config和GUI两个文件夹,这里面是ucgui的所有源码和配置文件。

ConvertColor包含彩色转换函数,ConvertMono包含灰度到彩色转换的函数,Core包含核心程序,Font是字体文件,LCDDriver包含多种控制器驱动,Widget是窗口控件库,WM是窗口库,提供复杂的功能。

其他文件夹包含一些应用范例以及一些有用的工具,留待慢慢探索。

1、config文件的移植:Config文件夹是ucgui的配置文件夹,里面有3个文件:GUIConf.h:gui的基本属性配置文件,有很多开关可以配置,具体可以参考ucgui的用户手册,这里只需配置几个必要的参数如下:#ifndef GUICONF_H#define GUICONF_H#define GUI_OS (1) /* 支持操作系统,nios系统自带了ucosII,所以我们选择此项,使gui支持该操作系统*/#define GUI_SUPPORT_TOUCH (0) /* 支持触摸屏,由于暂时没有用触摸屏,所以关掉这个开关*/#define GUI_SUPPORT_MOUSE (0) /* 支持鼠标,暂时关闭*/#define GUI_SUPPORT_UNICODE (1) /* Unicode字符串支持*/#define GUI_DEFAULT_FONT &GUI_Font6x8/* 默认字体*/#define GUI_ALLOC_SIZE 12500/* WM和memery device分配的内存*/ #define GUI_WINSUPPORT 1 /* Window manager available */#define GUI_SUPPORT_MEMDEV 0 /* Memory devices available,由于下载到的源代码中缺少memery device组件的源码,所以关闭此项*/#define GUI_SUPPORT_AA 1 /* Anti aliasing available */#endif /* Avoid multiple inclusion */LCDConf.h:LCD控制器的硬件配置文件,这个文件与硬件直接相关,一般是根据你所使用的LCD的类型和所用的LCD控制器的类型来配置。

linux minigui的用法

linux minigui的用法

linuxminigui的用法在Linux中,GUI工具包是一个很重要的库,因为它可以让开发人员更方便地开发图形用户界面应用程序。

尽管有很多不同的图形工具包可用,但是其中最流行的是GTK+。

不过,如果您需要使用另一种库来开发图形应用程序,LinuxMiniGUI可能是一个很好的选择。

它是一个小巧且轻量级的图形用户界面库,专门为Linux系统设计。

这篇文章将向您展示如何使用LinuxMiniGUI开发图形用户界面应用程序。

一、安装LinuxMiniGUI要使用LinuxMiniGUI,您需要首先将其安装到您的Linux系统中。

您可以使用包管理器来安装它。

例如,在Ubuntu上,您可以使用以下命令来安装MiniGUI:```arduinosudoapt-getinstalllibmigui3libmiguitpl1```二、创建简单的GUI应用程序安装完MiniGUI后,您可以使用GTK+工具来创建简单的GUI应用程序。

但是,如果您想要使用MiniGUI本身,您需要编写一些代码来创建窗口、按钮和其他GUI元素。

以下是一个简单的示例代码:```c#include<windows.h>#include<migui/migui.h>intWINAPIWinMain(HINSTANCEhInst,HINSTANCEhPrevInst,LPSTRa rgs,intncmdshow){MigWindow*window=migui_win_create(NULL,"MyWindow","MyWind owTitle",WINDOW_TYPE_NORMAL);MigLayout*layout=migui_lay_create(window,NULL);migui_lay_add(layout,migui_btn_create(window,"MyButton"));migui_win_show(window);while(1){MSGmsg;while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}}return0;}```这段代码创建了一个窗口和一个按钮。

MiniGUIPortGuide4Linux-2.0C

MiniGUIPortGuide4Linux-2.0C

MiniGUI 移植指南版本 2.0适用于 MiniGUI 版本 2.0.3/1.6.9及Linux/uClinux操作系统北京飞漫软件技术有限公司2006 年6 月版权声明《MiniGUI 移植指南》版本 2.0,适用于MiniGUI 版本 2.0.3/1.6.9及Linux/uClinux 操作系统。

版权所有 (C) 2003~2006,北京飞漫软件技术有限公司,保留所有权利。

无论您以何种方式获得该手册的全部或部分文字或图片资料,无论是普通印刷品还是电子文档,北京飞漫软件技术有限公司仅仅授权您阅读的权利,任何形式的格式转换、再次发布、传播以及复制其内容的全部或部分,或将其中的文字和图片未经书面许可而用于商业目的,均被视为侵权行为,并可能导致严重的民事或刑事处罚。

目录版权声明 (i)1 Linux/uClinux简介 (1)2 MiniGUI与Linux/uClinux (2)3在运行 Linux 的 PC 机上安装并运行 MiniGUI (4)3.1 MiniGUI对Linux内核的要求 (4)3.2 Linux下的软件维护和建立工具 (4)3.2.1 make 和 makefile (4)3.2.2 Autoconf/Automake (4)3.2.3 ldd 和 ldconfig (5)3.3 MiniGUI 的图形引擎 (6)3.3.1 MiniGUI 在字符控制台上的运行:配置 FrameBuffer (6)3.3.2 MiniGUI 在 X Window 上的运行:运行 QVFB (8)3.4 MiniGUI 的依赖库 (9)3.4.1 LibTTF 和 LibT1 (9)3.4.2 LibJPEG、LibPNG 等函数库 (9)3.5 编译并安装 MiniGUI (10)3.5.1 编译并安装 MiniGUI (10)3.5.2 安装MiniGUI的资源 (11)3.5.3 编译并安装MiniGUI的演示程序mde (11)3.6 运行MiniGUI示例程序 (11)4在SkyEye的EP7312模拟器上运行MiniGUI (13)4.1 安装交叉编译工具链 (13)4.2 安装SkyEye (13)4.3 配置、编译Linux (14)4.4 SkyEye EP7312模拟器的MiniGUI输入引擎 (14)4.5 交叉编译MiniGUI (15)4.6 交叉编译MiniGUI示例程序 (17)4.7 准备文件系统 (18)4.8 运行MiniGUI示例程序 (20)5在Xcopilot模拟器上运行MiniGUI (22)5.1 安装交叉编译工具链 (22)5.2 安装Xcopilot (22)5.3 配置、编译和运行uClinux (22)5.4 Xcopilot模拟器的MiniGUI输入引擎 (23)5.5 为Xcopilot模拟器交叉编译MiniGUI (27)5.6 交叉编译MiniGUI示例程序 (30)5.7 准备文件系统 (31)5.8 运行MiniGUI示例程序 (32)1 Linux/uClinux简介Linux操作系统核心最早是由芬兰的Linus Torvalds 1991年8月在芬兰赫尔辛基大学上学时发布的,经过众多世界顶尖的软件工程师的不断修改和完善,Linux得以在全球普及开来,在服务器领域及个人桌面版得到越来越多的应用,在嵌入式开发方面更是具有其它操作系统无可比拟的优势。

嵌入式系统结课论文

嵌入式系统结课论文

目录1 什么是嵌入式系统? (2)2 嵌入式处理器的分类与特点 (3)3 ARM9支持哪两种指令集 (5)4 什么是大端存储和小端存储? (5)5 bootloader的介绍 (6)6 嵌入式操作系统与通用操作系统相比有何不同? (7)8 嵌入式Linux的开发流程包括哪些步骤? (8)9 嵌入式系统的图形用户接口设计软件 (10)参考文献 (12)1 什么是嵌入式系统?1、1嵌入式系统概念嵌入式系统是计算机的一种应用形式,通常指嵌入在宿主设备中的微处理机系统。

它所强调的是隐藏计算机的常见形式,辅助寄宿主设备,使宿主设备的功能智能化。

据此,通常把嵌入式系统定义为一种以应用为中心,以计算机为基础,软硬件可以剪裁,适用于系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

1、2 嵌入式系统发展趋势系统化嵌入式应用软件的开发需要强大的开发工具和操作系统的支持。

随着互联网技术的成熟、带宽的提高,网上信息日趋丰富,应用项目多种多样,像手机、掌上电脑等嵌入式设备的功能不再单一,电气结构也更为复杂。

为了满足功能的不断升级,设计师一方面要采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力;同时还要采用实时多任务编程技术和交叉开发工具技术,简化应用程序设计,保障软件质量和缩短开发周期。

目前,国外商品化的嵌入式实时操作系统,已进入我国市场的有Windriver,Microsoft,QNX和Nuclear等。

开源化随着嵌入式Linux系统的产生,越来越多的嵌入式产品采用开源嵌入式操作体统。

由于Linux系统本身所具备的特点,使得开源嵌入式操作系统很容易推广并且得到不断的完善。

相信不久的将来,开源的完善的嵌入式系统会在嵌入式系统应用中占据更重要的地位。

人性化嵌入式设备之所以为亿万用户乐于接受,原因是它们具有与使用者之间的亲和力和自然的人机交互界面。

人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。

miniGUI演讲稿

miniGUI演讲稿

对于进程版的MiniGUI来说,应用程序的 消息传递通过套接字来进行,相应的模型 是:
程序(进程)1 程序(进程)2 套接字 程序(进程)3
服务器程序
鼠标
键盘
MiniGUI-Standalone模式
• MiniGUI-Standalone模式是不需要多线程和多进程 支持的,可以以独立的方式运行的。这个模式适 合运行在功能单一的应用场合。
MiniGUI在Linux下安装: libMiniGUI-1.6.10.tar.gz MiniGUI的源码包
MiniGUI-res-1.6.10.tar.gz MiniGUI的资源包,包 括基本的字符,鼠标,图标等
mg-samples-1.6.10.tar.gz MiniGUI的一些基本的例 子。 qvfb-1.1.tar.gz qvfb源码包 jpegsrc.v6b.tar.gz 支持jpeg的源码包
可配置性
MiniGUI可配置性也很高,MiniGUI 可以被配置成基于线程MiniGUIThreads 运行模式还是基于进程的 MiniGUI-Processes 运行模式,或者只 是最简单的MiniGUI-Standalone 运行模 式,此外它还能配置字体类型,字符 集,图像支持格式,所需要的控件类, 整体风格,等等。
• 4. 通过SendNotifyMessage 发送。该函数向指定的窗口发 送通知消息,将消息放入消息队列后立即返回。由于这种 消息和邮寄消息不同,是不允许丢失的,因此,系统以链 表的形式处理这种消息。
• 5. 通过SendAsyncMessage 发送。利用该函数发送的消息 称为“异步消息”,系统直接调用目标窗口的窗口过程。 • 在MiniGUI 中,一个创建了窗口的线程一般拥有一个消息 队列

飞漫软件 MINIGUI 说明书

飞漫软件 MINIGUI 说明书

MiniGUI 用户手册适用于 MiniGUI Ver 1.3.x北京飞漫软件技术有限公司2003 年 10 月简介MiniGUI 是由北京飞漫软件技术有限公司主持的自由软件,遵循 GPL 条款发布(1.2.6及之前的版本以LGPL条款发布),其目标是为实时嵌入式 Linux 系统建立一个快速、稳定和轻量级的图形用户界面支持系统。

MDE 是 MiniGUI 的综合演示程序包,遵循 GPL 条款发布。

GNU GPL 条款的原文,可见本手册附录I。

用户可在遵循 GPL 条款的前提下使用MiniGUI 及 MDE,这样就无需支付任何许可费用,但这需要用户遵循 GPL 条款发布自己基于 MiniGUI 的应用程序;如果用户使用 MiniGUI 的应用程序而又不想遵循 GPL 条款,则应该首先获得飞漫软件的商业授权。

附录 I 给出了飞漫软件就 MiniGUI 的商业授权策略。

目前,MiniGUI 的最新稳定版本是 1.3.1。

您可以从北京飞漫软件技术有限公司网站的“产品”区(/product/cindex.shtml)下载最新的 MiniGUI 源代码和示例程序。

北京飞漫软件技术有限公司还为 MiniGUI 用户提供其它增值产品和服务,详情请访问 网站。

本手册详细讲述了 MiniGUI Version 1.3.x 的配置、编译、安装及运行,其中还整理罗列了大量常见问题及解决办法,相信读者能够从本书中获得一些有价值的资料,从而帮助用户迅速掌握 MiniGUI 的安装和配置方法,为尽快进入 MiniGUI 应用开发铺平道路。

I版权声明《MiniGUI 用户手册》 for MiniGUI Version 1.3.x。

版权所有 (C) 2003,北京飞漫软件技术有限公司,保留所有权利。

无论您以何种方式获得该手册的全部或部分文字或图片资料,无论是普通印刷品还是电子文档,北京飞漫软件技术有限公司仅仅授权您阅读的权利,任何形式的格式转换、再次发布、传播以及复制其内容的全部或部分,或将其中的文字和图片未经书面许可而用于商业目的,均被视为侵权行为,并可能导致严重的民事或刑事处罚。

Minigui在uClinux 上的移植心得

Minigui在uClinux 上的移植心得

Minigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子把源码文件复制到/home/liu/minigui目录下,解开源码[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建首先你需要一个Linux 环境,我安装的是RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。

这里搭建的环境是让MiniGUI 在你的PC 上可以跑起来,这样以后你开发程序就可以只在PC 上开发,调试好,最后交叉编译一下放到板子上就行了。

把 1.3.3 解开[user]# tar zxf[user]# tar zxf编译libminigui ,这个是minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure . yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是yes ,不然后面你的程序肯定会有问题,如果这里不是yes 的话,肯定是你的Redhat 9 安装不对,告诉过你安装时选everything ,你选了吗其中ttf 库是对TrueType 字体的支持,png 库是对png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。

MiniGUI_for_uCOS实验

MiniGUI_for_uCOS实验

4. 实验预习要求
(1) 仔细阅读<<ARM 嵌入式系统实验教程(三)>>第 1 章的内容,了解 MagicARM2200 实验箱的硬件结构,注意彩色液晶屏驱动电路和键盘电路。
(2) 阅读 MiniGUI 的文档<<MiniGUI 用户手册>>和<<MiniGUI 编程指南>>,了解 MiniGUI 的基本特点和应用配置选项,以及应用程序的编写。
static void update_rect(PSD psd, int l, int t, int r, int b) {
int bak;
if(l > r) {
bak = l; l = r; r = bak; } if(t > b) { bak = t; t = b; b = bak; }
LCM_UpdateRects(l, t, r +1 - l, b +1 - t, psd->addr); }
(3) MiniGUI-STR 软件包 用于 MagicARM2200 教学实验开发平台的 MiniGUI-STR for uC/OS-II 共有 2 个目录, 说明如下:
MiniGUI_Lib,MiniGUI-STR 函数库源代码,即 libminigui。
2
广州周立功单片机发展有限公司 Tel:(020)38730977 38730977 Fax:38730925
static void fb_setpalette (PSD psd, int first, int count, GAL_Color *palette) { }
static void fb_getpalette (PSD psd, int first, int count, GAL_Color *palette) { }

bootloader程序的比较与分析

bootloader程序的比较与分析

一.BootLoader简介在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。

一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:1、引导加载程序。

包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。

2、Linux内核。

特定于嵌入式板子的定制内核以及内核的启动参数。

3、文件系统。

包括根文件系统和建立于Flash内存设备之上文件系统。

通常用ramdisk来作为rootfs。

4、用户应用程序。

特定于用户的应用程序。

有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。

常用的嵌入式GUI有:MicroWindows和MiniGUI懂。

引导加载程序是系统加电后运行的第一段软件代码。

PC机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的OS BootLoader(比如,LILO和GRUB等)一起组成。

BIOS在完成硬件检测和资源分配后,将硬盘MBR中的BootLoader读到系统的RAM中,然后将控制权交给OS BootLoader。

BootLoader的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。

而在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

比如在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

简单地说,BootLoader就是在操作系统内核运行之前运行的一段小程序。

通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。

arm-linux学习笔记之minigui移植

arm-linux学习笔记之minigui移植

arm-linux学习笔记之minigui移植/u3/90065/showart_1793732.htmlminigui-1.6.10在s3c2410平台的移植开发板:SBC2410CPU:S3C2410linux-2.6.25.5fs:jffs2LCD:TFT320 X 240PC:fc8 linux-2.6.25.5(一)准备工作下载软件包libminigui-1.6.10.tar.gzmg-samples-1.6.10.tar.gzminigui-res-1.6.10.tar.gzmg-samples-str-1.6.2.tar.gz在/home/arm/创建一个minigui的目录,然后把这些载在的软件包放在该目录下,在分别解压缩。

再在/home/arm/minigui下创建一个miniguitmp的目录,用于安装编译以后的库文件。

(二)编译libminigui首先修改configure文件,在文件的开头加入交叉编译的路径CC=arm-9tdmi-linux-gnu-gccCPP=arm-9tdmi-linux-gnu-cppLD=arm-9tdmi-linux-gnu-ldAR=arm-9tdmi-linux-gnu-arRANLIB=arm-9tdmi-linux-gnu-ranlibSTRIP=arm-9tdmi-linux-gnu-strip然后执行[root@localhost libminigui-1.6.10]# ./configure --prefix=/home/arm/minigui/miniguitmp/ \--build=x86_64-linux \--host=arm-unknown-linux \--target=arm-unknown-linux[root@localhost libminigui-1.6.10]# make[root@localhost libminigui-1.6.10]# make install这个过程基本上不会有什么错误的执行make install的时候会把编译以后的资源安装到/home/arm/minigui/miniguitmp中,在这之下会有etc include lib usr几个目录产生。

miniGUI在linux环境下安装

miniGUI在linux环境下安装

minigui linux 安装与运行1.首先,从飞漫的网站上下载相关的压缩包:/res.shtml虚拟frambuffer的应用程序,用来调试运行程序qvfb-1.1.tar.gz资源文件:minigui-res-1.6.10.tar.gz示例程序:mg-samples-1.6.10.tar.gz开发库:libminigui-1.6.10.tar.gz在home目录下创建一个minigui的目录# cd /home# mkdir minigui将这些压缩包拷贝到/home/minigui目录下2.安装下载的文件首先安装minigui的资源文件:[root@root minigui]# tar -xvzf minigui-res-1.6.10.tar.gz[root@root minigui]#cd minigui-res-1.6.10[root@root minigui-res-1.6.10]# make install安装minigui的库文件[root@root minigui]#tar -xvzf libminigui-1.6.10.tar.gz[root@root minigui]# cd libminigui-1.6.10[root@root libminigui-1.6.10]# ./configure[root@root libminigui-1.6.10]# make[root@root libminigui-1.6.10]#make install安装minigui的例子库[root@root minigui]# tar -xzvf mg-samples-1.6.10.tar.gz[root@root minigui]#cd mg-samples-1.6.10[root@root mg-samples-1.6.10]# ./configure[root@root mg-samples-1.6.10]# make[root@root mg-samples-1.6.10]# make install安装qvfb[root@root minigui]# tar -xzvf qvfb-1.1.tar.gz[root@root minigui]# cd qvfb-1.1[root@root qvfb-1.1]# ./configure[root@root qvfb-1.1]# make[root@root qvfb-1.1]# make install3.设置参数1.这步要进入#cd /etc/目录下, 修改#vi ld.so.conf文件,再最后一行加入/usr/local/lib 即在系统共享函数库中加入MiniGUI的函数库路径[root@root etc]# gedit /etc/ld.so.conf //注意:不是ld.so.c(至少fedora10下不是)/usr/kerberos/lib/usr/X11R6/lib/usr/lib/sane/usr/lib/qt-3.1/lib/usr/local/lib4、在修改并保存后,执行ldconfig命令,更新系统函数库缓存[root@root etc]#ldconfig5.然后就可以使用qvfb体验miniGUI了,进入qvfb1.1根目录下的qvfb文件夹:输入下面命令:[root@fedora7]# qvfb &//加上&符号使qvfb进程开启后shell立即返回,否则会阻塞shell进程,需要再开一个shell才可以运行minigui程序。

uClinux下显示驱动移植及minigui的移植

uClinux下显示驱动移植及minigui的移植
screen_memory = (char *) mmap (0, buffer_size, PROT_READ | PROT_WRITE, 0, framebuffer_device, 0);
for (i=0;i < buffer_size ; i++ )
{
#ifdef CONFIG_FB_S3C44B0X
{ "s3c44b0xfb", s3c44b0xfb_init, s3c44b0xfb_setup },
#endif
修改/home/uClinux-dist/linux-2.4.x/include/asm/arch中的hardware.h文件以适应自己的板子。
int main() {
int framebuffer_device;
int line_size,buffer_size, i;
char *screen_memory;
//unsigned char buffer[480000],j=0;
struct fb_var_screeninfo var_info;
#include<linux/fb.h>
#include<unistd.h>
#include<sys/mman.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
unsigned char abc[76800] = {…..略}
*(screen_memory+i) =abc[i]0;
}

MiniGUI3.0在mini6410上的移植

MiniGUI3.0在mini6410上的移植

MiniGUI3.0在mini6410上的移植简介MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于1998 年底开始开发。

2002 年,魏永明先生创建北京飞漫软件技术有限公司,为MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。

最后一个采用GPL 授权的MiniGUI 版本是 1.6.10,从MiniGUI 2.0.4 开始MiniGUI 被重写并使用商业授权,从3.0.12开始,部分版本使用GPL授权。

历经十余年时间,MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种SoC芯片,已验证的硬件平台包括ARM-based SoCs、MIPS based SoCs、IA-based SoCs、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等。

准备工作交叉编译器友善提供,具体安装参考mini6410的使用手册;源码的下载从miniGUI官网上下载,需要有新浪账号或者twitter账号。

下面是我下载的版本。

[root@localhost minigui]# ls -l *.tar.gz-rwxrw-rw-. 1 root root 1427072 Jan 16 17:30 freetype-1_3_1.tar.gz-rw-rw-r--. 1 root root 63582 Jan 16 17:31 gvfb-1_0_0.tar.gz-rw-rw-r--. 1 root root 602762 Jan 16 17:32 qvfb2-2_0.tar.gz-rwxrw-rw-. 1 root root 557220 Feb 11 00:56 zlib-1.2.6.tar.gz-rwxrw-rw-. 1 root root 1059513 Feb 11 00:55 libpng-1.5.8.tar.gz-rwxrw-rw-. 1 root root 986681 Feb 10 23:42 jpegsrc.v8c.tar.gz-rw-rw-r--. 1 root root 340656 Jan 16 17:33 libmg3d-1_0_2.tar.gz-rw-rw-r--. 1 root root 1545209 Jan 16 17:34 libmgi-2_0_4.tar.gz-rw-rw-r--. 1 root root 1116885 Jan 16 17:33 libmgp-1_2_2.tar.gz-rw-rw-r--. 1 root root 648207 Jan 16 17:34 libmgplus-1_2_4.tar.gz-rw-rw-r--. 1 root root 659702 Jan 16 17:33 libmgutils-1_0_4.tar.gz-rw-rw-r--. 1 root root 3202804 Jan 17 00:29 libminigui-gpl-3_0_12.tar.gz-rw-rw-r--. 1 root root 2608473 Jan 16 17:29 mg-samples-3_0_12.tar.gz-rw-rw-r--. 1 root root 3449215 Jan 16 17:29 minigui-res-be-3_0_12.tar.gz官网上有几个库的版本太低,所以需要自己去网上下载,其中jpegsrc.v8c.tar.gz、libpng-1.5.8.tar.gz和zlib-1.2.6.tar.gz都是从网上找的最近版本(png和zlib这两个soucefoge上都有,前面一个是网上搜的,所以不能保证链接长期有效,但是网上搜一下还是比较容易找到的)。

嵌入式系统设计与应用[共5篇]

嵌入式系统设计与应用[共5篇]

嵌入式系统设计与应用[共5篇]第一篇:嵌入式系统设计与应用第一章:嵌入式系统定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗严格要求的专用计算机系统。

(一切非PC计算机系统)嵌入式系统特点:“专用”计算机系统,运行环境差异很大,比通用PC系统资源少,功耗低,体积小,集成度高,成本低,具有完整的系统测试和可靠性评估体系,具有较长的生命周期,需要专用开发工具和方法进行设计,包含专用调试电路,多学科知识集成系统。

嵌入式系统应用范围:汽车,工业控制,通信设备,消费电子,商业终端,航空航天,军事需求。

嵌入式系统的基本开发流程:系统定义与需求分析阶段,方案设计阶段,详细设计阶段,软、硬件集成测试阶段,系统功能性测试及可靠性测试阶段。

系统定义与需求分析阶段:对系统需求进行分析,制定系统的设计依据。

方案设计阶段:确定系统初步设计方案并形成设计描述文档。

详细设计阶段:完善初步方案,对方案实施详细设计。

软硬件集成测试阶段:对系统软硬件进行综合测试,验证系统设计功能。

系统功能性能测试及可靠性测试测试:对系统功能,性能,可靠性进行综合测评。

对于使用操作系统的嵌入式系统来说,嵌入式系统软件结构一般包含4个层面:板级支持包层,实时操作系统(RTOS)层,应用程序接口(API)层,应用程序层。

有些资料将应用程序接口API归属于OS层,按3层划分的应用程序控制系统的运作和行为;操作系统与硬件无关,不同的嵌入式操作系统其组成结构也不尽相同嵌入式操作系统种类繁多,大体分为两种:商用型和免费型商用型:VxWorks,Windows CE,pSoS,Palm OS,OS-9,LynxOS,QNX和LYNX 免费型:Linux和uC/OS—II uC/OS—II具有执行效率高,占用空间小,可移植性及扩展性强,实施性能优良,稳定性和可靠性良好等特点。

其内核采用微内核结构,将基本功能(如进程管理,存储管理,中断处理)放在内核中,留给用户一个标准API 函数,并根据各个任务的优先级分配CPU时间。

Ubuntu下MiniGUI3.0.12安装与移植

Ubuntu下MiniGUI3.0.12安装与移植

MiniGUI3.0.12及组件下载地址/downloads/index.html libmgplus-1.2.4下载地址/download/yong_f/40628071. 需要下载的组件libminigui-gpl-3_0_12.tar.gzmg-samples-3_0_12.tar.gzfreetype-1_3_1.tar.gzjpegsrc_v7.tar.gzlibpng-1_2_37.tar.gzminigui-res-be-3_0_12.tar.gzzlib-1_2_2.tar.gzqvfb2-2.0libmgplus-1.2.4(可以在csdn上下载到)(qvfb所需要的包)libqt3-mtlibqt3-mt-devalienqt-devel-3.3.8-4.fc7.i386.rpm2.安装各组件<1>libminigui-gpl-3_0_12.tar.gz(库)./configure --prefix=/usr/local --enable-qvfbial --disable-splash --disable-screensaver sudo makesudo make install<2>minigui-res-be-3_0_12.tar.gz(资源包)./configure --prefix=/usr/localsudo makesudo make install<3>freetype-1_3_1.tar.gz./configure --prefix=/usr/localsudo makesudo make install(在安装时会有ftdump.c的预处理标识符错误,修改./test/ftdump.c里的Print_Mem( memory_footprint.##field, string )改为: Print_Mem( memory_footprint.field, string )#define FOOTPRINT( field ) Save_Memory( &memory_footprint.##field )修改为:#define FOOTPRINT( field ) Save_Memory( &memory_footprint.field ))<4>安装PNG库./configure --prefix=/usr/localsudo makesudo make install<5>安装JPEG库./configure --prefix=/usr/local --enable-sharedsudo makesudo make install<6>安装zlib库./configure --prefix=/usr/localsudo makesudo make install<7>libmgplus-1.2.4./configure --prefix=/usr/localsudo makesudo make install将/usr/local/lib加入到.bashrc中<8>安装qvfb2(因为需要qt-3.3作支持,所以需要先安libqt3-mt,libqt3-mt-dev,下载qt-devel-3.3.8-4.fc7.i386.rpm,然后用alien转为deb,再用dpkg -i --force-overwrite 来安装此包)sudo apt-get install libqt3-mtsudo apt-get install libqt3-mt-devsudo apt-get install aliensudo alien qt-devel-3.3.8-4.fc7.i386.rpmdpkg -i --force-overwrite qt-devel-3.3.8-4.fc7.i386.deb(开始安qvfb)cd qvfb2-2.0./configure --with-qt-includes=/usr/lib/qt-3.3/include --with-qt-libraries=/usr/lib/qt-3.3/lib --with-qt-dir=/usr/lib/qt-3.3sudo makesudo make install(qvfb2与1不同,没有文件输入是不会显示出框图的)<9>修改MiniGUI.cfg[system]# GAL engine and default optionsgal_engine=pc_xvfb(修改此处)defaultmode=640x480-16bpp(修改此处)# IAL engineial_engine=qvfbmdev=/dev/input/micemtype=IMPS2[fbcon]defaultmode=1024x768-16bpp[qvfb]defaultmode=640x480-16bppwindow_caption=QVFB-for-MiniGUI-3.0exec_file=/usr/local/bin/qvfbdisplay=0#{{ifdef _MGGAL_PCXVFB[pc_xvfb]defaultmode=640x480-16bppwindow_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version) exec_file=/usr/local/bin/qvfb2(修改此处)display=0#}}<10>mg-samples-3.0.12 并运行./configure --prefix=/usr/localsudo makesudo make install./same/same问题1:执行示例出现Wrong JPEG library version: library is 70, caller expects 62原因:在编译libminigui的时候用的库是62,而在编示例时用的是70,导致版本不对解决办法:将/usr/lib/libjpeg.so /usr/local/libjpeg.so.62 全指向libjpeg.so.7.0.0 然后修改/usr/include/jpeglib.h 中的版本号为70,然后重新编译libminigui(若是坚持用libjpeg7的话用此办法)(关于miniGUI在2440上的移植会在下篇更新)以下是关于minigui的移植,认为是最详细的一篇,经本人实验也已经成功,转自/forum/showtopic-3899.aspx采用交叉编译方式【软件环境】PC:ubuntu 10.04开发板:Linux 2.6.32.2@2440Target: arm-none-linux-gnueabigcc version 4.4.3编译minigui3.0并移植需要的文件有(基本上都是比较新的版本,有些库文件在我尝试后还是选择了比较旧的版本):FreeType库:minigui字体引擎freetype-1_3_1.tar.gzJPEG库:minigui显示jpeg图片jpegsrc.v8c.tar.gzpng库:minigui显示png图片libpng-1.0.59.tar.gzzlib库:minigui数据压缩函数库zlib-1.2.6.tar.gzminigui所用到的资源minigui-res-be-3_0_12.tar.gzminigui核心库libminigui-gpl-3_0_12.tar.gzminigui样例mg-samples-3_0_12.tar.gzStep1:建立工作目录,如/home/profiles/minigui,将上述*.tar.gz放入该目录,并解压tar xzf freetype-1_3_1.tar.gztar xzf jpegsrc.v8c.tar.gztar xzf libpng-1.0.59.tar.gztar xzf zlib-1.2.6.tar.gztar xzf minigui-res-be-3_0_12.tar.gztar xzf libminigui-gpl-3_0_12.tar.gztar xzf mg-samples-3_0_12.tar.gzStep2:[编译Freetype库]cd freetype-1.3.1/(A)./configure --host=arm-linux --enable-static --prefix=/usr/local/minig ui修改Makefile第12行 all: ttlib ttest ttpo为all: ttlib ttpo第34行注释(或删)掉,即#cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) install 否则make就会出现下面的错误ftdump.c:172:1: error: pasting "." and "glyph_object" does not givea valid preprocessing tokenftdump.c:182:1: error: pasting "." and "first_instance" does not giv e a valid preprocessing tokenftdump.c:191:1: error: pasting "." and "second_instance" does not gi ve a valid preprocessing tokenftdump.c:201:1: error: pasting "." and "face_object" does not give a valid preprocessing tokenftdump.c:202:1: error: pasting "." and "glyph_object" does not give a valid preprocessing tokenftdump.c:203:1: error: pasting "." and "second_instance" does not gi ve a valid preprocessing token(B)make(C)make install[编译JPEG库]cd jpeg-8c/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar如(后面的库的编译修改configure亦如此):## M4sh Initialization. #### -------------------- ### Be more Bourne compatibleC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arDUALCASE=1; export DUALCASE #for MKS shif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; th en :(B)./configure --prefix=/usr/local/minigui --build=i386-linux \ --host=arm-linux --target=arm-linux --enable-shared(C)make(D)make install[编译PNG库]cd libpng-1.0.59/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui --build=i386-linux \ --host=arm-linux --target=arm-linux(C)make(D)make install[编译zlib库]cd zlib-1.2.6/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui --shared(C)make(D)make install[编译资源库]cd minigui-res-be-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccLD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui(C)make(D)make install[编译核心库]cd libminigui-gpl-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arCFLAGS="-I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include " CPPFLAGS="-g -I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include " CXXFLAGS="-g -I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "(此处要特别注意,我用的编译器所在目录为/opt/FriendlyARM/toolschain/4.4.3,注意跟自己环境的差异,下面的示例库编译亦然)(B)./configure --prefix=/usr/local/minigui --host=arm-linux \--target=arm-linux --build=i386-linux --with-osname=linux \--with-style=classic --with-targetname=fbcon --enable-autoial \--enable-rbf16 --disable-vbfsupport --enable-tslibial(上面的--enable-tslibial选项是minigui支持触摸屏必选的选项,后面会讲到)(C)make(D)make install[编译示例库]cd mg-samples-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arCFLAGS="-I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include " CPPFLAGS="-g -I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include " CXXFLAGS="-g -I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux(C)make这里应该会出错,是因为Makefile里的参数不对,程序找不到链接库,这么多Makefile,需要修改哪一些呢?查看根目录下的Makefile(vi Makefile),(line 204)会发现:COMMON_SUBDIRS = same graphics housekeeper minesweeper ctrl_dlg \lf_skin font_text look_feel dbuff note booksame graphics ... notebook这几个目录会按顺序依次被make,查看刚才出错的信息,肯定是same首先没被编译通过。

stm32 UCGUI 完美移植

stm32 UCGUI 完美移植

1/6/stm32-ucgui.html About Links Invite RssHome / Archive Trip Share E-Factory Findpark Quickweibo Mr.YongLan here is siri ..五十将相寻死路,生不认魂,死不认尸。

UCGUI是一种嵌入式应用中的图形支持系统。

它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。

它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。

UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。

类似程序还有国产的一个MINIGUI (/zhcn/),MiniGUI 是一个自由软件项目。

其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucle us 等)的实时嵌入式操作系统。

有机会尝试下,支持下国产,毕竟国内这样的公司不多。

这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。

但是目前来说只有这个版本的代码是最全的,包括了J PEG , MULTILAYER , MEMDEV ,AntiAlias等模块。

一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。

UCGUI390a 下载整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。

总之移植是个累人的活首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 TFT LCD stm32 驱动 触摸屏 两篇文章UCGUI的文件数量很大,主要用到UCGUI390a/Start/Config 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。

UCGUI移植教程

UCGUI移植教程

UCGUI移植教程
1. 环境搭建:首先,需要准备开发板和相应的编译工具链。

可以选择使用适合的开发环境,例如Keil、IAR或者GCC等。

2.移植UCGUI的底层驱动:UCGUI的底层驱动负责和硬件进行通信,并提供一系列函数接口给上层应用。

通常需要编写底层驱动的源代码,并将其与UCGUI的库文件链接。

3.配置移植环境:UCGUI提供了一个配置文件,该文件包含了各种编译选项和参数设置,可以根据具体的硬件平台进行修改。

通过修改这些配置文件,可以让UCGUI适应不同的平台。

4.移植字体和图像资源:UCGUI支持多种字体和图像格式,但并不包含实际的字体和图像资源。

因此,需要将所需的字体和图像资源转换成UCGUI支持的格式,并将其添加到应用程序中。

5.界面设计和调试:UCGUI提供了一套界面设计工具,通常可以在PC 机上进行界面设计和调试。

可以使用该工具创建界面,并将其转换成C代码,然后添加到应用程序中进行测试和调试。

6.运行UCGUI应用程序:最后,将编写的应用程序与UCGUI的库文件进行链接,生成可执行文件。

将该可执行文件烧写至开发板并运行,即可看到UCGUI的界面效果。

以上是UCGUI的移植过程的基本步骤,具体的移植过程可能会因不同的硬件平台而有所不同。

在进行移植时,可以参考UCGUI提供的官方文档和示例代码,也可以参考其他人的移植经验和教程。

需要注意的是,UCGUI的移植过程可能会遇到一些问题,例如显示效果不符合预期、界面响应速度慢等。

这时候可以通过调试和优化来解决这些问题,例如检查驱动程序的正确性、优化界面渲染算法等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M i n i g u i在u C l i n u x上的移植心得-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KIIMinigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子2、把源码文件复制到/home/liu/minigui目录下,解开源码3、[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tarzxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建首先你需要一个 Linux 环境,我安装的是 RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。

这里搭建的环境是让 MiniGUI 在你的 PC 上可以跑起来,这样以后你开发程序就可以只在 PC 上开发,调试好,最后交叉编译一下放到板子上就行了。

把 1.3.3 解开[user]# tar zxf[user]# tar zxf编译 libminigui ,这个是 minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure . yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是 yes ,不然后面你的程序肯定会有问题,如果这里不是 yes 的话,肯定是你的 Redhat 9 安装不对,告诉过你安装时选 everything ,你选了吗其中 ttf 库是对 TrueType 字体的支持,png 库是对 png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。

好了,现在通过了,下面是编译了[user]# make接来来就是漫长的等待了,让它慢慢的编译吧注:在make时,可能会出现如下错误::/usr/include/asm/:6:2: warning: #warning using private kernel header; include <> instead!:265:47: missing terminating " character:267:25: missing terminating " charactermake[3]: *** [] Error 1make[3]: Leaving directory `/opt/st2410/libminigui-1.3.3/src/newgal'make[2]: *** [install-recursive] Error 1make[2]: Leaving directory `/opt/st2410/libminigui-1.3.3/src/newgal'make[1]: *** [install-recursive] Error 1make[1]: Leaving directory `/opt/st2410/libminigui-1.3.3/src'make: *** [install-recursive] Error 1解决方法:修改文件,将265 line__asm__ __volatile__ ("call _copy_row": "=&D" (u1), "=&S" (u2): "0" (dstp), "1" (srcp): "memory" );修改为:__asm__ __volatile__ ("call _copy_row": "=&D" (u1), "=&S" (u2): "0" (dstp), "1" (srcp): "memory" );[user]# su 1.3.33.0.0] 好几个目录,里面有相应的文件检查 /usr/local/include 里面是不是多了一个 minigui 目录,/usr/local/include/minigui 时面好多的 .h 文件,如下:如果这里检查没有这些东西的话,那你前面的步骤肯定有问题,自己检查一下吧。

首先,修改你的 /etc/ 文件,在里面最后新加入一行 /usr/local/lib然后执行 [Root]# ldconfigOK !Libminigui 配置在 System Wide Options 里如下:[*] Build MiniGUI-Lite configure[user]# make[user]# make install在这个过程中如果出现 error while loading shared libraries: cannot open shared object file说明你的系统少了这个库,还是回去检查一下,你安装时Redhat 时是否选了everything ,或者在实际操作的过程中,这个库有可以被误删除掉,我就出现过,这时候你可以 google 一下,输入 redhat 9 ,应该就可以搜到相应的 rpm 包,安装时[root]# rpm –i --force [你的包名] 就OK了这里有个下载地址,可以试试,我是用讯雷下载的,别的工具没试过注意:在你后面的操作过程中有可能会导致丢失,这时候只要重装一下就OK 了解决了这个问题后重复安装过程[user]# ./configure[user]# make[user]# make installOK ,环境搭建好了,下面是测试了:)还记得前面让你下载的 1.3.0 这个包吧,这个就是一些例子,现在试试吧:)[user]# tar zxf[user]# ./configure[user]# make[user]# cd src看看 src 目录下是不是已经编译出可执行文件来了现在来执行一下吧,首先把 qvfb 加到你的可执行路径中去[user]# cd $HOME[user]# vi .bashrc在 .bashrc 最后面加上一句export PATH="$PATH:/sbin:/usr/local/arm/"保存退出,这里面有些路径是为以后用的,比如 /usr/local/arm/ ,先加上吧:)[user]# source .bashrc 1.3.0hellowordOK ,这个时候你应该可以看到在 qvfb 中的执行效果了吧,记住:一定要先运行 qvfb ,并且设置 qvfb ,然后再运行你的程序,而且qvfb 每重启一次就需要重新设置一下,真麻烦OK 你的 PC 环境搭建完毕了,你现在可以在 PC 上开发你的程序,并且编译,并在 qvfb 中执行,等完全验证它是正确的了,把它交叉编译一下,放到板子上去就可以了,呵呵:)4、交叉编译minigui库修改scripts/mkconfig,找到#echo "CFLAGS=\"$CFLAGS\" \\" >> $CONFIG_MNU#echo "LDFLAGS=\"$LDFLAGS\" \\" >> $CONFIG_MNU用echo "CFLAGS=\"$CFLAGS\" \\" >> $CONFIG_MNUecho "LDFLAGS=\"$LDFLAGS\" \\" >> $CONFIG_MNU替换[root@localhost libminigui-1.3.3] make menuconfig保存退出,则生成config-mnu文件,编辑,将#!/bin/sh# Automatically generated by make menuconfig.rm -fCC=arm-elf-gcc \CFLAGS="-I/home/liu/uClinux-040408/uClibc/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \LDFLAGS="-Wl,-elf2flt -static -Wl,-move-rodata -L/home/liu/uClinux-040408/lib/uClibc/lib \-L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib \-lc -lm -lpthread" \./configure --prefix=/usr/local/arm-elf \--build=i686-pc-linux-gnu \--host=arm-elf-linux \--target=arm-elf-linux \--disable-shared \--disable-lite \--disable-standalone \--enable-incoreres \--disable-flatstyle \--enable-newgal \--disable-nativegal \--disable-galcommlcd \--enable-galfbcon \--enable-adsial \--disable-micemoveable \--disable-cursor \--disable-fblin1r \--enable-fblin8 \--disable-fblin16 \--disable-fblin32 \--disable-textmode \--enable-dummyial \--disable-mc68x328ial \--disable-nativeial \--disable-qvfbial \--disable-qpfsupport \--disable-ttfsupport \--disable-type1support \--disable-latin9support \--disable-gbksupport \--disable-big5support \--disable-unicodesupport \--disable-savebitmap \--disable-imegb2312 \--disable-imegb2312py \--disable-aboutdlg \--disable-savescreen \--disable-grayscreen \--enable-tinyscreen \--enable-video-fbcon \--disable-video-qvfb \--disable-nativegalqvfb \--with-osname=uclinux覆盖原来内容[root@localhost libminigui-1.3.3] make[root@localhost libminigui-1.3.3] make install[root@localhost libminigui-1.3.3] ldconfig可以进入/usr/local/arm-elf目录中,你会看到新增加了etc和lib两个文件夹,这两个文件夹就是我们刚才用arm-elf-gcc交叉编译minigui的函数库所产生的结果,以后编译在目标板中运行的应用程序时,就会对这两个文件夹里的内容进行编译,从而产生适合于在arm开发板中运行的应用程序.5、交叉编译minigui-res-1.3.3进入minigui-res-1.3.3文件夹内,修改,在prefix = $(TOPDIR)/usr/local/后添加我们的交叉编译安装目录arm-elf,即prefix = $(TOPDIR)/usr/local/arm-elf.[root@localhost minigui-res-1.3.3] make install6、交叉编译mde-1.3.0◆[root@localhost minigui-res-1.3.3] cd 建立文件#! /bin/shCC=arm-elf-gcc \CFLAGS="-I/home/liu/uClinux-040408/uClibc/include -I/usr/include \-I/usr/local/arm-elf/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \LDFLAGS="-Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib \-L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib \-lpthread -L/usr/lib -lc -lm" \./configure --prefix=/usr/local/arm-elf \--target=arm-elf-linux \--host=arm-elf-linux \-exec-prefix=/usr/local/arm-elf \--enable-static \--disable-lite◆执行文件进行配置[root@localhost minigui-res-1.3.3] sh◆修改各子目录下的Makefile文件将LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lm -lminiguiLIBS = -lm -lpthread –lminigui替换:LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lpthread -L/usr/lib -lc -lmLIBS = -lpthread –lminigui◆修改各子目录下的Makefile文件将:COMMON_SUBDIRS = notebook bomb housekeeper same russiacontrolpanel vacs \fontdemo dlgdemo ctrldemo picview替换:COMMON_SUBDIRS = notebook tools bomb housekeeper same russiacontrolpanel vacs \fontdemo dlgdemo ctrldemo picview注:之所以将tools去掉,因为tools编译有错误,暂时无法解决◆编译[root@localhost minigui-res-1.3.3]make7、交叉编译mg-samples-1.3.0◆建立文件#! /bin/shCC=arm-elf-gcc \CFLAGS="-I/home/liu/uClinux-040408/uClibc/include -I/usr/include \-I/usr/local/arm-elf/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \ LDFLAGS="-Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib \-L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib \-lc -lm" \./configure --prefix=/usr/local/arm-elf \--host=arm-elf-linux \--target=arm-elf-linux \-exec-prefix=/usr/local/arm-elf \--enable-static \--disable-lite执行文件◆进行配置[root@localhost mg-samples-1.3.0] sh◆修改src/目录下的Makefile文件将LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lc -lmLIBS = -lminigui -lm -lpthread –lc替换:LDFLAGS = -Wl,-elf2flt -static -L/home/liu/uClinux-040408/lib/uClibc/lib -L/home/liu/uClinux-040408/ -L/usr/local/arm-elf/lib -lc -lmLIBS = -lminigui -lpthread◆编译[root@localhost mg-samples-1.3.0]make移植结束,但还没有测试。

相关文档
最新文档