基于嵌入式linux的数据采集系统关键模块设计_第1页
基于嵌入式linux的数据采集系统关键模块设计_第2页
基于嵌入式linux的数据采集系统关键模块设计_第3页
基于嵌入式linux的数据采集系统关键模块设计_第4页
基于嵌入式linux的数据采集系统关键模块设计_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电 子 科 技 大 学UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA硕士学位论文MASTER THESIS论文题目 基于嵌入式Linux的数据采集系统关键模块设计 学科专业 测试计量技术及仪器学 号 9 作者姓名 郑仕碧 指导教师 谢永乐 教授 分类号 密级 UDC注1 学 位 论 文基于嵌入式Linux的数据采集系统关键模块设计(题名和副题名)郑仕碧(作者姓名)指导教师 谢永乐 教授 电子科技大学 成都 (姓名、职称、单位名称) 申请学位级别 硕士 学科专业 测试计量技术及仪器 提交论文日期 论文答辩日期 学位授予单位和日期

2、电子科技大学 年 月 日 答辩委员会主席 评阅人 KEY MODULE DESIGN OF DATA ACQUISITION SYSTEM BASED ON EMBEDDED LINUX SYSTEMA Thesis Submitted toUniversity of Electronic Science and Technology of ChinaMajor: Measuring & Testing Technology and Instruments Author: Shibi ZhengAdvisor: Yongle XieSchool : School of Automation E

3、ngineering独 创 性 声 明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。作者签名: 日期: 年 月 日论文使用授权本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数据库进行

4、检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。(保密的学位论文在解密后应遵守此规定)作者签名: 导师签名: 日期: 年 月 日摘 要现代科技技术不断发展,嵌入式Linux系统的研究越来越重要。针对数据采集系统设计需要,移植嵌入式Linux操作系统,设计数据采集系统关键功能模块。本文采用Freescale公司的MPC8536处理器作为主控制器,控制数据采集卡采集数据,并设计数据采集系统数据传输模块和时间同步功能模块。本文在比较了几种嵌入式系统的优缺点之后,选择Linux系统作为数据采集系统的操作系统。分析编译操作系统引导程序U-boot,剪裁编译Linux内核并创建根文件系统。将U

5、-boot镜像烧写到SD卡,而内核和根文件系统也可以烧写进SD卡的方式启动系统,也可以通过TFTP或者NFS服务下载镜像的方式启动系统。并搭建适用于软件应用开发的环境。为应用软件在硬件控制系统中的运行提供了可靠的平台。本文针对课题研究需要,设计高速数据采集系统的通讯功能模块,时间同步功能模块两个部分。第一,本文设计的通讯软件主要负责硬件和软件之间的数据交互,采用基于TCP/IP网络协议的套接字网络编程(C/S模式),客户端配置控制命令模块、数据接收处理模块和文件解压模块。服务器端利用Huffman编码方式压缩数据,并并检测网络通断、网络传输速度。第二,本文中精准时钟同步的实现采用了IEEE15

6、88精确时钟同步协议,在整个测试系统中建立主从同步结构,从端通过包中的时间信息对自身进行校准,从而获得与主端的时间同步。提供高精度的时钟同步功能。通过本论文的设计,使系统数据信息得到了有效的处理和传输操作,保证了高速数据采集系统的高速有效运行,并保证了采集系统与外部时钟的一致性。关键词:嵌入式Linux,套接字网络编程,Huffman ,IEEE1588ABSTRACTThe application of Embeded Linux System(ELS) has played a more and more inportant role in the development of moder

7、n science and technology. In this paper, we construct a particular ELS and design an application to meet the needs of high-speed data acquisition system (DAQ).The purpose of this paper is to control the data acquisition card working with MPC-8536 series chip as the main controller and desigizen data

8、 transmission module and time synchronization module.In this paper, after we compared some usual ELS, choose Linux system as embeded system for DAQ. Then we configured and compiled the U-boot of Linux system and kernel properly, we transplanted U-boot to the SD card ,bootm the system with NFS or TFT

9、P.finally, we build an environment for application. All procedures above gave supports to achieve a high reliability of system.According to the need of DAQ,design communication module and time synchronization module. Firstly, the application we designed is a communication software which is used to d

10、o as a inter-medium between HW and SW using Socket network programming(C/S mode) based on TCP/IP network protocol. The client configures command module, data receiving & processing module and file compression & decompression module. Meanwhile, the server sets up the command analysis module, network

11、off/on detection module, networks transmission speed testing module and file compression module. Second, we used IEEE-1588 protocol to realize the time-accurate synchronization. In the whole testing system, we constucted a master-slave synchronization architecture and let it adjust itself according

