MiniGUI1.33开源版在ARMSYS2410-B上移植

发布者:huanxin最新更新时间:2021-06-25 来源: eefocus关键字:ARM  移植 手机看文章 扫描二维码
随时随地手机看文章

0 。准备

(a) 建立如下目录:

minigui

|--build_x86 /建立PC上运行的MiniGUI

|--build_arm /建立ARM上运行的MiniGUI

|--tarball /所有的包资源存放点

(b) download MiniGUI:

从www.minigui.com下载libminigui-1.3.3.tar.gz 和minigui-res-1.3.3.tar.gz并且放

tarball目录

(起始目录:minigui)

#cd build_x86

#tar zxvf ../tarball/libminigui-1.3.3.tar.gz

#tar zxvf ../tarball/minigui-res-1.3.3.tar.gz

#cd ../build_arm

#tar zxvf ../tarball/libminigui-1.3.3.tar.gz

#cd ..

(c) download and install qvfb:

从www.minigui.com下载qvfb-1.0.tar.gz,放入tarball目录

#cd build_x86

#tar zxvf ../tarball/qvfb-1.0.tar.gz

#cd qvfb-1.0

#./configure

#make

#make install

#cd ..

(d) 建立范例程序:

test.c

--------------------------------------------------------------------------test.c begin

#include

#include

#include

#include

#include

#define MWINDOW_LX 10

#define MWINDOW_TY 50

#define MWINDOW_RX 230

#define MWINDOW_BY 180

static char * hello_str = "HelloMiniGUI!";

HWND hMainWnd;

static int WinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

RECT rc;


switch (message)

{

case MSG_PAINT :

hdc = BeginPaint(hWnd);

GetClientRect(hWnd, &rc);

DrawText(hdc, hello_str, -1, &rc, DT_LEFT);

EndPaint(hWnd, hdc);

break;

case MSG_CLOSE :

DestroyMainWindow(hWnd);

PostQuitMessage(hWnd);

break;

default :

return(DefaultMainWinProc(hWnd, message, wParam, lParam));

}

return(0);

}


int InitMainWindow(void)

{

MAINWINCREATE window_info;


window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;

window_info.dwExStyle = WS_EX_NONE;

window_info.spCaption = "MiniGUI";

window_info.hMenu = 0;

window_info.hCursor = GetSystemCursor(0);

window_info.hIcon = 0;

window_info.MainWindowProc = WinProc;

window_info.lx = MWINDOW_LX;

window_info.ty = MWINDOW_TY;

window_info.rx = MWINDOW_RX;

window_info.by = MWINDOW_BY;

window_info.iBkColor = COLOR_lightwhite;

window_info.dwAddData = 0;

window_info.hHosting = HWND_DESKTOP;

hMainWnd = CreateMainWindow(&window_info);

if (hMainWnd == HWND_INVALID)

return(0);

else

return(1);

}


int MiniGUIMain (int argc, const char ** argv)

{

MSG Msg;


#ifdef _LITE_VERSION

SetDesktopRect(0, 0, 800, 600);

#endif


InitMainWindow();

ShowWindow(hMainWnd, SW_SHOWNORMAL);


while (GetMessage(&Msg, hMainWnd))

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

MainWindowThreadCleanup(hMainWnd);

return(0);

}


#ifndef _LITE_VERSION

#include

#endif

--------------------------------------------------------------------------test.c end


1. Build MiniGUI for PC:

(a) build lib

#Cd build_x86

#Cd libminigui-1.3.3

#./configure

#make

#make install

#cd ..

(b) install resource

#cd minigui-res-1.3.3

#make install

#cd ..

(资源被安装到/usr/local/lib/minigui/中)

(c) build and run test

#gcc –o test test.c –lpthread –lminigui –ljpeg –lpng –lz –lttf

把/usr/local/etc/MiniGUI.cfg中[system]组的gal_engine和ial_engine的值都改成qvfb

#qvfb –width 640 –height 480 –depth 16 &

#./test

#cd ..

2. Build MiniGUI for ARM:

(a) build lib

#cd build_arm

#cd libminigui-1.3.3

#make menuconfig

在默认的设置下

将“GAL engine options”中的“NEWGAL”改成“OLDGAL”;

将“Font options”中的最后三项保留,其余全部不选;

将“Image options”中对JPG和PNG的support去掉;

