首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于ARM和Linux通用工控平台设计与实现(2)

基于ARM和Linux通用工控平台设计与实现(2)

依据环境变量PREFIX,将编译好的工具链安装到指定文件夹就可以使用了。
例如,修改arm-Linux-gcc-2.95.3的环境变量为:
PATH=$PATHHOME/binPREFIX/bin:/usr/local/arm/2.95.3/bin:/sbin:/usr/sbin:/usr/local/sbin,同时编写hello.c程序进行验证
$arm-Linux-gcc hello.c -o hello-arm
$file hello-arm
hello-arm: ELF 32-bit LSB executable, ARM, version1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs),not stripped
这表明生成的hello-arm可以在ARM平台上运行,也证明交叉编译工具链是有效并且可用的。
Linux内核编译下载
具体步骤如下:
(1) 解压Linux-2.6.21-2009-04 -10.bz2:tar  xjvf Linux-2.6.21 -2009-04-10.bz2;
(2)  进入Linux-2.6.21目录,内核编译:make uImage;
(3) 编译完成后,通过SSH把uImage文件拷贝到Windows环境下;
(4)  配置U-Boot环境变量;
(5)  配置tftp服务器:运行Linux系统下的tftp服务器,复制Linux内核的uImage文件到tftp下载工作目录下,启动tftp服务,确保PC和AT91RM9200接入同一网段;
(6) 下载内核映像文件,并在U-Boot提示符下擦除Flash;
(7) 下载内核映像文件到Flash中;
Linux文件系统

软件平台使用cramfs文件系统,其特点是:系统访问某个位置的数据时,立即计算出该数据在cramfs中的位置,解压到RAM中,然后通过内存访问来获取数据,cramfs中的解压缩之后的内存中的数据存放位置都是由cramfs文件系统本身来管理,用户并不需要实现过程,因此增加了透明度,给开发人员节约了时间。
2 Linux操作系统下设备驱动开发

Linux上的设备驱动非常丰富,支持各种主流硬件设备和最新的硬件技术。设备驱动程序在Linux内核中,是一个个独立的“黑盒子”,使某个特定的硬件响应一个定义良好的内部编程接口,同时完全隐藏设备的工作细节。通过一组标准化的调用,把这些调用映射到设备特定的操作上,则是设备驱动程序的任务。而在Linux系统里,每一个设备都被看作一个文件,打开的设备在内核中由一个File结构标志,内核使用File_operations结构访问驱动程序的函数。每个设备与一组标准函数集关联。
3 Linux操作系统下应用程序开发

采取在PC上编译应用程序,运行测试通过后,再通过网络或串口等方法下载到目标平台/usr目录下,对于较小的程序,使用串口下载比较方便,具体的步骤为
(1)  PC模拟环境下开发程序,交叉编译;
(2)  待ARM平台下Linux正常运行后,进入usr目录,然后选择下载的程序;
(3)  下载完成后,chmod +x filenam修改文件属性为可执行命令;
(4)  执行刚下载的文件命令为./filename。
通用工控平台人机交互通信机制实现

嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人机交互接口。新一代嵌入式GUI的主要特征有:以用户为中心、多通道、智能化、高带宽。嵌入式Linux 系统中,几乎所有的GUI 都建立在FrameBuffer设备上。
MiniGUI 是一个根据嵌入式系统应用特点量身定做的完整的图形支持系统。将现代窗口和图形技术带入到嵌入式设备,是一个非常适合于嵌入式设备的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,主要优点可总结为支持多种嵌入式操作系统,具备优秀的可移植性;可伸缩的系统架构,易于扩展;功能丰富,可灵活剪裁;得到小体积高性能间的最佳平衡且具有广泛的应用领域。
1 移植MiniGUI前准备

MiniGUI 1.3.3是MiniGUI的开源版本,并且资源丰富,性能稳定,因此选用MiniGUI 1.3.3作为GUI的开发环境。进行MiniGUI移植需要准备表3所列的文件,它们可在互联网上获得。

2 PC模拟器开发环境搭建

建立自己的开发目录,解压文件libminigui-1.3.3.tar.gz和minigui-res-1.3.3.tar.gz;编译安装MiniGUI运行所需库文件libminigui;安装资源文件minigui-res-1.3.3;修改/etc/ld.so.conf 文件,加入一行/usr/local/lib,然后执行[root]# ldconfig 按照硬件平台配置与开发环境的设置修改minigui配置文件,包括修改路径,屏幕分辨率等。
PC模拟器开发环境搭建完毕后,就可在 PC上开发应用程序,在 qvfb中执行,验证程序的正确后,就可以进行交叉编译下载运行。
3 交叉编译Minigui1.3.3

解压arm-Linux-2.95.3.bz2文件安装交叉编译工具?cross-2.95.3,安装之后修改.bashrc脚本,设置环境变量:PATH="$PATH:/sbin:/usr/local/arm/2.95.3/bin:/usr/local/bin:/usr/local"。
接下来依次安装 zlib库,png库、libttf库,它们的作用分别是:其他的库的编译基础、显示PNG图形、显示文字。完成以上附加库的交叉编译工作后就可以编译libminigui了。把/usr/local/arm/2.95.3/arm-Linux/lib中相应的库拷到目标板/usr/lib目录下,拷贝时先对库文件执行arm-Linux-strip命令,去除文件中的调试信息。同时把资源文件复制到目标平台的/usr/local/lib目录下。这样就完成了交叉编译工作,可以将PC上调试好的应用程序下载到目标硬件平台下进行应用了。
通用工控平台人机界面开发

1 人机交互界面需求分析及总体设计

通用工控平台通信人机交互界面是集功能演示、信息采集、设备状态、通信交互等功能于一身的人机交互平台,可以高效、直观的显示通用工控平台的基本信息,同时有效的指导用户的操作,提高使用效率,是用户和通用工控平台交互的主要方式。
该人机交互界面显示器选用PHILIPS公司的14英寸彩色显示屏,软件运行环境选用嵌入式操作系统Linux 2.6.21和GUI开发环境MiniGUI 1.3.3构成,整个软件的设计过程需要完成以下功能:
(1)  实时显示该平台具体信息,及本网内在线的其他工控设备的信息;
(2)  以该平台为控制器实现对本网内在线的其他常见设备的多线程信息采集与控制;
(3)  以UDP及RS485两种通信方式实时控制工控网络内部;
(4)  对工控设备掉线自动断开连接,防止用户误操作;
通用工控平台通信人机交互界面主要是针对UDP和RS485两种组网方式基于Modbus协议完成工控系统中功能演示、信息采集、设备状态、通信交互的功能,设计上要求简单实用,操作方便,而复杂的界面会带来不必要的开销并影响性能。根据需求分析设定人机交互界面整体设计方案及效果图如图3、图4所示。


图3 人机交互界面整体设计方案


图4 总体效果图
继承事业,薪火相传
返回列表