12、to the information come from packets. Results indicated that we get the desired purpose.The designing in this paper can ensured the high-speed DAQ system running efficiently as well as guaranteed the consistency of DAQ system and external clock.Keywords: embedded Linux,SOCKET programming,Huffman,IEE

13、E1588目录第一章 绪论11.1 数据采集系统发展状况11.2 嵌入式系统发展动态21.3 本课题关键模块分析31.4 本文结构框架4第二章 嵌入式数据采集系统总体设计52.1 数据采集系统关键功能模块设计52.2 嵌入式操作系统设计62.3 嵌入式数据采集系统开发流程设计72.4 本章小结8第三章 嵌入式开发环境的搭建93.1 目标板移植嵌入式Linux系统93.1.2 U-boot的编译与移植93.1.3 Linux内核的分析与配置编译113.1.4 文件系统的分析133.2 宿主机环境搭建143.2.1 宿主机环境安装153.2.2 LTIB交叉编译调试工具链的安装173.3编译程序示

14、例183.3本章小结20第四章 数据采集系统通讯模块设计214.1套接字网络编程基础214.1.1 TCP/IP协议224.1.2 套接字编程254.2数据采集系统通讯程序的实现274.2.1 数据压缩解压模块设计274.2.2 命令配置和命令解析模块设计304.2.3 文件传输模块设计314.2.4 网络通断检测模块设计344.2.5 网络传输速度测试模块设计364.3 本章小结37第五章 数据采集系统上IEEE1588的应用385.1 IEEE1588协议介绍385.1.1 IEEE1588协议(PTP)同步机制395.1.2 最佳主时钟算法415.1.3 PTP状态机435.3 PTP同

15、步模型455.3.1 PTP设备类型455.3.2 时钟主从关系465.3.3 PTP报文475.4 IEEE1588的实现495.4.1 IEEE1588实现方案设计495.4.2 IEEE1588测试程序设计505.5 本章小结52第六章 系统和程序测试与验证536.1 系统启动验证536.2 数据采集系统通讯模块的测试验证566.3 数据采集系统IEEE1588时间同步协议测试606.5 本章小结62第七章 结论与展望63致 谢64参考文献65第一章 绪论目前已处于PC时代,人们对嵌入式产品的需求更多,于是嵌入式系统的发展更迫切1。嵌入式在数据采集系统中作用突出,本文针对高速数据采集系统

16、的需要,移植嵌入式Linux系统,并进行了相应功能模块的设计开发。本章首先对数据采集系统和嵌入式Linux操作系统的发展状况进行了阐述,给出本文做的数据功能模块的必要性,最后设计论文总体框架。1.1 数据采集系统发展状况随着科学实验与工业控制的高度自动化,数据采集系统在近年迅速发展。而微电子技术的发展为数据采集系统的发展提供了物理基础。数据采集就是采集模拟量,如温度、压力、流量、位移等,然后将模拟量转换成数字信号量,使用计算机进行存储、处理和显示的等操作2。数据采集系统是由传感器、信号检测、数据处理等功能模块组成的嵌入式系统。当计算机高速发展时,测试仪器中数据采集部分越为重要,它采用微处理器、

17、大规模集成电路和计算机构成独立的采集系统。目前,数据采集系统的发展趋势有以下几个方面。(1)器件模块化和单片化六十年代时,数据采集系统使用半导体分立器件;然而到八十年代就被单芯片器件和高集成度的数据采集器件所代替。目前使用最多的是高精度和高速度的混合式器件和模块式器件。(2)仪器智能化随着电子技术的发展,数据采集系统与微处理器(或者计算机)兼容,实现以微处理器控制为基础的智能化数据采集系统。(3)软件向实时高级语言和模块化 硬件的测试需要测试系统软件,当前主要采用汇编语言实现。但是为了实现系统高度自动化,将采用更为通用的高级语言。同时在设计测试程序的时候都是将功能进行模块化的设计,以便于修改升

18、级软件,缩短系统开发时间。(4)接口标准化数据采集系统与计算机之间需要一个接口,标准化的接口方便连接和通信(5)系统向测量与控制一体化随着数据采集系统的普及,由最先实现的小型自动化测试转向大型复杂的测量与控制系统,即控制与测量的全自动一体化。1.2 嵌入式系统发展动态当今社会信息化使得现代信息科学技术的应用越来越广泛。而科学技术的发展立足于信息获取技术、信息传输技术以及信息处理技术3。嵌入式产品的发展,更需要信息科学技术。随着嵌入式产品需求量的不断提高,嵌入式操作系统高速发展。嵌入式操作系统属于一种系统软件,主要分配系统资源和调度系统任务。嵌入式系统的发展经历了四个标志性的时期:第一时期是无操