将“Development environment options”中“Compiler”设置成“arm-linux-gcc”,“Path prefix”设置成“/usr/local/arm/2.95.3/arm-linux”(假设交叉编译环境安装在/usr/local/arm)。其余选项全部取默认值。保存修改并退出menuconfig

#make

#make install

#cd ..

(b) build test.c

#arm-linux-gcc –o test test.c –lpthread –lminigui

这样就会产生一个名为test的文件。

(c) 设置root file system

假设已经有一个可以用的root file system

把先前安装在/usr/local/arm/2.95.3/arm-linux/lib下的库文件复制到目标文件系统的/lib目录下。如果分不清楚那个目录下哪些是需要复制的库文件,可以重复一次2.(a)的过程,并且把其中“Path prefix”的值改成你事先建立的一个空的目录的路径。比如,我建立了一个新的目录/root/need,并且把“Path prefix”的值改成了“/root/need”, 那么在执行完2.(a)后,/root/need/lib目录下的所有文件就是我们所需要复制的MiniGUI库文件。(这个办法很冗余-_-)

把/usr/local/etc/MiniGUI.cfg文件复制到目标文件系统的/usr/local/etc/目录下,并且修改该文件,将[system]组中的gal_engine的值改成“fbcon” ial_engine的值改成“console” mdev的值改成“/dev/mouse” mtype的值改成“PS2”,将[fbcon]组中的defaultmode改成“640x480-16bpp”(根据实际情况而定)。

把/usr/local/lib/minigui/res整个目录复制到目标文件系统的/usr/local/lib/minigui中。

最后把刚才编译好的test文件复制到目标文件系统的/bin下面。

(d) 设置鼠标

我的LCD没有带触摸屏,所以要设置鼠标,我的鼠标是USB口的。

修改文件系统的/etc/init.d/rcS,添加一行:“ln /dev/input/mice /dev/mouse”

(e) run

给板子上电,通过minicom执行:

#test &

就能在LCD上看到运行结果了。


关键字:ARM  移植 引用地址:MiniGUI1.33开源版在ARMSYS2410-B上移植

上一篇:远程多路数据采集系统方案及硬件详解
下一篇:基于ARM核的音频解码器单芯片系统研究

推荐阅读最新更新时间:2024-10-29 23:15

Gartner 预测 2024 年全球AI芯片收入将增长 33%
2024 年服务器中的AI加速器总价值将达到210亿美元 计算电子产品将占AI芯片市场总收入的 47% 到 2026年末,AI PC在企业PC采购中的占比将达到100% Gartner的最新预测 ,2024年全球人工智能(AI)半导体总收入预计将达到 710 亿美元,较 2023 年增长 33%。 Gartner研究副总裁Alan Priestley 表示:“生成式人工智能(生成式AI)目前正在推动数据中心对高性能AI芯片的需求。在2024年,服务器中所使用的AI加速器(用于卸载微处理器上的数据处理)的总价值将达到210亿美元,到2028年将增至330亿美元。” Gartner 预测到 2024 年,AI个人电
[半导体设计/制造]
Gartner 预测 2024 年全球AI芯片收入将增长 <font color='red'>33</font>%
ARM开发大脑芯片 可帮助脑损伤患者恢复活动
  据外媒报道, 芯片 设计巨头 ARM 已与美国研究人员合作开发出了一种大脑 芯片 ,这种 芯片 可以被植入人脑中。下面就随嵌入式小编一起拉来哦啊接一下相关内容吧。   这种芯片的设计目的是为了帮助脑部或脊椎损伤的病人。它可以被植入人的头骨内。   它不仅可以让人们执行各种任务,而且还能够接受感官反馈信息。   但是,我们可能需要等待一些时日才能看到这种芯片的好处。    ARM 公司将为华盛顿大学感觉运动神经工程中心(CSNE)设计的移植物开发芯片。   这些研究人员已开发出了早期的原型机。   “他们已开发出了一些原型机。” ARM 卫生保健科技负责人彼得-弗格森(Peter Ferguson)说,“现在的挑战就是能耗和热量
