没有合适的资源?快使用搜索试试~ 我知道了~
首页miniGUI 3.0.2 在Hi3535平台上的移植
资源详情
资源评论
资源推荐

miniGUI 3.0 在 Hi3535 平台上的移植之一
miniGUI 是一个自由软件项目。其目标是提供一个快速、稳定、跨操作系统的图形用户
界面(GUI)支持系统,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、
ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。最近在 Hi3535 的平台上移植
miniGUI3.0,并完成 Helloworld 的用例测试。这里将移植的过程记录如下。
一、 准备工作
1. Hi3535 SDK 和开发板一套,并构建 Hi3535 的嵌入式开发环境(包括 linux 编译主机、
安装交叉编译工具以及在宿主机上安装 NFS 调试环境等)。
2. 从官网下载 miniGUI 源码以及资源包和示例包。下载地址
3. 熟悉海思 Hi3535 的 Framebuffer 模块。包括海思 Hi3535 提供 Framebuffer 的标准接
口以及 Hi3535 提供的扩展接口(包括设置 colorkey,Alpha 等),Hi3535 的 Framebuffer
提供的几种工作模式(None Buffer,One Buffer,Double Buffer 等)。此外要仔细研
读海思 Hi3535 的 SDK 中提供关于 Framebufer 的指导文档以及参考代码。熟悉 Hi3535
初始化流程以及 Framebuffer 的使用流程(包括初始化以及绘制 Framebuffer)。
二、 初次编译
解压下载的源代码后,先在源代码的根路径下创建_install 目录用于保存编译生成文件。
运行以下命令进行配置:
./configure --prefix=[mg_path]/libminigui-3.0.12-linux/_install
CC=arm-hisiv100nptl-linux-gcc --host=arm-hisiv100nptl-linux --disable-pcxvfb
--disable-screensaver --disable-splash --disable-jpgsupport --enable-videoqvfb=no
--enable-rtosxvfb=no --enable-pcxvfb=no
注意:[mg_path]为 miniGUI 3.0 源代码的存储路径,在具体运行时根据实际保存的源代
码路径重新写入。
运行以下命令进行编译:
make
make install
编译成功后可在_install 目录下看到编译生成的文件。包括四个文件夹,简要说明如下:
etc 文件夹下保存运行配置文件 miniGUI.cfg,在实际调试过程中需要修改其内容,
详见后续章节描述;
include 集成 miniGUI 库时需要使用到的头文件。
lib 包括链接库和运行库。
share 暂未使用
三、 加入 Hi3535 的 framebuffer 接口文件
miniGUI 中 Framebuffer 部分的接口主要需要完成两个结构体的初始化,即
VideoBootStrap 和 GAL_VideoDevice。可查到上述两个结构体的定义如下:
1. typedef struct VideoBootStrap
2. {
3. const char *name;
4. const char *desc;
5. int (*available)(void);
6. GAL_VideoDevice *(*create)(int devindex);
7. } VideoBootStrap;

结构体成员简要说明如下:
name 为字符串变量,改字符串用于区分运行的平台,因此尽量保持唯一性。这里
使用 hi3535 作为 name。此字符串需要跟运行配置文件 MiniGUI.cfg 中的名称保持
一致。
desc 描述,目前没有查到有什么限制,本例使用 HI3535 Framebuffer Console
available 为需要填充的函数,检查 framebuffer 是否可用。即尝试打开设备,如果
打开成功即验证可用。
create 为需要填充的函数,函数主要完成 GAL_VideoDevice 变量的初始化。
GAL_VideoDevice 的定义详见 src/newgal/sysvideo.h 文件。
主要说两点:
name 仍然保持和 VideoBootStrap 中定义的一致。
hidden 成员变量,主要保存 Hi3535 在后续 Framebuffer 中操作需要的信息,可根
据需要进行定制。本例中暂定义为:
1. struct GAL_PrivateVideoData
2. {
3. Uint32 fd;
4. HIFB_BUFFER_S stCanvasBuf;
5. Uint32 memLen;
6. };
其中:
fd
为
open Framebuffer
设备后的句柄;
stCanvasBuf
为
framebuffer
的画布信息;
memLen
为
Framebuffer
分配的内存长度。
其他为需要填充的函数。
miniGUI 3.0.2
中的
src/newgal
中包含
hisi
文件夹,目前有实现
Hi3510/Hi3560/Hi3560a
等芯片的接口。本例中添加
Hi3535
芯片的接口,将海思
hi3535
的接口文件命名为:
hi3535_fbvideo.c
和
hi3535_fbvideo.h
,完成上述两个结构体变量的初始化。首先可使用
空函数完成代码。接下来修改配置文件(包括
configure
和
makefile
)来编译新增加的
Hi3535
的接口文件。
修改
configure.in
文件,增加编译
Hi3535
增加如下代码:
1. dnl Check HI3535 video driver
2. CheckHI3535Video()
3. {
4. AC_ARG_ENABLE(videohi3535,
5. [ --enable-videohi3535 include Hi3535 Video NEWGAL engine <default=no>]
,
6. enable_video_hi3535=$enableval)
7.
8. if test "x$enable_video_hi3535" = "xyes"; then
9. AC_DEFINE(_MGGAL_HI3535, 1,
10. [Define if include Hi3535 Video NEWGAL engine])

11. VIDEO_SUBDIRS="$VIDEO_SUBDIRS hisi"
12. VIDEO_DRIVERS="$VIDEO_DRIVERS hisi/libvideo_hisifbcon.la"
13. fi
14. }
增加调用上述代码:
1. dnl Checks NewGAL Engine.
2. {
3. CheckDummyVideo
4. CheckFBCON
5. CheckQVFB
6. CheckXVFB
7. CheckWVFB
8. CheckCOMMLCD
9. CheckShadowVideo
10. CheckMLShadowVideo
11. CheckEM85xxOSD
12. CheckEM85xxYUV
13. CheckEM86GFX
14. CheckSvpxxosdVideo
15. CheckBF533Video
16. CheckMB93493Video
17. CheckUTPMCVideo
18. CheckDirectFBVideo
19. CheckSTGFBVideo
20. CheckHI35XXVideo
21. CheckHI3560AVideo
22. CheckHI3535Video
23. CheckGDLVideo
24. CheckNexusVideo
25. CheckS3C6410Video
26. CheckCustomVideo
27. CheckSigmaVideo
28. CheckMStarVideo
29. }
修改 src/newgal/hisi 目录下的 makefile.in 和 makefile.am 文件,增加编译 hi3535 的
framebuffer 接口。
修改 makefile.in 文件如下:
1. am__objects_1 = hi3510_fbvideo.lo gal_hi3560a.lo hi3560_fbvideo.lo hi3535_fb
video.lo \
2. pix_array.lo tde.lo
剩余14页未读,继续阅读








安全验证
文档复制为VIP权益,开通VIP直接复制

评论2