19、作系统。该时期以单芯片为核心,控制功能主要通过汇编语言实现;第二时期是简单操作系统,以嵌入式CPU为基础、兼容性和可扩展性较好;第三时期的是通用的嵌入式实时操作系统,与硬件兼容性较好,具有很高的模块化与可扩展性,内核小巧,处理高效率,众多的API接口,丰富的嵌入式应用软件;第四时期是基于Internet为标志。该阶段的嵌入式系统还大多数没有与网络互联,但是实现与网络的互联是嵌入式系统发展的必然方向。PsSOSystem、VxWorks和Linux系统都是著名的嵌入式操作系统。其中嵌入式Linux发展快速,从1999年开始至今已成为一种发展趋势和主流。作为嵌入式操作系统需要有自我修复的能力,在设

20、计软件和硬件时都需要可靠安全性。嵌入式操作系统在数据采集系统中的应用,充分利用了CPU处理器多任务潜力,使系统更可靠更稳定4。嵌入式Linux的内核很小可以满足嵌入式硬件系统资源有限的要求,并且它可装卸性好,具有统一的标准接口,在应用过程中开发人员可按照自己的意愿对其模块进行配置组合简化装卸等操作,并直接使用这些服务接口。嵌入式Linux系统与硬件连接,负责硬件底层设备的驱动,各个接口的驱动,以及系统内核的初始化,并能有效的管理系统硬件软件资源。本文根据数据采集系统需求,选择嵌入式Linux作为嵌入式操作系统,使开发人员更方便,开发时间更短、效率更高、成本更低。1.3 本课题关键模块分析本文中

21、研究的数据采集系统的关键模块如图1-1所示,分别数据采集系统与外部PC机的通讯模块、数据采集系统和外部时钟的时间同步模块。图2-1数据采集系统关键模块图首先根据数据采集系统的需要,需要对数据采集系统中产生的数据进行分析研究。采用向数据采集系统移植操作系统,搭建一个具有操作系统的开发环境平台,这样既方便了采集系统应用的开发也方便了对系统进行详细研究。然后为保证数据高速采集的可靠性和有效性,所采集到的数据能够被使用到,这就需要设计一款负责数据传输的软件即通讯程序5。通讯程序的设计需要高可靠性,安全性,以保证通讯两端正确的交流。嵌入式系统上的通讯程序则是连接硬件数据采集系统和外界系统的工具,通过通讯

22、程序可以获得硬件数据采集系统产生的数据信息,开发人员或用户对这些数据信息进行分析以便更好的改进系统性能或使用系统功能。一般的嵌入式通讯程序都是以传输数据为目标,在性能可靠性方面不是特别高。本文的通讯模块基于TCP/IP协议实现,是一种面向连接的高可靠性方式。并且加入了网络通断检测功能使得程序运行过程中可以有效处理突发网络故障,提高了程序的可靠性,安全性。最后数据采集系统工作时需要实时性,但是如果系统上的时间与外部时间不一致就根本谈不上实时的效果。数据采集系统本身有一个系统时间,这个时间是不停变化的,而且不一定准确。想要得到采集系统上的时间与现在精准时间一致,就需要增加一个时间同步的功能模块。时

23、间同步的应用可保证采集系统与外部时间的一致,可通过互联网,授时中心等方式进行时间同步。但是大部分的方法的精准度都不高,不能得到高精度的时间同步。本文中采用IEEE1588时间精准同步协议,该协议利用物理层芯片内部线路实现同步功能,达到数据采集系统与控制系统时间一致。通过对通讯模块和时间精准同步功能的设计,满足了高速数据采集系统的需求,使系统更可靠,效率更高。1.4 本文结构框架本文主要研究数据采集系统关键模块的设计,整个研究设计基于嵌入式Linux平台实现。研究了基于MPC8536的处理器硬件平台,通过对嵌入式Linux操作系统的引导程序,内核代码的适当剪裁后移植到目标板上,组成一个基于MPC

