· 961·
第3期
郑海龙:基于嵌入式的工业控制人机界面系统研究
Flash中,即可启动I.inux操作系统。
3)布线:过孔最小孑L径8 mil,最小线宽5 mil,最小间
距j
V和
mil;电源层VCc采取内分割方式,同时存在3.3
3驱动程序开发
1.3
V平面;CAN、USB、以太网等差分信号分别按照差分对
3.1
LcD背光驱动开发
mil误差内)并尽量靠近;
走线原则以严格的等长(50
为实现人机界面系统的智能化与节能,系统应当在不需人
机交互功能的时候可实现关闭I.CD显示功能,并可根据用户要
求改变屏幕的亮度,为此应设计针对LCD亮度调节的程序∞-。
要实现LCD亮度调节,只需改变I。CD背光源的亮度(通
过改变背光电压)。在电子系统中.常用的直流电压调节方式
为PwM(脉冲宽度调制),本驱动的实现也是基于定时器的
PwM方式实现背光调节功能。
sDRAM的数据、地址、时钟在可能的前提下尽量在内层走
线,时钟信号在最佳布线层(SIGl)走线,通过走蛇形线的
方式将信号线的长度误差控制在100 mil以内;LCD各个数据
线的长度误差控制的300 mil以内。除顶层布线很密不铺地外。
两个信号层及底层均采取铺铜方式连接GND。
2嵌入式Linux移植
实现背光亮度的调节,只需要上层应用发出亮度参数给驱
动程序,并不需要从中读取任何数据信息。故只需要提供给系
统调用打开、关闭、写入3个人口点即可,定义file—opera—
tions如下,
2.1开发环境搭建
基于I。inux的嵌入式系统开发需要预先搭建基于PC机的
I。inux操作系统与相关环境,主要包括I。inux与交叉编译器安
装、TFTP服务器安装与配置、NFS服务器安装与配置。采用
虚拟机软件VMware workstation将Linux安装在windows下,
可同时运行I。inux和windows并可实现快速切换[3]。利用虚拟
机自带的VMware TOols和I.inux下Samba服务功能,可方便
实现Linux与windows之间的共享。
static struct
file—operations backlight—fops=i
open,
ope“:(Void(*))s3c—backlight
releas。:(void(*))s3c—backllght—close,
write:(void(*))s3c—backlight—write.f;
除以上3个人口点函数外,驱动程序还应包含模块加载时
2.2
内核移植
的初始化函数backIight—init—moduIe()和模块卸载时的注
销函数backlight—cleanup(),并分别用module—init(back
init module)
声
Linux内核采用了模块机制运行,只有系统启动所必须的
相关代码才驻留在内存中,而其他非必须的部分代码(如驱动
程序模块等)则被设计成内核模块的方式,在需要使用时才由
内核载入Ⅲ。对于不同的硬件平台,只需要修改cPu、存储
器以及外设等基本配置,就可完成移植工作。采用的版本带有
针对mini2440开发板相关配置文件,由于本硬件平台所采用
的CPU与以太网卡芯片完全一致,移植过程相对比较简单。
本移植工作直接在mini2440相关文件中修改,修改完成后,
在U—BOot主目录执行”make mini2440—config&&.make”
即可完成u Boot的编译。
light
和module exit(backlight cleanup)
明。当执行insmod命令加载驱动模块时,内核会自动调用
module—init声明的函数,module—init主要实现PwM定时
器的初始化及向内核注册设备号。当执行rmmod命令卸载驱
动模块时,内核会自动调用module—exit声明的函数,module
—exit主要实现定时器资源的释放及通知内核注销该设备。
3.2触摸屏驱动开发
本驱动程序采用软件模拟SPI时序方式编写,对
ADs7843的操作需在时钟DCI。K上升沿采样数据,下降沿发
送数据。要实现触摸中断触发,需设置PDl~PDo为00。为
提高坐标采样精度,应选择差分方式和12位采样精度。因此,
对x方向的采样应将控制字节设定为Ox90,对Y方向的采样
应将控制字节设定为oxdo。每一次A/D采样都需要先发送控
制字节,而后才能进行数据接收。
在完成Linux内核相关配置后,根据硬件平台的不同对外
设、F1ash存储器等编译进内核的驱动进行修改、指定交叉编
译器、目标体系结构,即可开始制作Linux内核镜像文件。内
核镜像制作通过命令行输入方式进行,考虑到内核的裁剪、定
制、镜像制作可能需要若干次的重复修改,可采用shell脚本
方式代替,避免每次制作都要重复输入命令。
对ADS7843的操作包括写命令数据和读取电压数据两个
过程,但每次A/D转换都包括以上两步,故为减少系统调用
复杂性,驱动程序可只提供一个read人口点。本设备驱动提
供给系统调用打开、关闭、读取3个入口点。驱动程序还应添
2.3根文件系统制作
根文件系统的制作过程主要包括建立根文件系统目录、建
立动态链接库、交叉编译busybox、建立/etc目录下相关配置
文件、制作根文件系统镜像文件_。
加初始化函数ads7843一jnit—module()和模块卸载时的注销
函数ads7843一cleanup()。前者用于加载模块时初始化10口
及向内核注册设备号。后者在卸载模块时负责通知内核注销该
设备号及释放中断资源。考虑到触摸屏被按下时的可能有抖动
问题,中断服务程序需加入一定的延时与数据判断语句,中断
完成上述内容后,根文件系统内容制作完毕,内核可通过
NFS方式挂载本文件系统。但以NFS方式挂载的根文件系统
的前提是存在宿主机,故NFS方式只适合于系统调试阶段。
待系统调试完毕,需将根文件系统下载至硬件平台的Nand
Flash中,此时需要制作支持Nandflash的Yaffs根文件系统镜
像文件方法如下:
服务程序的处理流程如图4所示。
4嵌入式GUI设计
1)解压yaffs制作工具至宿主机根目录,tar—zxvf
mkyaffs 2image. tgz—C/。
在全面分析与比较了各种嵌入式GUI的特性后。采用
Qt/Embedded进行了人机界面系统的上层软件设计。Qt/Em—
bedded的交叉编译过程涉及到多个文件,须通过设置一些重
要的环境变量将它们相互关联起来。在交叉编译前,需预先安
装基于PC机的Qt/X11版本,提供对应的库支持以及在PC
2)在myrootfs同级目录下,执行命令mkyaffs 2image
rootfs.
myrootfS
img。
至此,“nux系统的移植工作全部完成,把u—B。ot、内
核镜像及yaffs根文件系统镜像文件下载至硬件系统的Nand
万方数据
全部评论(0)