历史上的今天
返回首页

历史上的今天

今天是:2025年03月18日(星期二)

正在发生

2021年03月18日 | MiniGUI在OMAP5912上的移植

2021-03-18 来源:eefocus

1OMAP5912开发板简介


OMAP5912处理器是由TI应用最为广泛的TMS320C55X DSP内核(192 MHz)与低功耗、增强型ARM926EJ-S微处理器(192 MHz)组成的双核应用处理器,采用O.13μm CMOS工艺制造。C55xDSP可提供对低功耗应用的实时多媒体处理的支持;ARM926EJ-S MPU可满足控制和接口方面的处理需要。基于双核结构的OMAP5912具有极强的运算能力和极低的功耗,采用开放式、易于开发的软件设施,支持广泛的操作系统。


2 图形用户界面MiniGUI简介


与几种主流嵌入式GUI相比,MiniGUI具有以下显著特点:占用资源少,高性能,高可靠性,可配置。MiniGUl采用分层设计,层次结构如图1所示。



在最底层,GAL和IAL提供底层图形接口以及鼠标和键盘的驱动;中间层是MiniGUI的核心层,包括窗口系统必不可少的各个模块;最顶层是编程接口API。GAL和IAL为MiniGuI提供了底层的Linux控制台或者X Window上的图形接口以及输入接口,大大提高了MiniGUI的可移植性,并且使程序的开发和调试变得更加容易。


3 MiniGUI在OMAP5912开发板上的移植过程


3.1 构建Linux交叉编译环境


本实例中宿主机系统为RedHat 9 Linux,交叉编译工具为cross-2.95.3.tar.bz2,把工具解压缩到/usr/local/arm目录下,然后执行export PATH=/usr/local/arm/2.95.3/bin:MYMPATH;将安装好的库资源的路径添加到PATH中。这样,交叉编译环境就构建完成。后面所有的资源文件和库文件都应安装在/usr/local/arm/2.95.3/arm-linux目录。


3.2 交叉编译MiniGUI资源文件


提供程序调用所需的资源,如位图、光标、界面控制条等,编译方法较简单,只需在宿主机环境编译后即可在开发板上使用,解压minigui-res-1.3.3.tar.gz,进入目录执行make install命令,资源文件会安装到/usr/local/lib下minigui目录中。


3.3 交叉编译MiniGUI库函数,并进行配置安装


首先解压缩libminigui-1.3.3.tar.gz,进入Fra-meBuffer控制器配置文件libminigui-1.3.3/src/new-gal/fbcon,修改fbvideo.C中GAL_fbdev=”/dev/fb/O”,这是因为系统启动后,其/dev目录下实际存在的设备文件不是fb而是/fb/0。通常Frame-Buffer作为标准字符设备处理,主设备号为29,次设备号则从0~31,分别对应/dev/fb/0-/dev/fb/31的设备文件。修改完后进入解压后的目录,执行以下命令以完成对编译选项的配置:

CC是用来指定所使用的编译器;-target选项用来指定目标平台;-host选项用来指明宿主机的类型;-build选项与-arget一样为arm-linux;-en-able-lite选项用来指定生的模式。MiniGUI 1.3.3有Threads和Lite两种模式,本例中采用Lite模式;-prefix选项用来指定MiniGUI函数库的安装路径,本例中安装路径为/usr/local/arm/2.95.3/arm-linux。如果运行成功,就会生成定制的Makefile文件,然后可以继续执行make和make install命令编译并安装libminigui。


3.4.2 安装png库


这个库是用来显示png图形的,先解压libpng-1.0.10rcl.tar.gz文件,编译时,主目录下面没有配置文件,因此执行命令cp scripts/makefile.linux,将与开发系统体系结构一致的配置文件makefile.linux安装到主目录下面,然后还需要对makefile.linux文件进行修改:



其中:上述ZLIBLIB参数和ZLIBINC参数分别指定了库文件和头文件的路径。


3.4.3 安装jpeg库


这个库用来支持jpeg格式图片显示,编译过程与png库的编译过程类似:

3.4.4 安装libttf库


这个是TrueType字体的支持库,用来显示文字,解压freetype-1.3.1.tar.gz,进入目录,然后./con-figure会生成Makefile文件,因为没有安装Xlib testexample,后面编译通不过,屏蔽掉关于test的部分代码,打开Makefile文件,找到有“FTTESTDIR”字段的行注释掉,一共有7处。然后make编译库文件,在freetype-1.3.1/lib目录下,生成链接库文件:


至此libttf库安装完成。上述方法是通过自动配置完成安装,另外也可以通过手工配置完成安装:

参数O2表示完成编译过程的同时还要经过二级优化,不再加入符号表等调试信息,以使程序代码占用空间最小,同时执行的速度最快。


4 加入mde库支持


