交叉编译

交叉编译就是在一个平台上生成另一个平台上的可执行代码。所谓平台,实际上包含两个概念:体系结构及操作系统。根据上述建立的开发环境,目标平台是基于ARM体系结构的运行嵌入式Linux操作系统,而开发编译环境是基于PC中虚拟机上的Linux操作系统。若在目标平台上运行程序,则须在PC开发环境下对代码进行交叉编译以适应目标平台。

依据环境变量PREFIX,将编译好的工具链安装到指定文件夹就可以使用了。

例如,修改arm-Linux-gcc-2.95.3的环境变量为:

PATH=$PATH:$HOME/bin:$PREFIX/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上调试好的应用程序下载到目标硬件平台下进行应用了。

通用工控平台人机界面开发

arm linux 工控,基于ARM和Linux通用工控平台设计 - ARM - 电子发烧友网相关推荐

  1. 智能硬件Linux效能更高,Android软硬件巧妙整合的开发技 - 嵌入式操作系统 - 电子发烧友网...

    1.Linux驱动程序的导入 由于Android是根源于Linux所延伸出来的操作系统,因此各种关键功能的驱动程序也必须要能顺利的写入其中,举凡像是字符设备.存储器的空间配置.中断处理.网路通信.萤幕 ...

  2. 基于MVC模式下的二手车拍卖平台设计

    课程名称:<软件体系结构与设计模式> 实验项目名称:基于MVC模式下的二手车拍卖平台设计 实验内容 按下列要求编写程序并上机调试运行: 拍卖系统要又三个显示界面,分别是车体图片,文字描述和 ...

  3. asp毕业设计——基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码)——网上购物平台

    基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的校园网上购物平台设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

  4. java毕业设计_基于J2EE的小学生老师家长互动平台设计与实现

    基于J2EE的小学生老师家长互动平台设计与实现 基于J2EE的小学生老师家长互动平台设计与实现mysql数据库创建语句 基于J2EE的小学生老师家长互动平台设计与实现oracle数据库创建语句 基于J ...

  5. java城市公交查询系统案例_基于JAVA的城市公共交通查询系统的设计与实现

    科技与信息 2018.12 计算机产品与流通 159 基于 JAVA 的城市公共交通查询系统的设计与实现 □ 苏楠 摘要:公共交通查询系统是城市交通的组成部分之一,也是一个城市实现现代化发展的必然产物 ...

  6. 嵌入式linux rtsp移植,嵌入式网络收音机的ARM实现 - ARM - 电子发烧友网

    3 系统的的软件设计 3.1 嵌入式Linux的移植 嵌入式Linux内核的版本很多,一般情况下版本越高,系统越稳定,驱动更完善,本系统选择了2.6.18的Linux内核.其实对于2.6以后版本的Li ...

  7. 基于2440的Linux开发原理,基于S3C2440和Linux的嵌入式网络驱动程序开发

    摘要: 嵌入式与互联网已经成为最热门的技术.使嵌入式系统具备网络功能,并将它们与Internet或企业局域网连接起来,增强了嵌入式系统多方面的实用性. 本文采用S3C2440微处理器为硬件开发平台,根 ...

  8. linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程

    技术特征: 1.基于H3在Linux下驱动OV5640摄像头的方法,其特征在于,包括如下步骤: S1打开OV5640摄像头所对应的设备文件/dev/videoX: S2为OV5640摄像头驱动添加读写 ...

  9. 深度 linux支持debian,基于Debian的Linux发行版安装深度音乐及其插件

    在Linux上想要一个完美的,并且能够在线的音乐播放器是很头疼的事情.找了很久,还是觉得Deepin的深度音乐是非常不错的选择.不仅可以播放本地,还可以安装很多插件,包括网易云,百度音乐等等. 下面我 ...

最新文章

  1. 下一站,向冠军冲击!
  2. R语言ineq算基尼系数_5 月编程语言排行榜:Java第一,R跌出Top20
  3. context-param和init-param的区别
  4. 在JS函数中执行C#中的函数、字段
  5. ecshop程序设置伪静态简单三步骤
  6. [中文事件抽取]DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Lab
  7. 记录一下2019年-2020年期间的学习、工作经历
  8. OpenCV计算机视觉实战(Python版)_004图像形态学处理
  9. 动态规划经典题之石子合并
  10. 统计学系方法4.1补充理解
  11. 【优化分类】基于matlab麻雀算法优化核极限学习机KELM分类【含Matlab源码 1791期】
  12. windows编译opencv+opencv_contrib 以及解决cmake下载boostdesc_bgm等文件失败问题
  13. 计算机垃圾清理指令,win7电脑清理垃圾的运行命令代码是什么
  14. Java 最全面的面试题675道
  15. 如何创建一个虚拟机?
  16. matlab ild,10GBASE-KR
  17. 公司章程绝对记载事项有哪些
  18. IMS的注册流程分析
  19. 手机app Apk 下载总结(包括部分电脑的安装包)
  20. MATLAB实战应用-【数据处理篇】数据清洗(从方法论到实战应用)

热门文章

  1. 仓库和门店移动出入库 手持移动终端 pda 扫描打印于一身 扫描打印小票和不干胶标签纸
  2. IE系列兼容性hack大全
  3. Regularization(正则化)
  4. zipf distribution
  5. mount point / 挂载点
  6. 基于android的新闻系统开发,基于Android的新闻推荐系统的设计与实现
  7. C语言 10_随机数
  8. Fisher精确检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析
  9. Python入门三:安装Pyqt5
  10. 信息安全实验六:RSA数字签名算法 2019.06.01