24、8536主控制器的嵌入式Linux开发平台。然后在Linux下的PC机上进行软件开发平台的搭建,在该平台上进行关键模块程序的设计和代码的编写,通过交叉编译,移植到目标板上,多次调试验证以后完成系统所需功能的开发。本文阐述的主要结构为:第一章:阐述数据采集系统和嵌入式操作系统的发展动态,分析数据采集系统设计关键模块的意义。第二章:分析数据采集系统关键模块,选择合适的嵌入式操作系统开发环境平台,阐述嵌入式开发一般流程。第三章:针对数据采集系统需求以及嵌入式软件开发的一般过程,搭建宿主机端嵌入式Linux交叉开发环境。配置编译Bootloader引导程序,并烧写到SD卡中;剪裁配置Linux内核,利

25、用编译工具编译生成内核镜像;创建根文件系统。并给出一个应用程序移植步骤的示例。第四章:根据数据采集系统需要,设计针对数据的传输和命令交互的通讯模块。设计采用面向连接的TCP套接字编程,是一种强可靠性的编程方式。第五章:为实现数据采集系统和控制端系统之间时间一致,利用物理层芯内部线路完成时间同步功能的方案,在数据采集系统中应用IEEE1588时间精准同步协议,在接近物理层获取时间戳,提高同步精度。第六章:结合数据采集系统功能需求,首先对嵌入式Linux操作系统的启动进行测试,然后测试通讯模块的各个功能,并对IEEE1588时间精准同步协议的应用进行验证。第七章:总结全文,肯定文中设计的实用性可正

26、确性,提出不足之处,指出改进方向。第二章 嵌入式数据采集系统总体设计本课题针对数据采集系统进行开发研究,采用基于嵌入式Linux系统的方案来设计应用软件,开发通讯功能模块和时间同步模块,具有较高的随意性,CPU的资源占用率低,软件运行效率高6,使系统以后的功能扩展更为方便。2.1 数据采集系统关键功能模块设计数据采集系统功能模块设计基于嵌入式Linux操作系统,程序编写完成后,现在宿主机上调试,经过交叉编译移植到目标板上,经过功能模块的验证完成设计。根据数据采集系统的需求,对采集到的数据进行一定的处理传输到控制端,进行分析处理等操作。同时设计时间同步功能模块使得采集数据端与控制端系统时间一致。

27、系统中的结构层次如图2-1所示。图2-1数据采集系统关键模块结构图通讯模块:采用SOCKET套接字编程,基于C/S模式,对数据采集系统中的数据进行传输处理工作。分别在客户端和服务端运行程序,执行数据传输操作和命令交互功能。在本课题中采用基于应用层和TCP/IP层的套接字编程来完成,本文采用面向连接的TCO传输方式。时间同步模块:应用IEEE1588时间精准协议,该协议基于顺序收发命令模式转变为以精准时间为基准的主动数据采集传输,从数据采集传输模式转变为时间表模式,数据采集系统采集数据更灵活主动。IEEE1588的标准非常具有代表性,而且是开放式的。该协议的实现是基于硬件的时间戳辅助功能,协议引

28、擎设计主端在接近硬件层上获取时间戳信息,发送同步消息包给从端,收到消息包的从端通过时间信息的计算以获得与源时钟端时间一致,从而达到时间同步的目的。2.2 嵌入式操作系统设计嵌入式产品的开发,首先以嵌入式处理器为核心构建一个硬件系统,并在该系统上移植合适的嵌入式操作系统,最后设计产品需求应用。开发者需慎重的选择一种嵌入式操作系统,这影响到工程后期的发布和软件维护。考虑价格优势、开发调试工具以及研究设计的需要,本课题选择嵌入式Linux操作系统,具体优势如表2-1所示。表2-1嵌入式Linux操作系统优点1、广泛应用于多种硬件平台先在标准平台上开发,然后移植到具体硬件平台上,缩短了开发时间2、Li

29、nux开源,可根据需要改动开发者的改动须对Linux社区有益3、Linux是免费的源代码免费获得,节省大量的开发经费4、内核直接提供网络支持其他操作系统需外挂TCP/IP协议包5、Linux高度模块化添加部件非常容易6、可靠性在PC机上的成功,保证了嵌入式系统中的可靠性7、Linux自由开放在Linux上进行软件开发可以获取网络资源的帮助嵌入式硬件平台是由MPC8536处理器和外围设备组成的数据采集系统。嵌入式操作系统包括Linux引导程序,Linux内核和根文件系统。BootlLoader是系统引导程序,负责系统启动或复位之后的CPU外围设备的初始化。BootlLoader还引导Linux内

