一、实验目的
1. 初步掌握ucgui底层硬件驱动函数;
2. 掌握将ucgui移植到arm s3c44box上的方法和步骤。
二、实验内容
移植ucgui到arm处理器s3c44box上,并编写hello world程序,在micetek 44b0实验平台的lcd上显示“hello world!”字符串,在lcd显示平面坐标(20,20)处,显示一个小于10000的整数,该整数不断循环加1,每次加1后立即更新显示,从而反应出显示输出的速度。
三、预备知识
1. ucgui的体系结构:
ucgui包含三个总的文件夹:application,config,gui.其中:
ⅰ application是应用程序的文件夹,它中间包含主函数文件,其它资源文件。
ⅱ config是gui的配置文件夹,它包含三个文件:
★ guiconf.h是ucgui的配置文件,负责配置gui的对os,window manager,dma,触摸屏,unicode码的支持。以及设置默认字体和各种控件的默认颜色等。
★ guitouchconf.h负责配置触摸屏。
★ lcdconf.h负责配置lcd显示器,如分辨率,颜色位数,以及lcd控制器的其它设置。
ⅲ gui是ucgui的实现部分,它是gui最重要的组成部分,其中包含八—九个文件夹。
★ convertcolor是彩色颜色转换文件夹,它里面包含24位色—各种颜色之间的转换的函数。
★ convertmono是灰度颜色转换文件夹,它里面包含24位色—单色,四级灰度,16级灰度和用户自定义颜色之间转换的函数。
★ core是gui的核心,gui多数的处理函数都在这个文件夹里面。
★ font是gui的字体文件夹,我们可以通过对它里面文件的增减来增删字体。
★ lcddriver是gui的底层接口部分我们所移植的部分就应该在这个文件夹。
★ memdev是gui的dma模式的一些处理函数文件。
★ widget里面含有各种窗口控件,如对话框,按钮等控件。
★ wm是gui的窗口消息处理函数文件夹。
★ touch是触摸屏和鼠标的底层接口部分。
2.ucgui需要移植的部分
① ucgui移植需要修改的文件有:修改main.c,lcdconf.h,在lcddrive文件夹添加lcd 44b0.h, lcd 44b0.c其中lcd 44b0.h是lcd 44b0.c的声明,lcd 44b0.c提供一系列lcd底层函数接口。
② 若要支持dma模式还要添加一个lcdmemc.h, lcdmemc.c文件。lcdmemc.h使lcdmemc.c的声明,lcdmemc.c使dma模式的底层接口函数。
③ 若要支持触摸屏和鼠标还需要在guiconf.h中修改一下定义:
#define gui_support_touch (1)
使gui支持鼠标触摸屏,并配置guitouchconf.h文件。在guitouch下添加相应的接口驱动。
我们主要移植的使lcd的直接驱动模式,所以只需要修改就行了。
我用的是jediview(for arm)集成调试环境,其它环境类似,硬件为s3c44b0x,lcd为256色彩色液晶,分辨率为320×240。
四、实验设备及工具(包括软件调试工具)
硬件: micetek 44b0 实验系统
jedi仿真器
pc机 pentumn100以上
软件: pc机操作系统win2000
jediview集成开发环境
五、程序说明
新建一个文件夹ucgui,添加以上体系的所有文件夹及文件加到ucgui文件夹,删除lcddrive文件夹下的lcdwin.c,它是在vc下的仿真驱动程序,在lcddrive文件夹添加lcd 44b0.h, lcd 44b0.c。暂时不移植触摸屏驱动,可保持touch目录为空,以后扩展时再用。
在ucgui目录下新建一个inc文件夹,将option.h, 44b.h, 44blib.h, def.h,cache.h,lcdlib.h,44blcd.h添加进来。
将lcdlib.c添加到application文件夹。
新建一个工程也叫ucgui,添加以上体系的所有文件夹及其内部文件加到ucgu工程。
修改include配置:打开 tools->option->directory->include files添加路径
……ucguiguiconvertcolor
……ucguiguiconvertmono
……ucguiguicore
……ucguiguifont
……ucguiguilcddriver
……ucguiguimemdev
……ucguiguiwidget
……ucguiguiwm
……ucguiguitouch
……:ucosconfig
……guiapplication
其中……为你所建工程所在路径,以上这些路径在有的编译器可不加,自动找到,在jediview(for arm)集成调试环境需要添加。
由于ucgui 用到了数学库,在gcc编译器下需要在link设置中添加-lm参数,使编译器可以找到数学库。
六、实验现象
液晶显示屏显示的是实验结果,其中第2行的数值不断加1跳变。
伺服液压机的种类介绍
救命传感手环,落入水中0.5米及以下超过30秒后自动开启定位
基于一种标准Token的智能合约协议ERC20介绍
AI要想进一步发展 需要从脑科学得到启发
动力电池审查技术重大调整主要目的是为减轻企业负担
uCGUI如何移植到S3C44B0X
苹果存储外设厂商发布四块M.2 SSD的合体设备
如何解决DCS的数据波动来了解一下DCS的接地吧
三星创新科技已强势回归中国市场
蓄电池放电容量与环境温度的关系
中国联通推出“云光慧企”企业上云专项行动
异步电机是什么 启动和调速方法
SOURIAU面向医疗市场扩大JMX推拉式连接器规格
对高速信号8B/10B编码的初步认识
Pixel 4的真机照曝光,证实了后置的浴霸式摄像头模块真的存在
存算一体芯片面临的挑战和困难有哪些
STM32WB的双核架构及其优缺点解析
无人机航空电子设备开发商Sagetech演示NATO Mode 5
明略数据携手公安大学 共建大数据分析实验室
RFID使用的频段是多少