mde库是执行MiniGUI应用程序的归档压缩文件,其中包含被称为mginit的MiniGUI-Lite的服务器程序,安装的过程需要popt-1.7.tar.gz库支持,安装过程较为简单,和前面的库安装类似。


为了避免安装过程出现MINIGUI-LiteVerl.2.6 orLater的警告信息,必须对configure.in文件作出修改,添加下面的一行语句指定头文件和库文件的寻找路径:


同时对包含MiniGUI常用的宏以及数据类型定义的common.h文件路径进行修改,在参数AC_CHECK_HEADERS行中添加如下代码:

5 创建设备文件节点


在内核启动之前,应该保证MiniGUI运行于服务器模式,嵌入式系统上执行MiniGUI应用程序时,先由mginit调用vfork产生一个子进程,然后呼叫系统调用execl来启动,同时服务器程序还需要创建几个设备文件,在/dev目录下执行下面创建命令:


mknod ptysf c 2 63


mknod ttysf c 3 63


分别创建了主设备号是2、次设备号是63的设备文件ptysf以及主设备号是3、次设备号是63的设备文件ttysf。如果需要在系统启动时自动加载上述设备文件,可以在系统启动脚本文件rc.d中添加上述命令。至此移植阶段的工作完成。


6 下载程序到目标板并运行


通过以上的编译,在目标板上运行MiniGUI所需的库文件和应用程序已全部编译好,进入/usr/local/arm/2.95.3/arm-linux/,在etc,lib子目录下有需要拷贝到目标机上的资源。首先拷贝根文件目录到/opt/rootfs下,在根文件目录下新建和/usr/local/arm/2.95.3/arm-linux/下相同的目录结构,把/usr/local/arm/2.95.3/arm-linux/lib中相应的库拷到根文件系统的/usr/local/lib目录下去(无需拷贝libjpeg.a等静态库);拷贝MiniGUI资源文件,将usr/local/lib/目录下的minigui目录拷贝到根文件/opt/rootfs目录下;拷贝配置文件/usr/local/etc/MiniGUI.cfg,保持目录结构一致。修改根文件系统中的/etc/ld.SO.conf文件,在文件最后一行增加“/usr/local/lib”,然后执行命令ldconfig-r/opt/rootfs,将根文件目录设置为根目录,最后修改MiniGUI.cfg,使之适合目标板的硬件设置:将鼠标设备改为mdev=/dev/input/mouse0,鼠标协议类型改为mtype=IMPS2,其他的用默认方式即可。


至此,MiniGUI已经成功移植到了开发板上,图2为MiniGUI在开发板上启动后的画面。此后可以根据需要,继续修改MiniGUI库函数及各种资源,并且编写自己的应用程序,使开发板上的界面更加美观和完善。

7 结 语


介绍的MiniGUI移植过程已通过实验验证,并且大体的过程适合于其他型号的开发板和其他开源版本的MiniGUI。将图形用户界面引人嵌入式系统是嵌入式技术发展的必然趋势,可以肯定,随着MiniGUI的不断推广和功能的加强,它将在嵌入式系统设计中起着举足轻重的作用,并且在实际应用中不断走向成熟。


推荐阅读

史海拾趣

GTM公司的发展小趣事

关于电源反馈控制电路,网友们可能会提出多种问题,这些问题涵盖了其工作原理、设计、应用、故障排查及优化等方面。以下是一些常见问题及其简要回答:

  1. 问题:什么是电源反馈控制电路,它的主要作用是什么?
    回答:电源反馈控制电路是一种通过监测电源输出电压或电流,并将其与设定值进行比较,然后调整电源输出以维持设定值的电路。它的主要作用是确保电源输出的稳定性和准确性,无论负载如何变化,都能保持输出电压或电流在预定范围内。

  2. 问题:电源反馈控制电路有哪些常见的拓扑结构?
    回答:常见的电源反馈控制电路拓扑包括电压模式控制(Voltage Mode Control, VMC)和电流模式控制(Current Mode Control, CMC)。电压模式控制主要关注输出电压的稳定性,而电流模式控制则在电压控制的基础上增加了对输出电流的直接控制,以提高瞬态响应和稳定性。

  3. 问题:如何设计有效的电源反馈控制电路?
    回答:设计有效的电源反馈控制电路需要考虑多个因素,包括选择合适的反馈元件(如电阻、电容、电感)、放大器类型(运算放大器、比较器等)、补偿网络设计(以改善稳定性和响应速度)、以及选择合适的控制策略(如PID控制)。此外,还需要进行仿真和实验验证,以确保设计的电路能够满足性能指标。

  4. 问题:电源反馈控制电路中遇到稳定性问题时应该如何解决?
    回答:遇到稳定性问题时,首先需要检查反馈回路中的元件是否匹配良好,特别是补偿网络的设计是否合理。可以通过调整补偿网络的参数(如增加相位裕度)来改善稳定性。此外,检查控制策略是否适合当前的应用场景,必要时可以更换控制策略或调整控制参数。

  5. 问题:电源反馈控制电路中的噪声问题如何解决?
    回答:噪声问题通常来源于电源本身、外部环境或电路内部元件。解决噪声问题的方法包括使用低噪声的电源元件、增加滤波电路(如LC滤波器)、优化PCB布局以减少电磁干扰、以及采用差分放大器等噪声抑制技术。

  6. 问题:电源反馈控制电路在哪些领域有广泛应用?
    回答:电源反馈控制电路在电子设备的各个领域都有广泛应用,包括但不限于计算机电源、通信设备、工业控制、汽车电子、医疗设备、LED照明等。这些领域对电源的稳定性和效率要求很高,因此电源反馈控制电路成为不可或缺的一部分。

Amerace Electronic Components公司的发展小趣事

随着公司技术的不断提升和产品质量的持续保证,Amerace Electronic Components公司开始积极拓展全球市场。公司通过与国际电子行业的领军企业建立战略合作关系,成功将产品打入国际市场。同时,Amerace还在全球范围内设立了多个生产基地和销售网络,以满足不同国家和地区的客户需求。这种全球化的战略布局使得Amerace在全球电子元件市场中占据了重要地位。

DECON公司的发展小趣事

在电子行业中,技术更新换代迅速,DECON公司深知技术创新的重要性。因此,公司不断投入研发资金,引进高端技术人才,加强自主创新,推出了多款具有领先技术的连接器产品。这些产品不仅满足了市场需求,还提高了公司的市场竞争力。同时,公司还积极与国内外知名企业合作,共同研发新产品,推动了电子连接器行业的发展。

GE Industrial Solutions公司的发展小趣事
使用高压测试仪测量输入输出之间的隔离电压,确保满足安全要求。
永源微电子(APM)公司的发展小趣事

在创立初期,永源微电子便注重技术研发与创新。公司投入大量资源,在BCD工艺、VD-Planarprocess、VD-Trenchprocess、SJ-Mos、SGT-Mos、Rad-Hard-Mos等领域取得了长足进展,并成功实现了量产。随着技术的突破,永源微电子的产品线也逐渐从MOSFET拓展到桥驱Driver等更广泛的领域。这些技术成果不仅提升了公司的核心竞争力,也为公司赢得了更多客户的认可。

ETC2公司的发展小趣事

为了拓展全球市场,ETC2公司制定了国际化战略。他们积极参加国际展览和交流活动,与国际同行建立了广泛的合作关系。同时,ETC2公司还针对不同国家和地区的市场特点,推出了定制化的ETC产品和服务。这些举措不仅帮助ETC2公司成功打入国际市场,也为其未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

433M无线导游应用评估方案

无论在人山人海的热门旅游景点、展览中心,拥挤的集市上,声音吵杂的工厂,还是在环境安静的博物馆、公司单位、会场、教室, 无线龙无线导游系统都可以让您清晰的听到导游、演说者的一字一句,您不用担心因为注意力分散而掉队,或听不清领导的指示 ...…

查看全部问答>

nand flash驱动的问题

大家好,请问:smflash_lib.lib这个库是在哪里生成的呀?我在BSP没有发现在生成这个库的地方!谢谢 了!…

查看全部问答>

对IDE和SATA的I/O端口比较了解的高手看看

  最近要把原来写过的IDE接口的硬盘读写程序改成SATA的,用到1F0~1F7和3F6~3F7这些I/O映射地址对硬盘控制芯片的寄存器进行寻址,现在我需要知道用SATA接口时,这些I/O地址应该是什么,只要知道对SATA操作的I/O端口地址就能解决所有问题了,请 ...…

查看全部问答>

MEGA8熔丝位

MEGA8用STK500下载程序时, STUDIO里 选择FUSE  里选择内部1M晶振 然后点入别的界面  在点FUSE 他有改成默认的外部的了 以前用MEGA16的时候,不会出现这种情况的   不知道为什么…

查看全部问答>

请教个问题:关于CC2530_2591模块

原理图中CC2530很多引脚都是连接到插座上,想请教下这些插座的作用以及插座上几个焊盘接gnd或者VCC的原因。另外一个问题就是可不可以改变插座引脚的位置以更方便自己PCB布局。我画的是2层板布局。…

查看全部问答>

怎么在basic rf中使用外部中断呢?

大家好,请教大家一个问题,怎么在basic rf中使用外部中断呢?因为我发现basic rf有时会关闭全局中断。谢谢!…

查看全部问答>

关于航模飞行控制

本人新手,想做直升机航模的自行控制测量,求大神指点各模块采用哪些元器件比较好…

查看全部问答>

DSP的SCI和PC通讯,电路这样接会不会有问题?

DSP是3.3V供电的,这样子信号没加限流电阻直接输进去会不会把DSP烧坏? …

查看全部问答>

电子万年历

这是用1602做的,实物pcb,仿真都有 …

查看全部问答>