基于S3C2440设备驱动及其界面设计.docx
- 文档编号:1121428
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:18
- 大小:39.99KB
基于S3C2440设备驱动及其界面设计.docx
《基于S3C2440设备驱动及其界面设计.docx》由会员分享,可在线阅读,更多相关《基于S3C2440设备驱动及其界面设计.docx(18页珍藏版)》请在冰豆网上搜索。
基于S3C2440设备驱动及其界面设计
福建工程学院
《嵌入式系统》课程设计(论文)
题目:
基于S3C2440设备驱动及其界面设计
班级:
通信0902
姓名:
林骁恺
学号:
0509101125
指导老师:
张平均、陈婧、李光炀
1序言………………………………………………………………………………2
2实践课题题目……………………………………………………………………3
3设计目的…………………………………………………………………………3
4设计过程…………………………………………………………………………3
4.1MiniGUI在PC上的安装………………………………………………………3
4.2MiniGUI在ARM上的移植………………………………………………………4
4.3基于MiniGUI的应用界面编程和基于LED驱动程序的应用程序的编写……5
5调试结果及改进…………………………………………………………………11
5.1调试结果………………………………………………………………………11
5.2改进方案………………………………………………………………………12
6心得体会…………………………………………………………………………12
7参考文献…………………………………………………………………………14
1序言
MiniGUI是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。
它主要运行于Linux控制台,实际可以运行在任何一种具有POSIX线程支持的POSIX兼容系统上。
MiniGUI同时也是国内最早出现的几个自由软件项目之一。
MiniGUI的主要特色有:
遵循LGPL条款的纯自由软件。
提供了完备的多窗口机制。
这包括:
多个单独线程中运行的多窗口。
单个线程中主窗口的附属。
对话框和预定义的控件类(按钮、单行和多行编辑框、列表框、进度条、工具栏等)。
消息传递机制。
多字符集和多字体支持,目前支持ISO8859-1、GB2312、Big5等字符集,并且支持各种光栅字体和TrueType、Type1等矢量字体。
全拼、五笔等汉字输入法支持。
BMP、GIF、JPEG、PCX、TGA等常见图像文件的支持。
Windows的资源文件支持,如位图、图标、光标等。
插入符、定时器、加速键等。
其他(Beep、ETC/INI文件操作等)。
小巧。
包含全部功能的库文件大小为300K左右。
可配置。
可根据项目需求进行定制配置和编译。
高稳定性和高性能。
MiniGUI已经在Linux发行版安装程序、CNC系统、蓝点嵌入式系统等关键应用程序中得到了实际的应用。
可移植性好。
目前,MiniGUI可以在XWindow和Linux控制台上运行。
通过这个课程实践,我们进一步巩固嵌入的基础知识,而且可以复习嵌入式系统的基本结构,开发环境的建立和使用,进一步理解嵌入式基本驱动程序、应用程序的设计调试和编译移植方法,同时新学了MiniGUI在PC上的安装、移植和基于MiniGUI的基本输入输出应用编程编译与移植,从而完成了整个linux初步课程的学习。
2实践课题题目
基于S3C2440的设备驱动及其界面设计
3设计目的
3.1进一步巩固嵌入式系统的基本知识
3.2掌握嵌入式应用系统的基本结构
3.3掌握嵌入式系统开发环境建立和使用
3.4掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法
3.5学会查阅有关专业资料及设计手册
3.6MiniGUI界面编程
4设计过程
4.1MiniGUI在PC上的安装
4.1.1准备工作
4.1.1.1建立工作目录:
mkdir/minigui-free
cd/minigui-free
4.1.1.2复制源文件到工作目录:
cp/mnt/hgfs/D/minigui1.6/*/minigui-free
4.1.1.3解压文件:
tarzxvflibminigui-1.6.10.tar.gz
tarzxvfminigui-res-1.6.10.tar.gz
tarzxvfmg-samples-1.6.10.tar.gz
tarzxvfmde-1.6.10.tar.gz
tarzxvfqvfb-1.1.tar.gz
4.1.2MiniGUI库安装
4.1.2.1进入目录:
cdlibminigui-1.6.10/
4.1.2.2配置:
./configure
在x86上运行只需默认配置即可,配置完成后即可生成Makefile
4.1.2.3编译:
make
成功后即可生成必要的库文件等。
4.1.2.4安装:
makeinstall
在x86上安装库文件。
4.1.2.5把libminigui加入库搜索路径:
找到/etc/ld.so.conf,在这个文件末尾加上/usr/local/lib
4.1.2.6把系统共享库缓存刷新,将libminigui加载上,可以使用命令
ldconfig
这个命令执行时要花十多秒,耐心等待。
当然不使用刷新命令重启系统也可以。
4.1.3MiniGUI资源安装
4.1.3.1进入目录:
cdminigui-res-1.6.10/
4.1.3.2安装:
makeinstall
必要资源文件的复制安装等操作。
4.1.4MiniGUI例子编译
4.1.4.1进入目录:
cdmg-samples-1.6.10/
4.1.4.2配置:
./configure
4.1.4.3编译:
make
编译src目录下的例子程序,即可在src目录下生成可执行文件,用于验证MiniGUI是否在虚拟机上安装成功。
4.1.5安装qvfb
4.1.5.1进入目录:
cdqvfb1.1
4.1.5.2配置:
./configure
4.1.5.3编译:
make
4.1.5.4安装:
makeinstall
apt-getinstallqt3-dev-tools-embedded
4.1.6配置MiniGUI.cfg
vi/usr/local/etc/MiniGUI.cfg修改如下部分为
[system]
#GALengineanddefaultoptions
gal_engine=qvfb
defaultmode=800x480-16bpp
#IALengine
ial_engine=qvfb
mdev=/dev/input/mice
mtype=IMPS2
[fbcon]
defaultmode=800x480-16bpp
[qvfb]
defaultmode=800x480-16bpp
display=0
4.1.7运行MiniGUI例子程序
4.1.7.1打开qvfb:
qvfb-width800-height480&
4.1.7.2运行helloword:
./helloworld
出现此窗口说明运行成功。
4.2MiniGUI在ARM上的移植
4.2.1综述:
实际上过程与MiniGUI在虚拟机上的安装过程类似,只不过是使用交叉编译器来编译而已,以下为老师提供的脚本文件,内容中指定了交叉编译器和需要连接的一些库以及要运行的命令,为我们后续的交叉编译提供了极大的方便!
libcross.shminigui库交叉编译脚本
rescross.shminigui资源交叉编译脚本
samplecorss.shminigui例子交叉编译脚本
mdecorss.shminigui例子交叉编译脚本
libreduce.shminigui库裁剪脚本
4.2.2将libcross.sh考到minigui的lib库的解压文件夹中
将rescross.sh考到minigui的res资源解压文件夹中
将samplecorss.sh考到sample例子解压文件夹中
将mdecorss.sh考到mde例子解压文件夹中
4.2.3依次运行libcross.sh,rescross.sh,samplecorss.sh,mdecorss.sh
4.2.4到nfsroot的,目录下,将libreduce.sh考到这个目录下,运行libreduce.sh
4.2.5修改nfsroot下的etc下的MINIGUI的配置文件
4.2.6可以使用nfs等通信方式将minigui的库文件和资源文件和配置文件传送到开发板,将MiniGUI.cfg移到开发板的/etc目录下,将minigui的库文件移至开发板的/lib和/usr/lib下,将minigui的资源文件移至开发板的/usr/local/下。
4.2.7验证移植是否成功:
将mg-samples-1.6.10/src下经过交叉编译的可执行程序(例如HelloWorld)传送至开发板上,并运行:
./HelloWorld。
可能会出现权限不够的情况,则需要运行chmod777HelloWorld,然后再次运行:
./HelloWorld。
传送之前应使用fileHelloWorld,若出现ARM字样,即说明可运行于arm处理器上。
4.3基于MiniGUI的应用界面编程和基于LED驱动程序的应用程序的编写
4.3.1设计思路
我是先看有关MiniGUI的书籍,理解了整体框架后,再在写程序的过程中去使用手册里查阅相关函数,再根据驱动程序里的函数模型来调用函数,将框架和函数搭配在一起。
例如:
DLGTEMPLATE为对话框模板,定义对话框整体参数。
CTRLDATA为控件模板,定义对话框中的控件的参数。
以上两者可以定义整个界面。
InitDialogBoxProc为对话框窗口过程函数,用于对各种消息的处理,包括按键消息,许多函数就是用在这里。
InitDialogBox(HWNDhWnd)包含
DlgInitProgress.controls=CtrlInitProgress;和
DialogBoxIndirectParam(&DlgInitProgress,hWnd,InitDialogBoxProc,0L);
把控件信息告诉对话框模板,再把对话框模板和过程函数对应起来。
WinProc为主窗口的过程函数,InitMainWindow为主窗口的初始化函数,定义主窗口参数,实际上在这个程序中是可以不需要主窗口的。
MiniGUIMain为MiniGUI函数的入口点。
以上为大致框架,设计过程主要是在于修改InitDialogBoxProc对话框窗口过程函数。
例如:
用ioctl(led_fd,a,3)来控制LED的开关。
用GetWindowText(GetDlgItem(hDlg,IDC_EDIT),usr,22)获取编辑框中的字符串。
4.3.2程序注释
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 S3C2440 设备 驱动 及其 界面设计