30、核的启动。Linux内核完成系统初始化以及根文件系统的挂载工作。根文件系统作为系统的中间件是应用软件运行的基础,为软件运行获得的数据提供存储区域7。应用程序是基于嵌入式系统硬件上的,是开发者为了系统需求而设计的。嵌入式数据采集系统体系结构如图2-2所示。在数据采集系统上移植嵌入式操作系统,本文选择的是嵌入式Linux,版本是Ubuntu。应用软件和该平台上的工具链支持数据采集系统的运行,保证数据处理和传输高效可靠。图2-2嵌入式系统体系结构2.3 嵌入式数据采集系统开发流程设计针对数据采集系统,先要开发嵌入式Linux系统,然后在PC机上开发数据采集系统应用程序,通过编译移植完成设计。系统开发

31、流程如图2-3所示。图2-3嵌入式开发设计流程图1、建立开发环境:本课题采用嵌入式Linux操作系统,使用Ubuntu11.04版本,内核版本为Linux2.6.32-r5。移植嵌入式Linux操作系统,组成嵌入式开发环境。2、配置开发主机:在宿主机安装LTIB工具套件,该工具集由Freescale公司提供包括编译器和调试器等。安装配置串口通讯工具Minicom,实现嵌入式开发板信息输入输出功能。配置网络NFS服务,配置TFTP。3、建立引导装载程序Bootloader:本研究的引导程序是U-boot。4、下载移植好的Linux操作系统:本文使用的是Linux操作系统Ubuntu11.04版本

32、,对内核进行裁剪编译调试后。下载到启动所用的SD卡上或者使用NFS或TFTP启动。5、建立根文件系统:当下最主流和有效的方法是使用Busybox工具制作,并编译生成镜像文件。6、开发应用程序:在标准系统开发环境下,进行应用程序设计,交叉编译调试移植到目标板上运行。7、准备内核、引导程序、根文件系统的镜像,移植系统。移植应用程序到嵌入式Linux系统,验证程序的功能。8、调试系统验证系统各项功能。2.4 本章小结 本章首先介绍了本课题中数据采集系统研究的几个关键模块,分别是通讯模块和时间同步模块,并且根据需要和对几种操作系统的对比选择合适的嵌入式操作系统,最后设计的数据采集系统的嵌入式开发流程。

33、第三章 嵌入式开发环境的搭建第二章完成了数据采集系统的总体设计,以及提出要做的工作。在本章中进行嵌入式Linux操作系统的移植工作以及搭建宿主机嵌入式开发环境。3.1 目标板移植嵌入式Linux系统由于嵌入式Linux具有内核源代码开放,内核可定制性和较强的兼容性等优点14,采用嵌入式Linux系统不仅是系统功能设计需要,而且嵌入式Linux是一个成熟的系统,开发者可以找到前人开发使用后留下的资料资源,借鉴前人的经验可以降低研发难度和缩短研发周期。嵌入式Linux操作系统包括启动程序、内核、根文件系统8。嵌入式Linux操作系统建立的基本步骤则是:第一,配置Linux内核,裁剪去不需要的功能模

34、块;第二,编写系统引导程序BootlLoader(U-boot);第三,创建根文件系统。嵌入式Linux基本示意图如图3-1所示。图3-1嵌入式Linux基本示意图3.1.2 U-boot的编译与移植U-boot与Windows的BIOS程序类似,执行时间短,但是非常重要。U-boot在嵌入式平台上的设计对硬件的依赖性非常高,因实际应用而进行设计。1.U-boot介绍U-boot遵循GPL条款,英文全称为Universal Bootloader。U-boot是以PPCBoot和ARM-Boot为基础的通用加载程序,PPC系统大多使用U-boot。U-boot不仅功能多,而且是开放源代码的,使用

35、成本具有优势。U-boot支持多种嵌入式操作系统内核,支持多个处理器系列。设备驱动源码丰富,可靠性高,并且有比较多的参考文档。U-boot的启动流程如图3-2所示:图3-2 U-boot启动代码流程图U-boot由两个代码段组成,stage1用汇编语言编写,Stage2由C语言编写9。stage1主要完成一期系统启动前的初始化工作,并为系统的启动提供一个入口。Stage1阶段初始化所有的向量,设置控制器的内存以及CPU的时钟频率和速度,最后拷贝ROM中的程序到ROM。stage2段程序具有很好的移植性和可读性。该部分先调用初始化函数对Flash,NAND以及系统内存进行初始化,然后对系统的外部

36、硬件进行设置。还做一些网络设备的初始化,完成IP、MAC的填写,最后进入boot的工作循环,用户可输入命令都串口进行相应工作。2.U-boot编译U-boot的编译包括以下过程:a)获取U-boot源码。b)建立一个工程文件夹,以目标板命名。然后参考与所用目标板配置相似的处理器,本文使用MPC8536rdk处理器,可以借鉴MPC8536ds目标板。首先修改U-boot/Makefile文件,然后拷贝源码构建jns.c文件;在U-boot/include/configs/添加对应的头文件;再修改board/jns/U-boot.lds;最后使用make JNS_config进行配置编译,最后再使

37、用make命令编译。借鉴别的目标板编译出的目标文件,不能完全适合自己的要求,还需要针对自己的目标板进行修改。考虑修改目标板.h、目标板.c、Flash的驱动程序、串口驱动以及串口收发器芯片的使能部分文件。修改工作根据自己使用的目标板相应具体的配置进行,功能支持根据设计目标进行。修改完后在U-boot的源码中首先进行环境变量的设置:$export PATH=$PATH:/opt/Freescale/usr/local/gcc-4.3.74-eglibc-2.8.74-dp-3/PowerPC-none-Linux-gnuspe/bin:/opt/Freescale/ltib/usr/bin$ex

38、port CROSS_COMPILE=PowerPC-none-Linux-gnuspe$export ARCH=PowerPC环境变量设置完成之后在该目录下进行编译,编译生成多种格式的映象文件和符号表如下:System.map:U-boot全局变量和函数地址信息的符号表。U-boot.bin:二进制格式U-boot:ELF映象格式U-boot.srec:S-Record映象格式3.1.3 Linux内核的分析与配置编译1、Linux2.6内核是一个资源管理器,管理进程、内存和硬件设备,决定系统的性能和稳定性10。嵌入式应用要求实时性和可靠性,Linux2.6经过改进能够满足系统要求。本课题中

39、是Linux2.6.32版本的,该版本的内核采用可抢占内核,提高了中断性能,改进调度算法提高同步性。Linux2.6内核添加了处理器类型、体系结构和多媒体功能,并且对I/O子系统进行了一些改善,提高了系统的实时性。Linux2.6.32内核包括/arch,/mm,/kernel,/init,/net等目录,整个内核目录结构以及目录作用解释如图3-3所示。图3-3 Linux2.6.32内核目录结构2、Linux内核编译Linux内核移植是研发特定硬件平台操作系统的重要步骤。在研发中根据硬件配置和功能需求,裁剪和定制特定的内核源码,获得更具专一性和高效性的精简内核11。定制特定内核需要做两方面的

40、工作:第一是根据硬件配置,修改内核源码相关信息,使之能运行于相应硬件平台;第二为达到项目的特定功能需求,适当裁剪与增加内核源码中的功能模块,获得高效精简的内核。配置过程中需要注意:如果内核需要支持NFS启动的话就需要在内核配置的时候选择支持MTD和NFS文件系统,网络的配置选项中选择IPV4支持、IP支持、NFS、TFTP等服务支持,软件包的配置里面有一些默认的软件包选项,另外在自己编写的软件编译时选择该软件包可将这个软件应用编译进内核,一般可有模块和编译进内核的两种选择。设备支持的选择包括SD卡、USB、PCIE等配置。本课题中在配置过程中对一些硬件设备的支持配置进行选择,例如鼠标,LED、

41、ATA、PCI hotplug、wireless等。获得源码后得对内核进行配置,一般参考一个预定义目标板的配置文件进行修改。Linux2.6.32版本的内核代码中,/Linux/arch/ppc/configs目录下保存了PPC的默认配置。配置内核时最好先备份自己的配置,然后清除原来的配置和编译结果。配置完内核的所有信息保存在.config文件中,也可以使用LTIB编译配置好的.confg文件替代内核源代码下面的配置文件进行编译。内核的编译方式与U-boot差不多,也需要进行环境变量的设置,编译之前用命令make mrproper检查.o文件和依赖关系,然后编译生成内核镜像,位于/arch/P

42、owerPC/boot下面。VmLinux:kernel第1/2阶段产生的elf格式的可执行文件,位于顶层目录下。uImage:经过二进制化的镜像文件,是U-boot专用的镜像文件,位于/arch/PowerPC/boot目录下。编译成功之后,要进行设备树的压缩,设备树文件在/arch/PowerPC/boot/dts/目录下面。使用下面命令进行压缩:$dtc b 0 V 17 p 0x1000 I dts O dtb f /arch/PowerPC/boot/dts/mpc8536rdk.dts arch/PowerPC/boot/ mpc8536rdk.dtb3.1.4 文件系统的分析内核

43、提供硬件设备的支持,管理操作系统各种资源的分配,而文件系统则包含各类应用程序,提供丰富的功能。根文件系统是嵌入式系统的重要部分,内核启动时将首先挂载根文件系统12。根文件系统包括了内核启动的配置文件和脚本,以及运行应用程序的库文件。文件系统的启动过程分为四个阶段:1)运行1号进程init,读取/etc/inittab配置文件,根据文件中的指令开始下一步;2)系统初始化,init进程首先执行/etc/init.d/rcS脚本;3)启动对应运行级别的守护进程;4)建立终端;5)登陆系统启动完成。在Linux中,文件系统结构是基于树状的,顶部是根,从树根向下分支是各个目录和文件,目录树的最顶端称为根

44、目录/13。文件系统的所有目录都放在Flash中,而/tmp和/var放在SDRAM中。针对用户的目录有/home、/mnt、/opt /root,在嵌入式系统中可不需要。构建根文件系统就是构建包括支持Linux系统正常运行的基本内容,这些基本内容是:(1)、基本的文件系统结构,例如bin,dev,etc,lib,sbin,usr,proc。(2)、基本程序运行所需的动态库。(3)、基本的系统配置文件。(4)、必要的设备和文件支持。(5)、基本的应用程序,如sh、ls、cp等Linux操作系统一般包括如下目录,如图3-4所示。 图3-4 文件系统主要目录制作根文件系统时,可以直接复制宿主机上交

45、叉编译器目录下的相关文件,如果需要的命令太多,这样生成的文件系统就比较大14,然而嵌入式系统中的存储空间是有限的,因此需要利用号称“瑞士军刀”的busybox工具来制作根文件系统。Busybox把Linux命令集合到一个可执行程序中,同时也包含了INIT进程。因此使用busybox创建根文件系统,只需要在相应目录下添加文件即可,例如/bin中添加命令或者程序,/dev中添加设备文件,/etc中添加配置文件,/lib中添加动态库文件等。busybox创建的根文件系统使用动态链接只有几百KB,非常灵和小巧,更实用。3.2 宿主机环境搭建嵌入式开发需配置一个与开发目标一致的平台。在这样一个平台开发环

46、境下进行各种需要的研发。开发环境主要由宿主机环境和嵌入式Linux开发工具集组成,宿主机环境是由主机CPU类型加上宿主机上的操作系统组成。本文研究的目标板环境为Freescale的MPC85XX系列的CPU和源代码开放的Ubuntu11.04操作系统组成。嵌入式Linux开发工具集是根据目标板环境集成的一些工具,这些工具集绝大多数为交叉开发工具集15,它们与对应的宿主机环境构成交叉调试开发环境,用于在目标处理器上集成开发。本项目整体开发环境采用交叉开发调试环境,整体结果如图3-5所示。图3-5交叉开发调试环境3.2.1 宿主机环境安装Ubuntu是一个非常好用的Linux操作系统,和windo

47、ws的相容性很好16。Ubuntu安装了大量的常用软件(如Firfox,open office,多媒体播放以及图像处理等),支持拼音输入法,自动安装网卡和音频设备。在windows下安装不用分区,这个操作系统就如一个大文件,卸载很方便。1)Ubuntu的安装利用wubi程序安装Ubuntu系统,设置语言环境和用户名及登录密码。开始安装拔掉互联网网线,安装好后系统提示重新启动,重新启动进入Ubuntu后才开始真正的安装,只需要大概二十分钟左右,完成后机器会自动重启。2)配置宿主机的网络,TFTP服务和NFS服务Ubuntu系统在安装时会自动识别并安装好以太网卡,可以通过手工的ifconfig命令

48、配置系统的IP地址或者自动获得。1、TFTP服务的配置TFTP即文件传输协议,该协议属于TCP/IP协议簇,主要用于C/S模式的文件传输。文件传输时,端口号为69。1)TFTP服务安装相关软件包:tftpd(服务端),tftp(客户端),xinetd。2)建立配置文件:在/etc/xinetd.d/下建立一个配置文件tftp,在配置文件中设置socket_type,protocol,wait,user,server,server_args,disable,per_source,cps和flags。建立TFTP服务文件目录(上传文件与下载文件的位置)/tftpboot/,并且更改其权限。4)重新

49、启动服务如图3-6所示,表示配置成功。图3-6 启动TFTP服务由上图所示,通过命令启动TFTP服务成功。TFTP服务测试使用命令TFTP localhost(ip),get获得需要文件,q退出TFTP服务。2、NFS服务配置NFS全称是Network File System,即网络文件系统。用户和程序可以通过NFS服务共享本地文件和远端系统上的资源。1)安装NFS。配置共享文件/etc/exports,配置共享目录/tftpboot/ltib/ *(rw,no_root_squash,async)。Rw表示NFS服务的共享目录具有可读写权限,asyn表示数据的改变将进行保存,no_root_

50、squash表示使用者权限。2)重启NFS服务,由图3-7可知NFS服务启动正常,现在可以使用NFS服务了。图3-7 启动NFS3)NFS测试,启动NFS服务,以本机共享目录为例,使用以下命令。 Mount localhost:/tftpboot/nfs /mnt当mount成功之后,转到系统/mnt目录下即可查看共享目录/tftpboot/nfs下面的文件。如果mount不成功可以查看系统的防火墙状态,确认关闭。3、Minicom的搭建Minicom是一个串口通信工具,相当于windows下的超级终端,通过R232串口线与目标板连接。1)通过sudo apt-get install Mini

51、com命令安装Minicom,然后使用Minicom s启动Minicom,进入到主菜单配置,主要对filename and paths项进行配置如图3-8所示。图3-8 Minicom串口配置图2)设置erial Device为/dev/ttyS0(如果使用串口0);设置/bps/par/Bits为。并设置Hardware Flow Control为“NO”。确认“/etc/minirc.df”可读写权限,存储串口设置信息,然后Exit退出设置。重新启动Minicom时,在Linux下通过RS232串口线连接,启动系统。3.2.2 LTIB交叉编译调试工具链的安装LTIB (Linux Ta

52、rget Image Builder)是飞思卡尔公司开发的一个工具,用于简化嵌入式BSP开发的工具,基本上就是一些脚本加上预先制作成功的交叉工具链17。LTIB支持多种目标体系架构,如PPC、ARM等。还支持引导程序和内核的构建,以及可在编译时选择合适的交叉编译工具。交叉编译工具链一般由编译器,链接器和libc库组成。本文使用的是Freescale公司的LTIB套件,它包含了GNU交叉开发工具,编译器18,调试工具以及一些编译好的目标系统工具和目标系统链接库。1、MPC8536RDK-LTIB的安装经过上面的主机中Ubuntu操作系统的建立和环境的搭建,保证LTIB能够正确安装。首先去Free

53、scale的官方网站上下载LTIB的BSP包,然后将MPC8536RDK-LTIB.iso拷贝到用zshibi文件下,用命令sudo mount -o loop /home/zshibi/MPC8536RDK-LTIB.iso /mnt 挂载到/mnt下,最后运行LTIB的安装程序,使用命令/mnt/install。2、LTIB的安装可能遇到的问题及解决方法(1)使用普通用户安装LTIB,增加用户权限以便使用超级用户命令。Vi打开 /etc/sudoers文件,在最后一行输入以下内容:zshibi ALL=NOPASSWD:/usr/bin/rpm,/opt/Freescale/ltib/us

54、r/bin/rpm/*添加用户权限*/(2)然后安装相关PACKAGE,使用命令$sudo apt-get install gcc build-essential zlib1g-dev libncurses-dev m4 bison rpm 执行完之后,再转到/home/zshibi/ltib安装文件/下面执行./ltib命令,编译LTIB。如果出现错误在LTIB的安装目录下的host_config.log中有错误记载,如果编译过程中出现有一些软件包未编译,例如glibc-headers,glibc-devel,libstdc+, gcc-c+,zlib-devel,ncurses-devel

55、等,可以使用sudo apt-get xxx(软件包名)命令进行安装,安装这些软件包。(3)如果./ltib运行过程出现glibc-devel 和zlib包没有安装的错误,则按照下面的步骤解决:找到ltib安装目录/bin/Ltibutils.pm文件的第563,583和584行改为:563#glibc-devel =sub -f/usr/lib/libm.so| -f/usr/lib64/libz.so|-f/usr/lib/i386-Linux-gnu/libm.so,583#zlib=submyf =(glob(/usr/lib/i386-Linux-gnu/libz.so*),584# glob(/lib/i386-Linux-gnu/libz.so*)。(4)普通用户运行LTIB,./ltib configure(or c,typehelp可查看配置选项)。如果想重新编译所有的安装包,先./ltib m distclean清理所有的文件,然后./ltib重新编译。3.3编译程序示例1、使用DDD调试验证程序编译程序时,加入-g选项,编译时产生调试信息,编译通过使用DDD调试工具调试程序。采用DDD调试工具调试程序,调试过程中可以进行断点设置,以及实时查看各个变量的值,确认程序的正确执行。调试过程中,DDD调试工具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论