[嵌入式]
ARM:机器人将带来协助而非取代人类
电子网消息,根据ARM委托第三方针对全球近4000名消费者进行的独立调查显示,仅少数受访者认为人工智能的发展将导致机器人盛行,取代人类就业。 消费者对未来的愿景相当乐观,有61%的受访者认为自动化技术与AI的日渐盛行「会让社会变得更好」。 考虑到人工智能将在未来逐渐融入日常生活,30%的消费者认为这项发展最不利的因素是「人类的工作变少或被迫转行」。 但多数受访者仍抱持正面态度,认为机器人不会取代人类,而是增进人类多数工作的效率,并协助执行更多繁冗且危险的任务。 ARM全球营销暨品牌传播副总裁Joyce Kim表示,调查结果显示普遍对AI的乐观以及其对可能带来的商机非常振奋人心,但人们目前只触及AI所具备潜力的冰山一角,仍有庞大的潜
[半导体设计/制造]
嵌入式操作系统μC/OS-II在P89V51RD2中的移植
  引言   自嵌入式系统开发以来,很长时间都采用前后台系统软件设计模式:主程序为一个无限循环,单任务顺序执行。通过设置一个或多个中断来处理异步事件。   这种系统对于简单的应用是可以的,但对于实时性要求比较高的、处理任务较多的应用,就会暴露出实时性差、系统可靠性低、稳定性差等缺点。   μC/OS-II 是一种基于优先级的抢占式多 任务实时操作系统, 包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。而且它内核源代码公开,可移植性强,为编程人员提
[单片机]
嵌入式操作系统μC/OS-II在P89V51RD2中的<font color='red'>移植</font>
ARM的多任务和系统时钟
ARM的多任务和系统时钟 一、实验目的 学习系统时间相关API 函数和使用信号量解决uCOS-II 进程之间的同步问题,把系统时 间显示在一个文本框中,并可以通过键盘设置修改。 二、实验内容 本次实验在用户的Main_Task 任务中创建一个新任务,来实现系统时钟的显示和更新。 同时,通过在Main_Task 任务中响应键盘消息,可以对系统的时钟进行更改。使用uCOS-II 多任务系统中的信号量保证多个任务同时对系统的一个资源访问而不产生冲突。 三、预备知识 1、用ARM SDT 2.5 集成开发环境,编写和调试程序的基本过程。 2、基于操作系统的应用程序的框架结构。 3、会使用Source Insight 3 编辑C 语言源程
[单片机]
<font color='red'>ARM</font>的多任务和系统时钟
内核移植(1)首次生成uImage映象文件
1、先修改顶层Makefile,如下: ARCH ?= $ (SUBARCH) CROSS_COMPILE ?= 改为: ARCH ?= arm CROSS_COMPILE ?= arm-linux- 2、执行make s3c2410_defconfig 3、make uImage,首次编译完内核用了4分钟,尾部出现如下信息: LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready UIMAGE arch/arm/boot
[单片机]
基于ARM平台的RFID系统设计与实现
  1. 引 言    近年来,RFID(无线射频)技术是正在兴起的一项新兴的自动识别技术。RFID 利用射频方式进行非接触双向通信,从而实现对物体的识别,并将采集到的相关信息数据通过无线技术远程进行传输。相较目前广泛采用的条型码技术,RFID 具有读取距离远(几米至几十米)、穿透能力强(可透过包装箱直接读取信息)、抗污染、效率高(可同时处理多个标签)、信息量大的特点。它的出现给物流和生产方面的工业应用带来了革命性的影响 。    正是由于上述原因,本文提出了一种基于ARM 平台的RFID 系统设计与实现方案,以满足人们在嵌入式领域对RFID 技术的开发与应用。    2. 系统介绍    2.1 系统硬件设计    
[单片机]
基于<font color='red'>ARM</font>平台的RFID系统设计与实现
用NFS服务开发ARM Linux程序的一些方法
  NFS简单配置   NFS是实现两机间进行通讯访问的一种简单方法。在嵌入式Linux实验过程中,我们通过配置NFS实现PC机和实验箱ARM-Linux平台之间的访问。   原理是在PC机Linux中开启LFS服务,设置一个共享目录(这里是/arm2410),所有的源码编辑改动都可以在PC机中进行方便的修改,在ARM-Linux实验环境中,将PC-Linux的/arm2410目录远程mount到本地,实现两机间的同步读写访问,这样程序就可以方便的在ARM-Linux中运行测试。简单说来,目的就是设置一个共享目录,在PC-Linux中进行编辑,在ARM-Linux中进行运行调试。   配置过程:(默认NFS都已经进行安装,PC-
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved