当前位置:首页 >> 信息与通信 >>

分布式数据采集处理系统技术研究


西南交通大学 硕士学位论文 分布式数据采集处理系统技术研究 姓名:杨小容 申请学位级别:硕士 专业:精密仪器及机械 指导教师:陈建政 20100401

西南交通大学硕士研究生学位论文

第l页





随着我国铁路事业的飞速发展,动车组已经成为高速、舒适、时尚的代名词,

这一新兴交通工具迅速深入人心。与此同时,人们需要能够更准确、快速和便捷地获

得其大量数据并对其进行更好的改进。由于动车组的全封闭式设计以及传统的单片机
传输速度慢、可靠性低等特点,采用嵌入式系统无疑是最佳的选择。近年来,嵌入式 计算机正在深入应用到工业、农业、教育、国防、科研以及日常生活等各个领域。目 前,将嵌入式Linux技术与数据采集技术及网络管理技术结合起来,正式适应了这一 趋势。采用Linux技术的嵌入式系统是一种体积小、便于携带、易于网络化、造价相 对较低,集信号采集、处理为一体的设备,具有广泛的应用前景。 本文提出采用嵌入式Linux作为操作系统,针对勤研公司的¥3C2440嵌入式处 理器,设计~个嵌入式分布式数据采集系统。论文在分析了Linux设备驱动程序的基 本工作原理基础上,讨论了开发中经常会遇到的中断处理、I/O端口,并在此基础上 实现了基于ARM 920T嵌入式处理器系统的读、写外部RAM的字符设备驱动和网络 管理。 本文设计了一个AD数据采集板,对其进行驱动及数据采集。在构建嵌入式Linux 平台下,进行内核移植,修改内核代码适应¥3C2440开发板,开发板的软件部分都是 在Linux条件下完成。分布式网络管理部分,采用一个manager和多个子系统的方法, 通过路由器动态分配地址,manager及各子系统都可传递整个网络信息,使整个系统 组成一个封闭的自组织、增减子系统都不会影响其功能的分布式数据采集管理系统。 实验证明,构造基于ARM的嵌入式Linux分布式数据采集管理系统,并将其应 用于工业测控等领域,在技术上完全可行,论文最后对系统进行了总结,同时也提出

了本系统设计的不足和改进思路,为课题的迸一步研究做好了准备。

关键词:分布式;数据采集;嵌入式Linux系统;删;网络传输

西南交通大学硕士研究生学位论文

第lI页

Abstract
With
the rapid development of China’S railroad industry.the new transport
arouse

EMU

has

increasingly

people’S attention for it’S high—speed,comfort and fashion.At the same

time,people need to be more accurate,fast data

and

convenient

access

to the large amounts of

and gain



better improvement.As the

EMU-wide

enclosed design,add the slow speed

and low reliability of traditional single chip,embedded system is undoubtedly the best option.In recent years,embedded computer is further applied tO industry,agriculture, education,national defense,scientific research and daily life and other fields.Currently,the development of embedded Linux technology,data acquisition network Linux the

technology and

integrated

management technology
is


formally adapted to this trend.Embedded systems using
cOStS,set

technology

equipment of small,portable,easy-to-network and lowly
as a

signal acquisition and processing

whole.It has broad application prospects.

In this paper,using embedded Linux as the operating system for handling the

company’S¥3C2440

embedded processor research and design

an

embedded distributed
on

data acquisition system.Papers analyzing the Linux device driver based

the basic

working principle is discussed frequently encountered in developing interrupt handling,I/O

ports,and

based

on

the ARM 920T embedded processor system in reading,write the

character device driver of external Tms paper

RAM,and network

management.

designed an
all

board of AD data acquisition tO carry out drive

and

data

acquisition.Build modify kernel

embedded Linux platform,CalTy through the kernel
to

transplanting and
whole software

code

adapt to¥3C2440

development board.the

components are completed approach


under

Linux system.Distributed

network management using the assigned
that

manager and a

number of sub—systems,through the router dynamically subsystem


addresses,the

manager and the

Can pass

the entire

network information,SO

the whole system composed of

closed self-organization distributed data acquisition

management

system,add

or

reduce the sub?systems will not affect its function.

Experiments show that is technically entirely feasible to constructed the ARM—based embedded Linux distributed data acquisition

system,and applied

to

areas such

as

industrial

measurement and contr01.Finally,the papers summarized the system,also raised the
inadequacy of the design and improvement ideas for the further study of the Keywords:distributed;data

subject.

acquisition;Embedded

Linux

system;ARM;Network

transmission

西南交通大学 学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并 向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授

权西南交通大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用
影印、缩印或扫描等复印手段保存和汇编本学位论文。

本学位论文属于 1.保密口,在 年解密后适用本授权书;

2.不保密0使用本授权书。
(请在以上方框内打“√”)

学位论文作者签名:睬白心、熙

指导老师签名:碡,峡苁
日期.2,a/a.幺。7

日期:汕…牛?专7

西南交通大学硕士学位论文主要工作(贡献)声明

本人在学位论文中所做的主要工作或贡献如下:
l: 2: 3: 4: 5:

研究分布式测试系统的网络结构。

基于嵌入式Linux的分布式数据采集系统整体方案。
构建嵌入式Linux系统。Linux环境下驱动程序的编写及内核模块设计、加载。 基于TCP/IP协议的分布式网络通信设计。 动态分配的ARM/Linux自组织分布式数据采集处理系统的软件实现过程。

本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所得的成 果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体己经发表或撰 写过的研究成果。对本文的研究做出贡献的个人和集体,均己在文中作了明确说明。 本人完全了解违反上述声明所引起的一切法律责任将由本人承担。

学位论文作者签名:球b
日期:扣『D.
v.a

门、麂



西南交通大学硕士研究生学位论文

第1页

第1章
1.1课题的目的和意义
两年前,

绪论

“动车组”对中国人来说,还是个完全陌生的词汇。2007年4月18日

第六次大提速的实施,将动车组开进了人们的日常生活。经过一年的运营,动车组已 成为高速、舒适、时尚的代名词,这一新兴交通工具迅速深入人心。 据最新消息,首列国产时速300公里及以上动车组成功下线后,中国南车股份公 司己迅速转入批量化生产阶段,首批5列时速300公里及以上动车组将于今年奥运会 前夕在京津城际铁路正式投入运营。具有自主知识产权的16辆长大编组座车动车组 和世界首创的卧铺动车组将于今年陆续下线。根据我国高速列车自主创新联合行动计 划,完全由我国自主化的时速350至400公里高速列车研制也已在中国南车全面启动。 在不久的将来,中国将拥有覆盖时速200至350公里及以上、适应不同铁路客运 需求的高速动车组系列化产品,中国高速动车组将迎来崭新的发展时期。 当然,目前的高速动车组还处在起始阶段,需要对其作各方面的试验。由于高速 动车组采用的是全封闭式装置,而传统的单片机传输数据慢、可靠性低、无网络(只 能通过串口232通信或Zigbee通信)。针对这些特点,采用嵌入式系统进行测试无疑 是高速动车组测试最好的方法。考虑到测试的多样性,我们采用分布式系统来进行。 本文采用嵌入式ARM+Linux组成的分布式结构,到目前为止,嵌入式系统已经广泛 渗透到人们的工作、生活中,从家用电器、手持通信设备、通信终端、仪器仪表、汽 车、航天航空、军事装备、制造工业、过程控制等。嵌入式系统可应用于人类工作与 生活的各个领域,控制系统、信号处理、通信与网络等,具有极其广阔的应用前景Ⅲ。 主要的嵌入式操作系统有Vxworks(WindRiver公司)、Microsoft Windows CE、pSOS (ISI公司)、∥C/OS.II(小型嵌入式系统)、Linux、uClinux、Palm OS(3COM公司)、 QNX等。 在这些嵌入式操作系统中,Linux是一套免费使用和自由传播的类Unix操作系 统,自1991年诞生至今,Linux在很多方面已经赶上甚至超过了很多商用的UNIX系 统。它实现了真正的多任务、多用户环境。Linux对硬件配置的要求非常低,能够在 4MB内存的386机器上很好的运行。而且可以支持很多种处理芯片。此外,更为重 要的是,Linux是开源的,有众多高手愿意在Linux上开发程序,随时对Linux的开 发内核进行升级和修补。 在嵌入式系统应用方面,Linux小的可以放在一张软盘上运行。为实时系统而开

西南交通大学硕士研究生学位论文
i II II __

第!页

发的变种RT Linux(Real.Time Linux),可以让Linux支持硬件实时任务。Linux的开 放式原则使得Linux下的驱动和升级变得越来越多,越来越快。基于其低廉成本与高 度可设定性,Linux常常被应用于嵌入式系统,例如机顶盒、移动电话及行动装置等。 在移动电话上,Linux已经成为与Symbian OS、Windows Mobile系统并列的三大智能 手机操作系统之一;而在移动装置上,则成为Windows CE与Palm OS外之另一个选 择。目前流行的TiVo数位摄影机使用了经过客制化后的Linux。此外,有不少硬件式 的网络防火墙及路由器,例如部份LinkSys的产品,其内部都是使用Linux来驱动、 并采用了操作系统提供的防火墙及路由功能。 由此可见,对于高速动车组上的测试系统,采用ARM+Linux分布式测试无疑是 最好的方法,此系统的优点如下: 1.运行速度快。ARM的运行速度远远大于单片机;
2.

系统可靠性高。嵌入式系统大都是芯片等部件,与计算机系统的硬盘、扩展 卡相比,具有防震、防尘优点;程序固化在Flash/ROM中,不易破坏;硬件 集成度高,使系统整体可靠性大大提高,改善了传统的单片机数据传输慢及可 能丢失数据的不足。

3.

易扩展、功能强。ARM+Linux组网的系统外围设备丰富,可接移动硬盘、 USB接口、无线网络传输等。

4.

体积小。由于高端微型处理器甚至SOC的应用,嵌入式系统的体积不断减小, 直接影响数据采集与控制系统的体积,从而形成便携式系统,携带和使用非 常方便。

5.开发周期短、成本低。嵌入式系统开发的数据采集与控制系统,周期短、成 本低,具有微机工业控制系统无法比拟的优势。

1.2国内外研究现状与发展趋势
1.2.1国内外研究现状
从国内外研究的状况来看:对基于分布式的软件测试技术研究与测试工具开发方
面的研究还很少见到;前期牵引动力实验室在高速动车组上做的试验是采用的单片机 +CF卡+Zigbee通讯来实现的,目前在国内还没有采用ARM+Linux的分布式测试 系统的应用。从国外己经公开发表的论文、技术报告来看,针对基于分布式的软件系 统的测试研究主要集中在代码的正确性、功能的有效性、分布式组件的依赖性、互操 作性、以及测试充分标准等方面。另外还有关于分布式组件的认证、性能、效率和安 全性等方面的考虑。泰国的Carver等人提出了基于事件约束的测试技术,并应用 CSPE(Constrains
on

Succeeding and Preceding

Events)描述事件序列,南京大学顾庆等

西南交通大学硕士研究生学位论文

第3页

人对CSPE进行了改进,以形式化描述事件约束,通过判断程序执行时产生的事件序 列集同事件约束集的~致性来检测被测程序的正确性。
分布式测试系统的优势在于可以实现资源共享,降低测试系统的成本。分布式测

试技术可以实现资源共享,使现有资源得到充分利用,从而实现多系统、多专家的协
同测试与诊断。它解决了已有总线在仪器台数上的限制,使一台仪器为更多的用户所 使用,实现测量信息的共享,实现整个测试过程的高度自动化、智能化,同时减少了 硬件的设黄,有效降低了测试系统的成本。 另外,利用分布式测试系统可以提高测试效率。网络可以不受地域限制,这就决 定了分布式测试系统可以实现远程测试,使测试人员不受时间和空间的限制,随时随 地地获取所需的信息,同时分布式测试系统还可以实现测试仪器的远距离测试与诊 断,这样可以提高测试效率。正是由于分布式测试系统的这些优点,使得分布式测试 技术倍受关注。

1.2.2发展趋势
目前,动车组还处在其发展初期,各项性能指标不够完善,需要对其进行各项 专业的测试,嵌入式Linux下的分布式数据采集管理系统在动车组的测量方面无疑发 挥中重大作用。嵌入式Linux下的分布是好数据采集系统开发成本低,产品通用性强, 体积小,耗能少,抗干扰能力强,稳定性强等特点使系统的开发变得容易。不管是作 为~个独立的产品,还是某一系统的某个功能模块,都是十分有意义的。 数据采集系统的分布式测试是今后发展的趋势,它采用高性能处理器或多处理器 协同处理以达到高性能、高可靠性。为了迎合这些趋势,高端嵌入式微处理器和嵌入 式实时操作系统便成了工控业界的热点。其中核心部件32位嵌入式处理器在国外已 经得到广泛的运用。然而,这些嵌入式处理器由于开发成本十分高,所以在国内工控 领域的应用才刚刚起步。随着近年来国家加大一些重点项目的投入,特别是在电力系 统、铁路系统等方面,ARM处理器已经开始应用在高性能高可靠性的专用设备上。 相信随着高端微处理器自身的成本和开发调试成本的进一步降低,其应用将会变得很 广泛。

1.3论文前提
目前我国铁路事业已经实现了从准高速到高速之间的过渡。而随着动车组的广泛 运行,以其为测试对象的数据采集管理系统也带来一系列新的挑战。以数据采集卡为 核心的数据采集系统,采用的数据采集卡几乎都是PCI卡,必须插在上位机(PC机) 上的PCI槽上,由上位机(PC机)控制完成数据采集工作。因此信号必须从信号现

iiiiiiiiiiiiiiiiiiiiiiiiiiii

西南交通大学硕士研究生学位论文


第4页



i'

miiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

场传送到上位机(PC机)上,由于高速动车组采用的都是封闭式密封设计,这一设 计虽然可以有效的减少列车高速运行时的空气阻力,却为列车状态监控中数据采集设

置了一定的阻碍。数据采集系统到上位机(PC机)往往有很长的一段距离,信号在
传送的过程中会衰减,失真,混入干扰信号,产生误差。这是传统数据采集系统的一 个缺点。为了解决这一矛盾,人们开始使用现场总线互联,例如RS.485串行总线, CAN总线等,将现场采集的数据送到异地的中心处理机做进一步处理。但是这种方 法只适用于现场与中心距离不是很远的情况,而且这些通信总线的数据传输速度慢, 布线也不方便。 在当今网络化时代,以Imemet为代表的计算机网络通信的发展和应用取得了前 所未有的突破和成功,网络化测量、采集和(对网中仪器设备的)控制技术正随着网络 技术的发展而迅速发展。网络化、分布式的数据采集优势体现在:采集范围扩大,处 理能力增强,信息索取更加方便,并且能够适应场合变更的需要。凭借这些优良的性 能,网络化测量和控制已经成为数据采集技术发展的必然趋势。传统的数据采集系统 显然不能满足对测试系统灵活、高效、高速、多通道、网络化等要求和适应复杂测量 环境的需要。


本文目标是探讨高速动车组上ARM+Linu)【分布式测试管理系统的结构及可行 性,使其能运用到我国目前的动车组测试中。

1.4分布式系统的特点
我们已经能够建立一个分布式系统,但这并不意味着建立一个分布式系统一定是 一个好主意。就像以目前的技术水平,我们可以在一台计算机中装入四个软盘驱动器, 而问题在于这一作并没有什么意义一样。在本节中,我们将讨论典型分布式系统的动 机和目的,分析它与传统的集中式系统相比较具有的优点和缺点12.3】。

1.4.1分布式系统与集中式系统相比较而言的优点
系统倾向于分布式发展潮流的真正驱动力是经济。25年前,计算机权威和评论家

He舱osch指出CPU的计算机能力与它的价格的平方成正比,后来成为研osch定理。
也就是说,如果你付出两倍的价钱,就能获得四倍的性能。这一论断与当时的大型机 技术非常为何,因而使得许多机构都及其所能地购买最大的单个大型机。 随着微处理机技术的发展,Grosch定理不再适用。现在人们只需花几百美元就能 买到一个CPU芯片,这个芯片每秒钟执行的指令比20世纪80年代最大的大型机的 处理器每秒所执行的指令还多。因此,最节约成本的办法通常是在一个系统中使用集

西南交通大学硕士研究生学位论文

第5页

中在一起的大量的廉价CPU。所以,倾向于分布式系统的主要原因是它可以潜在地得
到比单个大型集中式系统好得多的性能价格比。世纪上,分布式系统是通过较低廉的

价格来实现相似的性能的。
与这一观点稍有不同的是,我们发现微处理机的集合不仅能产生比单个大型主机 更好的性价比,而且还能产生单个大型主机无论如何都不能达到的绝对性能。例如, 按目前的技术,我们能够用10000个现代CPU芯片组成一个系统,每个CPU芯片以 50MIPS(百万条指令每秒)的速率运行,那么整个系统的性能就是500000MIPS。而 如果单个处理机(即CPU)要达到这一性能,就必须在2术10.12秒(O.002纳秒)的 时间内执行一条指令,然而没有一台现存的计算机能接近这个速度,所以无论是要以 低价格获得普通性能,还是要以较高的价格获得极高的性能,分布式系统都能够满足。 另一方面,一些作者对分布式系统和并行系统进行了区分。他们认为分布式系统 是设计用来允许众多用户一起工作的,而并行系统的唯一目标就是以最快的速度完成 一项任务,就像我们的速度为500000MIPS的计算机那样。我们认为,上述区别是难 以成立的,因为实际上这两个设计领域是统一的。我们更愿意在最广泛的意义上使用 “分布式系统”一词来表示任何一个有多个互连的CPU协同工作的系统。 建立分布式系统的另一个原因在于一些应用本身是分布式的。一家超级市场连锁 店可能有许多分店,每个分店都需要采购当地生产的商品(可能来自本地的农场)进 行本地销售,或者要对本地的某些蔬菜因时间太长或者已经腐烂而必须扔掉做出决 定。因此,每个分店的本地计算机掌握存货清单时有意义的,而不是集中于公司总部。 毕竟,大多数查询和更新都是在本地进行的。然而,连锁超级市场的高层管理者也经 常了解他们目前还有多少甘蓝。实现这一目标的一种途径就是将整个系统建设成对于 应用程序来说就像一台计算机一样,但是在实现上它是分布的,像我们前面所描述的, 这就是一个商业分布式系统。 同集中式系统相比较,分布式系统的另一个潜在的优势在于它的高可靠性。通过 把工作负载分散到众多的机器上,单个芯片故障最多只会使一台机器停机,而其他机 器不会受任何影响。理想条件下,某一时刻如果有5%的计算机出现故障,系统将仍

能继续工作,只不过损失5%的性能。对于关键性的应用,如核反应堆或飞机的控制
系统,采用分布式系统来实现主要是考虑到它可以获得高可靠性。 最后,渐增式的增长方式也是分布式系统优于集中式系统的一个潜在的重要原 因。通常,一家公司会买一台大型主机来完成所有的工作。而当公司繁荣并扩张时, 工作量就会增大,当其增大到某一程度时,这台主机就不能再胜任工作了。仅有的解 决办法要么是用更大型的机器(如果有的话)代替现有的大型主机,要么是再增加一 台大型主机。这两种做法都会引起公司运转混乱。相比较之下,如果采用分布式系统, 仅给系统增加一些处理机就可能解决这个问题,而且这也允许系统在需求增长的时候

西南交通大学硕士研究生学位论文 组件进行扩张。表1.1总结了以上这些优点。
表1.1分布式系统相对于集中式系统的优点 项目 经济 速度 固有的分布性 可靠性 渐增 描述 微处理机提供比大型主机更好的性价比 分布式系统总的计算能力比单个大型主机的更强 一些应用涉及到空间上分散的机器 如果一台机器崩溃,整个系统还可以运转 计算能力可以逐渐有所增加

第6页

从长远的角度来看,主要的驱动力将是大量个人计算机的存在和人们共同工作与 信息共享的需要,这种信息共享必须是以一种方便的形式进行的,而不受地理或人员、 数据以及机器的物理分布的影响。

1.4.2分布式系统与独立PC机相比较的优点
既然使用微处理机是一种节省开支的办法,那么为什么不给每个人一台个人计算 机,让他们各自独立地工作呢?一则,许多用户需要共享数据。例如,机票预定处的 工作人员需要访问存储航班以及现有座位信息的主数据库。加入给每个工作人员都备 份整个数据库,那么实际上这是无法工作的,因为没有人知道其他工作人员已经卖出 了哪些座位。共享的数据时上例和许多其他应用的基础,所以计算机间必须互连。而 计算机互连就产生了分布式系统。 共享并不只是仅仅涉及数据。昂贵的外设,例如彩色激光打印机、照排机以及大 型存储设备(如自动光盘点唱机)都是共享资源。 将一组孤立的计算机连成一个分布式系统的第三个原因是它可以增强人与人之 间的沟通,电子邮件比信件、电话和传真有更多诱人之处。它比信件快得多,不像电 话需要两人同时都在,也不像传真,它所产生的文件可在计算机中进行编辑、重排和 存储,也可以由文本处理程序来处理。 最后,分布式系统比给每个用户一台独立的计算机更灵活。尽管一种可能的模式 是给每个人一台个人计算机并将它们通过LAN联在一起,但这种凡是并不是唯一的。 另外还存在~种模式是将个人计算机和共享计算机混合连接在一起(这些机器的型号 可能并不完全相同),使工作能够在最合适的计算机上完成,而并不总是在自己的计

算机上完成。这种方式可以使工作负荷能更有效地在计算机系统中进行分配。系统中
某些计算机的失效也可以通过使其工作在其他计算机上进行而得到补偿。表1.2总结 了以上所介绍的各点。

西南交通大学硕士研究生学位论文
表1.2分布式系统相对于孤立的(个人)计算机的优点 项目 数据共享 设备共享 通信 灵活性 描述 允许多个用户访问一个公共的数据库 允许多个用户共享昂贵的外围设备(如彩色打印机) 使得人们之间的通信更加容易,如通过电子邮件 用最有效的方式将工作负荷分配到可用的机器上

第7页

1.4.3分布式系统的缺点
尽管分布式系统有许多优点,但也有缺点。本节将指出其中的一些缺点。我们前

面已经提到了最棘手的问题——软件。就目前的最新技术发展水平,我们在设计、实
现及使用分布式系统上都没有太多的经验。什么样的操作系统、程序设计语言和应用 适合这一系统呢?用户对分布式系统中分布式处理又应该了解多少呢?系统应当做 多少而用户又应当做多少呢?专家们的观点不一。随着更多研究的进行,这些问题将 会逐渐减少。但目前我们不应该低估这个问题。 第二个潜在的问题是通信网络。由于它会损失信息,所以就需要专门的软件进行 恢复。同时,网络还会产生过载。当网络负载趋于饱和时,必须对它进行改造替换 或加入另外一个网络扩容。在这两种情况下,一个或多个建筑中的某些部分必须花费 很高的费用进行重新布线,或者更换网络接口板(例如用光纤)。一旦系统依赖于网

络,那么网络的信息丢失或饱和将会抵消我们通过建立分布式系统所获得的大部分优
势。 最后,上面我们作为优点来描述的数据易于共享也是有两面性的。如果人们能 够很方便地存取整个系统中的数据,那么他们同样也能很方便地存取与他们无关的数 据。换句话说,我们经常要考虑系统的安全性问题。通常,对必须绝对保密的数据, 使用一台专用的、不与其他任何机器相连的孤立个人计算机进行存储的方法更可取。 而且这台计算机被保存在一个上了锁的十分安全的房间中,与这台计算相配套的所有 软盘都存放在该房间中的一个保险箱中。分布式系统的缺点如表1.3所示。
表1-3分布式系统的缺点 项目 软件 网络 安全 描述 目前为分布式系统开发的软件还很少 网络可能饱和和引起其他问题 容易造成对保密数据的访问

尽管存在这些潜在的问题,许多人还是认为分布式系统的优点多于缺点,并且普 遍认为分布式系统在未来几年中会越来越重要。实际上,在几年之内许多机构会将它

西南交通大学硕士研究生学位论文

第8页

们的大多数计算机连接到大型分布式系统中,为用户提供更好、更廉价和更方便的服

务。而在十年之后,中型或大型商业或其他机构中可能将不会再存在一台孤立的计算
机了。

1.5课题的主要研究内容
本文的研究内容是在传统的单片机数据采集系统基础上提出了以基于嵌入式 ARM+Linux的数据采集管理系统的改进方案,并结合实际要求,对其应用及相关技 术进行了理论研究和探索。

本课题所研究的数据采集系统基于删9平台,构建Linux下的AD驱动,数据

采集,无线传输、网络管理、数据实时显示等功能于一体的数据采集管理系统。采用 嵌入式Linux系统开发技术,应用嵌入式操作系统,模块化设计,提高了系统的实时 性和可靠性以及系统的可扩展性。在结构设计上,采用分布式测试结构,提出动态分 配的ARM/I,inux自组织分布式测试系统的技术方案,提高了试验效率,改进了试验 条件,并为其他嵌入式系统应用和发展提供了基础研究。 课题的研究内容主要有以下几个方面:
1: 2: 3: 4: 5: 6:

研究分布式测试系统的网络结构。 基于嵌入式Linux的分布式数据采集系统整体方案。 构建嵌入式Linux系统。Linux环境下驱动程序的编写及内核模块设计、加载。 基于TCP/IP协议的分布式网络通信设计。 动态分配的ARM/Linux自组织分布式数据采集处理系统的软件实现过程。 系统的调试。

西南交通大学硕士研究生学位论文

第9页

第2章系统总体设计
在一个分布式系统中,一组独立的计算机展现给用户的是~个统一的整体, 就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分 配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一 个以全局的方式管理计算机资源的分布式操作系统,即主控制器manager。与之 进行数据交换传输的有客户端模块和服务器模块。分布式系统提供了一个可轻 松的将复杂的软件项目分解成细小的、易于管理的模块的平台,它可以在不同 的计算机上使用不同的编程语言并进行独立的开发和维护。这些模块通过标准 的网络连接,即可进行远程访问和控制,提供系统需要的硬件接口、数据存储、 数据采集、显示等功能哺‘71。

2.1分布式系统架构
整个系统设置包括三个类型的组件:manager,服务器模块和客户端模块。
1、manager

manager处理不同模块之间的信息交换。它提供通道选择、连接确认和监测、 协议的执行、错误检查,以及快速切换单位转换的基本功能。它是服务器和客 户端模块的主要控制端。 2、服务器模块 服务器模块,连接到manager并提供基本的一些设置,一般有Base
Servers

和Abstraction Servers之分。Base Servers直接与硬件进行数据传输,在许 多设黄中,它要求特定的服务器提供数据存储并通过特定计算机串口发送和接 收原始字节。如GPIB控制卡或网卡。他们可以处理请求,如“发送5个字节到 设备6’’或“从COM2端口读取12字节”。 而Abstract ion Servers可提供更

高层次的功能,如处理特定类型的硬件设备和服务,把“设置3号微波源输出 频率为6.882GHz”转换成“发送8字节到设备27: 到对应的基本服务器。 3、客户端模块 客户端通过服务器下面的一个简单的协议完成一定的数据采集,他们不会直 接进行硬件访问,而是连接到manager向服务器端进行数据的请求,通过它和 各服务器进行信息的交换、查询等。系统的连接图如图2-1、2-2所示。 ‘OF6882MH’"并把它传递

里至圣塑奎兰至圭望室兰兰堡兰圣

里兰至

图2.1系统连接图

图2.2系统逻辑图 系统各部分提供的功能如表2.1所示。

西南交通大学硕士研究生学位论文
表2.1系统各部分功能简介 名称
R¥232 Server GPIB Server DataStrg Server FnGen Server

第11页

功能 通过COM口写入和读取字节数 通过GPIB总线写入和读取字节数 存储和检索实验数据 函数发生器的访问 硬件数据采集 将新的数据图表传送到DataStrg Server 客户端脚本运行

DAQ Server
Graphing Client ExptScrpt Client

整个嵌入式Linux分布式数据采集管理系统使用的硬件平台可以各不相同,根据 需要来选择,本文主要设计了manager和DAQ数据采集服务器,其余的各模块设计 方法都是相同的,本文先完成分布式系统采集的一部分,通过测试可知整个系统都是 可行的。系统主要由三个模块组成: (1)基于TLC2543的数据采集模块;
(2)¥3C2440 ARM开发板;

(3)基于windows系统的manager和子系统模块(本文为嵌入式Linux系统)。 整个系统组成如图2.3所示:

图2.3系统总体设计

2.2 manager 分布式测试系统的优势在于可以实现资源共享,降低测试系统的成本。分布式 测试技术可以实现资源共享,使现有资源得到充分利用,从而实现多系统、多专家的 协同测试与诊断。它解决了已有总线在仪器台数上的限制,使一台仪器为更多的用户

西南交通大学硕士研究生学位论文

第12页

所使用,实现测量信息的共享,实现整个测试过程的高度自动化、智能化,同时减少
了硬件的设置,有效降低了测试系统的成本。 另外,利用分布式测试系统可以提高测试效率。网络可以不受地域限制,这就 决定了分布式测试系统可以实现远程测试,使测试人员不受时间和空间的限制,随时 随地地获取所需的信息,同时分布式测试系统还可以实现测试仪器的远距离测试与诊 断,这样可以提高测试效率。正是由于分布式测试系统的这些优点,使得分布式测试 技术倍受关注。 系统的主要优势之一是,它支持许多不同的编程语言。这使开发人员可以选择最 优化的语言来实现一个特定的功能。 Delphi的主要优势是GUI设计,异步编码和执行速度。因此,Delphi对于写接1:3

是一个很好的语割10,111,因此本文选用它来完成设计。系统结构图如2.4所示。

ARM/Linux

ARM/Linux 子系统2

ARM/Linux

ARM/I,inux
......

子系统1

子系统3 图2-4分布式系统结构图

子系统rl

对整个ARM4-Linux分布式测试系统,采用一个manager和各子系统的方法。首 先,选定一个manager,有固定的IP地址,各子系统开机后即可向manager注册,通 过路由器动态分配地址,manager及各子系统都将清楚的知道整个网络的信息,如各 系统的功能及其服务内容等。使整个系统组成一个封闭的自组织网络,增减子系统都 不会影响其功能。各子系统分别负责不同的部分,由用户自行设置,manager及各子 系统之间能够进行数据传输及显示等。 manager是整个系统的核心,有固定的IP地址,首先,manager也是一个服务 器,只是它提供的服务器跟各服务器的不同,它返回系统中所有可用的服务器列表信 息,包括服务器/客户端名和ID。当服务器/客户端开机向manager注册之后,由路由 器动态分配IP地址,同时,各服务器端将其提供的服务提供给manager,这样,系统

西南交通大学硕士研究生学位论文 中所有部分通过访问manager即可知道整个系统服务的内容。

第13页

manager在固定的端口监听各服务器端发送过来的请求,根据包结构内容来处理 信息,除了提供整个系统服务列表之外,manager主要的功能就是负责数据包的转发, 当它接到一个服务器端向另一个服务器端发送信息的请求时,通过查看列表成功将数 据包转发到目标服务器端口。

2.3数据采集服务器
数据采集服务器是在ARM+Linux环境下实现,硬件选择SAMSUN¥3C2440
ARM开发板,加上一个AD转换模块,软件都是在Linux操作系统下完成。服务器 与manager通信部分基于TCP/IP协议。数据采集服务器设计主要包括以下几个方面 内容。 1、AD数据采集模块的设计 2、AD模块驱动程序的编写 3、基于SPI总线的ARM数据采集程序编写 4、数据采集服务器的设置 5、数据采集服务器与manager的连接、通信及数据传输

2.4

TCP/IP通信部分
TCP/IP(传输控制协议.网际网路协议):Transmission ControlProtocol/Intemet

Protoc01)是一种包含了协议、工具和服务的套件,是让全球资讯网(World Wide Web)运 作的原动力。它被广泛利用于企业间网路,并包含能维护电子邮件以及新闻群组的元 件。TCP/IP所指的是一整套庞大的通讯协议家族,其中以Transmission
Control

Protocol(TCP)及Intemet Protocol(IP)这两套协议最具代表性1551。IP协议工作于网络层, 它提供了一套标准让不同的网路有规则可循。使用IP从一个网路将封包路由到另一个

网路。IP在设计上可用来在LAN.LAN及PC.PC之间进行传输的。而TCP则用来诠释这
些规则的。现在TCP/IP已经成为最流行的通讯协议了。其层次分布如图2.5所示。

西南交通大学硕士研究生学位论文

第14页

图2-5

TCP/IP协议的层次

整个分布式系统的上位机之间使用的是TCP/IP通讯,整个系统通过路由器自动分 配IP地址,IP主要负责IP寻址、路由选择和IP数据包的分割和组装。TCP主要用于在主 机间建立一个虚拟连接,以实现高可靠性的数据包交换。在传输模式中,将数据包成 功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认, 那么TCP将重新发送数据包,这就是TCP/IP的三次握手。 下面分析TCP/IP通信建立的过程。在发出将建立通信会话的第一个数据包之前, 发送方主机上的TCP/IP协议执行以下四个不同的步骤: 1.TCP/IP将主机名或NetBIOS名称解析为IP地址。 2.使用目标IP地址和IP路由表,TCP/IP确定要使用的接口和下一跃点IP地 址。 3.对于共享访问技术(例如,以太网、令牌环和分布式光纤数据接口(FDDI)) 上的单播IP流量,地址解析协议(ARP)将下一跃点IP地址解析为媒体访问控制 (MAC)地址(也称为数据链接层地址)。 对于以太网和FDDI上的多播IP流量,目标多播IP地址会被映射到相应的多

播MAC地址。对于令牌环上的多播IP流量,使用功能地址0xC0.00.00.04—00.00。
对于共享访问技术上的广播流量,MAC地址会被映射到0xFF.FF.FF.FF.FF.FF。

4.之后,IP数据报会被发送到通过ARP解析的MAC地址、多播映射或MAC
级广播地址。 网络访问要通过不同的协议进行,各种协议要通过不同的端口进行访问,如25端 口是邮件端口,3389超级终端(就是木马程序最想打开的端口),FTP服务为21端口, Telnet服务为23端口,以及HTTP)报务的80端口等等。 通过TCP/IP协议端口即可进行各个系统之间的数据传输。

窒里圣里奎茎堡圭些至兰兰篁兰塞
第3章分布式系统的实现

篁:;至

3.1主控制器manager
311

manager的连接
manager是整个系统的中心,它建立各服务器和客户端模块的连接及通道选

择。首先,manager有固定的IP地址,服务器和客户端子系统丌机后向manager 进行注册,manager会建立一个表格来统计注册的子系统提供的功能,如数据存 储、数据采集等。如图3 1所示

?o。。二j



】lD【N一
西1 j 2 F 3 j 4

‘R“{s“I
v2口
1‘


ReeOmd



”一 R∞
£,m
D^口s~

1d

n0
口口 v2-0


12 7


” 7

国3-】inallo.ger功能显示圈

子系统注册的同时,通过路由嚣自动分配IP地址,通过manager我们可知各服 务器的助能,这样,对于客户端需要的请求,都能通过manager作为中转向需 要的服务器进行信息传递。并且,整个系统是自组织的,无论工作人员什么时 候添加一个客户端或服务器端都能自动进入编辑。manager的运行环境为
Wi

ndow5系统,所有硬件都采用高端配置。服务器配置如图3—2所示。

至里圣塑奎茎至圭塑塞兰茎篁鎏圣
二'目j
iID

量::至




j j固

R㈣




Rw●捌I

圆墨墨墨墨嘲
l目堋Iiou嘏^o“do

图3-2系统配置

客户端和服务器模块连接到managel‘,需设定密码,保存配置。manager的
设置分三步进行。 l、连接 首先,服务器/客户端模块通过正确的端口打开一个TCP连接到manager的

计算机上。如果起源的计算机在允许的主机列表中,manager将接受连接,否则,
连接被终止。

连接的第一步,客户机/N务器模块发送第一个数掘包。manager将其作为
目标1发送来的,数据包有请求ID号,上下文内容可以使任意数,而且包中没 有数据。manager通过该目标来确定客户机/服务器模块所使用的字节序。在有 相同的上下文内容,请求ID为发送的ID号相应的负数时,manager从sourcel

处响应一个数据包,该数据包中包含一个以验证码为字符串数据韵记录。
这是系统协议的唯一一个请求和响应不同的数据结构。 2、注册

客户机/服务器模块发送一个带任意确切请求ID的数据包到manager,其中,
系统注册时需进行MD5加密算法,manager发送一个随机数加上系统设置的密码 作为MD5返回到模块.模块通过MD5解码后的数据与manager端解码的数据对 比,朝I果数据一致,则进行注册。MDj加密算法保证了整个系统注册的安全性。

在同样一个没有records或者咀欢迎信息作为字符串数据的设置0处有相反的
请求ID条件下.marlager从SOLIrCel处响应一个数据包。注册完成。 3、客户机朋日务器选择 F一步,manager需要知道传八的连接是一个客户端还是服务器连接。为此, 客户端朋&务器模块发送个数掘包到目标】即manager,上下文内容为任意值,

西南交通大学硕士研究生学位论文

第1 7页

请求TD为正数,包中包含~个记录数据,带ws格式包含请求协议版本(当前 版本为1)和连接名的请求数据为客户端数据包,带wss s格式包古请求协议版
本(当前版本为1)和莲接名以及服务器类掣和描述的请求数据为服务器数据包。 I『lanager从SOUFCel处响应一个数据包。上下文内容与请求的一致,请求 lD号为相应的负数,同时,数据包中包含一个连接lD的记录或者是错误记录。

这样,就完成了manager的设置,manager是所有模块的中转站,任{u』一个 客户端需要系统的’个服务器提供数据或请求都必顽通过manager查看。系统 注删的时候manager会将各模块提供的服务进行列表,这样整个系统具有的服
务就~日了然,manager将其请求传递到具体的服务器进行服务,然后再通过

manager返回信息,任何一个模块(无论是客户端或服务器端)都只完成系统请 求的功能。通过软件控制,我1f]n7连接manager与数据采集服务器并进行数据传输。
在manager系统中,我们聚用系统测览器柬访问整个系统。
3 1

2浏览器
系统浏览器是一个非常强大的测试和调试工具。这个程序可以访问整个系统,它

可以浏览所有可用的服务器模块,以及它们所提供的功能列表。甚至可以将请求发送
到这些服务器并查看回应。

所有系统模块在Delphi中所写的,与连接到manager的方式相同。首先两个对
话框会问运行manager的计算机名,因为你目前可能在同一台机器上运行manager浏 览器,默认(本地主机)应该是如此:

『蘼j
『一一7_,。
闰3-3浏览器连接殴置

岜三二二二:兰竺:=耕:…糟144:要一‘。啊∞“~一。”。。目目学

旷一一隹封一7~

西南交通大学硕士研究生学位论文
此时.需爱提供相同的密码来验证连接到manager:

第18页

匣墨量墨田窿盎臣墨●●l蠢璧j
P。s#.蝴d

■I

『_————————一I
圈3-4验证连接拦

.溅署烈篇恐基l 回到I



系统与manager连接后如图3-5所示。

图3-5系统浏览器显示的系统连接图

系统浏览器作为一个调试工具,可以对系统中的数据进行相应的调试.根据 鲁设置所接受的数据格式,在请求框中发送数据.就可以在回复框内容看到返回

的数据。服务器下提供的所有功能部有一个设置ID号,我们可以根据这个ID号
来选择不同的服务功能。

3.2系统通信协议
manager会自动检测发送的第一个数据包字节序。默认情况下,我们选择小 端模式,这样manager可以更快地处理数据。 整个数据包结构可以表示为扁平化的数据即换算为二进制表示。如表3一l

西南交通大学硕士研究生学位论文 所示。
表3—1数据的二进制表示法 标签



第19页

长度【字节】
1 4 4

描述 假:0x00,真:任意数 有符号的32bit值 无符号的32bit值 i给出字符串长度和原始字符串数据 64bit双精度格式数值 复数 给出从12:00am,Jan l,1904开始的整个秒数的有符号的64bit整型 数后跟秒的一小部分的有符号的64bit整型数 不代表任何东西 顺序连接的扁平化串元素 扁平化给出数组长度后跟顺序连接的元素 11扁平化n维数组长度后跟扁平化元素 扁平化 扁平化


S V

4+ien(s)
8 8+8 8+8








【…】
’|r'

0+len(…1 4+ien(27) 4*n+len(2) 8+len(error)

宰n? E E?

len(E)+len(27)

数据包是网络传输的数据单位。除了record,一个包包括许多参数:比如 它从哪儿来,目的地是哪儿,以及它的类型(请求,响应,消息)和描述的应 用范围。一个数据包包含的字段内容如表3-2所示。
表3-2一个数据包中包含的字段 字段
Context

标签类型
(w.W)
1 W

描述
给出了数据包的应用环境即sever的指针 给出了数据包请求ID->0表示请求,=O表示消息,<0表示同复 给出了源码ID(传入的数据包)或目标ID(输出数据包) 扁平化的S包括顺序连接的扁平化记录

请求
Src/Tgt

记录



而包内的数据是封装在记录中的。除了数据,记录包含解释数据的设置号 和数据的标识类型。记录中包含的字段内容如表3-3所示。
表3-3一个记录包含的字段 字段 设置 标识类型 数据 标签类型


描述 给出设置ID说明数据的意思或数据来源 给出记录中数据的标识类犁 扁平化的S包括扁平化数据





一个完整的数据包如表3-4所示。

西南交通大学硕士研究生学位论文
II II

第20页

表3-4完整的数据包内容 字段 内容描述 server为每个client保存一个记录,存储一些信息,context 就是指向这个记录的指针。 请求
Src/Tgt

Context鱼2立

要求的服务号,即Request server的ID号 packet的长度 packet包含的setting 4字节 设置号

ID

标识类型
records

类型tag所包含的字节数,如果为1,那包中的数据类型 占一个字节。 包中的数据类型 插入记录时依次加上的前缀 加入该前缀构成数据内容 发送的数据包中的数据内容

tag决定的字节数
0000000F 0000000B Data

例如,serverl(manager)发送的一个包,Request ID为5,指针Context(0, 8)中包含Setting 3的一个字符串数据“Test Server"的记录。这个包中的数据可以 表示成下面任一种格式(大端):
OO 00 OO 00 00 00 OO 08 00 00 00 OO 00 00 OF 00 05 OO 00 00 00 00 01 0B 54 65 OO 00 73 74 00 lC OO OO 00 72 76

?

03 00 00 00 01 73 65 72

20 53 65

或者是(小端):
00 00 00 01 65 72 00 00 08 OO 00 00 00 00 73 00 05 00 OO 00 01 00 00 00 1C 00 73 74 00 00 20 53 03 OO 00 65 72 76

?

OF 00 OO 00 OB 00 00

00 54 65

通过加上一段前缀(00 前缀(00
00 00

00

00

0B)构成数据内容,插入记录时依次再加上

OF),“Test Server”就是扁平化的数据了。

我们可以排除数据的长度,因为从标签类型和数据我们可以知道数据有多 长,加上它也不会使数据包明显增大,但却可以使这些功能实现起来更容易,

可靠性更强。作数据类型用的这些扁平化(或不扁平化)功能也可直接用于处理 数据包结构,同时,冗余位可以帮助检测执行的错误。
由于系统设置组件的命名方式,该协议与我们经常看到的协议的定义有一 点小偏差。在本协议中,我们讲述关于服务器/客户端模块与manager连接的建 立。在通常的网络语言中,由于模块在manager侦听的端口打开连接,服务器/

西南交通大学硕士研究生学位论文 客户机模块将被称为客户端,而将manager则作为服务器。

第21页

3.3

DAQ Server数据采集服务器
数据采集服务器的设计我们选择在嵌入式Linux操作系统下完成。硬件选用

SAMSUN S3C2440 ARM开发板和一个AD转换模块。

Linux是一个免费的多用户、多任务的操作系统,其运行方式、功能和UNIX系 统很相似,但Linux系统的稳定性、安全性与网络功能是许多商业操作系统所无法比 拟的。Linux系统最大的特色是源代码完全公开,在符合GNU/GPL(通用公共许可证) 的原则下,任何人都可以自由取得、散布甚至修改源代码。 越来越多的大中型企业的服务器选择了Linux作为其操作系统。近几年来,Linux 系统又以其有好的图形界面。丰富的应用程序以及低廉的价格,在桌面领域得到了较 好的发展,受到了普通用户的欢迎。 Linux由于自身的优点是非常适合于作为嵌入式操作系统,本系统就是基于Linux 操作系统,完成的数据采集部分。
3.3.1

SAMSUN¥3C2440 ARM开发板

数据采集服务器核心主要是基于上海勤研电子科技公司推出的ARM9开发板, 该开发板采用的是三星公司以ARM920T为内核的S3C2440微处理器,由于ARM9 内核具有功能强大,价格低廉,而且其应用技术比较成熟等特点,使其广泛应用于无 线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等应 用领域【13,321。其内核主要单元如图3-6所示:

西南交通大学硕士研究生学位论文

第22页

r— I I l I l l I -

<==纠
I l I I I I l - I l I I I I I l l

JATG



图3石ARM920T内核构成

其处理器最高主频达到了400MHZ,支持Wince和Linux操作系统。主要功能模 块有: 1:处理器:¥3C2440A.40 400MHz主频,ARM 920T内核; 2:ROM:16Mbit 3:FLASH:512M 4-RAM:512M
NOR FLASH,16bit宽度; bit NAND

FLASH,8bit宽度;

bit

SDRAM,133MHz,32bit宽度(两片组成);

5:电源:7-24V宽电压输入,LTl765高效DC/DC降压,标配12V电源; 6:网络:10Mbps低功耗嵌入式专用以太网网络芯片CS8900A,网络接口RJ45,集成 网络变压器,可靠安全; 7:串口:3路串口,两路带握手信号,可接调制解调器或者GPRS; 8:液晶接口:支持CSTN,TFT等多种LCD; 9:SD卡接口:支持SD/MMC和SDIO设备; 开发板外观如图3.7所示:

圣童至兰至茎薹圭至薹圭兰兰兰圣

薹:;圣

削3-7QT2440开发扳实物陶

3.3

2ARM处理器简介
ARM系列处理器是英国先进RISC机器公司(Advanced
RISC

Machines,ARM)的

产品。ARM公司是业界领先的知识产权供应商,与一般的公司不同,ARM公司只采

用IP授权的方式允许半导体公司生产基于ARM的处理器产品,提供基于ARM处理
器内核的系统芯片解决方案和技术授权。不提供具体的芯片。 目前市场上推出的ARM处理多种多样,主要包括要包括了四个系列:通用微处 理器系列、SecurCore系列、lmel的SffOllgARM、Intel的Xscalel】“。 其处理嚣主要特点及应用领域如下表所示:
表3-5常用ARM处理器特点及应用领域

为一种功耗的3二位RISK处理器,支持16{奇 Thumb指令集典型处理速度为0 IMIPS/MHz, 常见的系统主时钟为20MH至133MHz适用于 低价化、功耗低的消费娄府川。 流水级数由ARM7的三级增加到五级,支持数 据cache车u指々cache,县备更高的指令和数据处 理能力增加了对32何ARM指令集的支持:提
ARM9

工业控制、Imemet设 备、网络和调制解调器 设备、移动电话等多种 多媒体和嵌入式麻用。 应用于无线设备、仪 器仪表、安全系统、机 顶盘,高端扣印机、数 字照相机和数字摄像机
等,

ARM
通州

供牟性能的MMU,支持Windows

CE、LintLx、

PalmOS等多种t流断入式操怍系统。其典掣处理 速度为I lMIPS/MHz,常见的ARM9芯H的系统 土时钟抽100MHz或233MHz。 支持VFPl0浮点处理胁处理器,并且内嵌并

微处 理器

r一代无线设备、数

西南交通大学硕士研究生学位论文
行读写操作部件。ARMl0E系列与同等的ARM9 器件相比较,在同样的时钟频率下,性能提高了
ARMlOE

第24页

字消费品、成像设备、 工艺控制、图形和信息 系统等领域。

近50%,其典型处理速度为1.25MIPs/MHz,其时 钟频率则可以高达400MHZ。同时,由于采用了 两种先进的节能方式,ARMl0E系列微处理器得 以保留功耗极低的优点。 带有灵活的保护单元,以确保操作系统和应用数

主要应用于一些对安全 性要求较高的应用产品 及应用系统,如电子商 务、电子政务、电子银 行业务、网络和认证系 统等。

SecurCore

据的安全;采用软内核技术,防止外部对其进行 扫描探测;可集成用户自己的安全特性和其他协 处理器。

微处理器

采用了ARM体系结构高度集成32位RISK微
StrongARM微处理 器 处理器。它融合了Intel公司的设计和处理技术以

掌上电脑系列产品。

及ARM体系结构的电源效率,采用在软件上兼
容ARMv4体系结构、同时具有Intel技术优点的 体系结构。

Scale处理器是基于ARMV5TE体系结构的解决
XScale处理器 方案,是一款全性能、高性价比、低功耗的处理 器。它支持16位的Thumb指令和DSP指令集 3.3.3

数字移动电话、个人 数字助理和网络产品等 场合。

TLC2543数据采集模块

该部分电路主要包括信号调理电路、采样保持电路和A/D转换电路。A/D转换 电路芯片选用TLC2543。 1、信号调理电路设计 传感器输出信号一级放大和AD526程控放大后,变为.2.5V ̄+2.5V的双极性信号。 为了使输入到A/D转换器的信号为有限带宽信号,并且以很小的衰减让有效的频率信 号通过,而抑制这个频带以外的频率信号,从而防止信号的频谱发生混叠及高频干扰, 系统采用数字滤波器的方式。本设计中采用了MAX293可编程低通滤波器作为抗混 叠滤波器,MAX293由单片机控制实现截止频率的改变。 1)程控放大电路设计 AD526是美国MAXIM公司生产的软件可编程的增益放大器,其提供的增益倍数 有1,2,4,8‘和16倍。该芯片片内除集成了放大器,电阻网络和TTL可兼容的锁存 输入,不需要外部元件。它的优点有:增益误差小、线性误差低、温度漂移小、建立 时间短、直流特性好。

这部分电路设计如图3.8所示。主要引脚功能如下:V州:模拟输入;V SEN:
敏感输出;V FCD:强制输出;A0,A1,A2,B:增益控制;CS,CLK:工作方式 选择;±Vs:电源(±5~±17V)。

西南交通大学硕士研究生学位论文

第25页

………。…u^”一一
图3.8程控放大电路

2)MAX293低通滤波电路设计 MAX293是美国MAXIM公司生产的8阶低通椭圆开关电容可编程滤波器。

MAX293的截止频率可以被设置为0.1Hz到25KHz中的任意一个频率。在该器件中,
一个外接的电容通过内部晶体振荡器被用来产生时钟,或者可以使用外部的时钟信 号。如果使用片内振荡器产生时钟信号,只需要外接一个漏电小、无极性的高质量电 容,该电容的容值直接决定了振荡频率,计算公式为:
,D熨≈i=_一
?.3L—OSC

厶妒≈÷
1 n5

kJ—l, (3—1)

式(3-1)中,k为振荡频率,kHz;ck为外接电容,pF。
MAX293可以由输入时钟决定其截止频率,时钟频率与转角频率的比率公式为:

k≈lOOfo

(3-2)

式(3.2)中,fo为转角频率。即:其输入时钟和截止频率的比率是100:1,所以 设计的任务是选择控制滤波器截止频率的输入时钟。即对输入时钟的编程来控制截止 滤波器的频率。MAX293最大的推荐时钟频率是2.5MHZ,产生的截止频率是25KHZ。 其典型应用是:数据采集系统,反混叠,DAC后置滤波器,声音/数据信号滤波器。 MAX293低通滤波电路如图3-9所示。

西南交通大学硕士研究生学位论文

第26页

图3-9 MAX293低通滤波电路

3)电平平移电路设计 电压电流信号经低通滤波器滤波后,为了满足A/D转换器对信号电平的需要,须 经电平移位电路,将信号的中心电平移到A/D转换器所需的位置。图3.10给出了一 路信号的电平移位电路。图中电压信号Ua经运放ARl后输出AN00接到了A/D转 换器的一个通道的正向输入端,而A/D转换器的参考电压输出(+2.5v)经过运放AR2 后作为该通道的反相输入端AN01,为该通道的共模信号。经计算,该电路输入、 输出的关系式为:Uout=Uin+2.5,这样输入A/D模拟信号输入通道正向端的信 号为0 ̄+5V,满足了后续电路的需要。

图3.10电平移位电路

2、A/D转换电路设计

西南交通大学硕士研究生学位论文

第27页

系统采用的是SPI串行数据传输,AD转换芯片本系统选择的是TI公司12位串

行模数转换器TLC2543,它使用开关电容逐次逼近技术完成AD转换过程,其主要电
路图如3.11,3.12所示,其主要特性如下:
?

11个模拟输入通道;

?66ksps的采样速率; ●最大转换时间为10ps; ●SPI串行接口; ●线性度误差最大为+ILSB; ?低供电电流0mA典型值);

◆掉电模式电流为4衅。
~4

4…。……’一……^1。。、+‘”…m+’、4’
VCC
EOC SCK DTI DTO CS REF+ REF. INl0 IN9

o一—}~一

U1 IN0

eH0 INl CH2 CH3 CH4 eH5 CH6 CH7 CH8 IN7 IN8 GND IN6 IN5 IN4 IN3 IN2

,一2—3456—789一加






J.1…2._---.-J‘_一一…
{●_一

.≠j…一……÷‘…。…*- TM2543
图3.11 AD转换电路



图3.12

AD模块部分模拟通道接口电路

脚。辐]
。。嘏j

!卜~蛐8卜蛳¨蛐81 器文至X弓互涎蛩互疑Ⅸ弛弛、—兰竺吣至
狮DA忻TA:玄》C屹n:Ⅺ:)◇《:》◇《0蚝,、:,、豁:一2,、:砭:/:乙
:岛””出∞”
” ”

;;厂—一乙 几n同门厂|同门一;同闩臣互习F
。:甜

,l h西—一MⅫcon删∞啪————弋≯{l[乏:》◇c
鼽撤m New Multiplexer Addrree,s, Cor,”mmnv.1‘le

蹴旷——————————一1—一
狮淼醯

l*一T-coflv—叫I 卜——一咖咖℃嚣嚣黛靴譬…“。—————叶—AID—Con—versi—on.| ‘咖…5扣’矗鼢

3.3.4

AD数据采集程序设计

本系统数据采集板采用的是AD转换芯片TLC2543,直接在Linux环境下开发, 过程比较简单,其程序的流程图如图3.14所示。 其中¥3C2440和AD转换器之间采用的SPI数据总线以一个字节为单位进行数据 传输,最大的传输速度可达到34K/S,有效的保证了数据传输速度。

西南交通大学硕士研究生学位论文

第29页

图3.14

AD数据采集流程图

3.3.5服务器注册设置
由于AR.M条件有限,我们把它接入到上位机,在上位机上对其进行测试,然后 再将其移植到ARM中,按照设计的格式生成网络数据进行数据传输。在Delphi窗121 下,建立一个数据采集服务器工程,首先进行服务器与manager的连接注册。在窗口 中选择LabRADServerl或在对象查看器的下拉列表中双击事件下面的OnCormect入 口旁添加OnConnect处理程序。一旦建立连接并准备连接到manager,此程序将被调 用。在程序的开始和结束之间,添加如下行进行系统的一些功能设置:
LabRADServerl.RegisterSetting(1 0,’ch’,’Channel’,

[,i’],[,i,】,’Channel selection’);

∥通道选择

LabRADServerl.RegisterSetting(20,’samf,’Sampling丹equency’,

[tvt】,[tV.],’units:Hz’); LabRADServerl.RegisterSetting(30,’stal't’,’Start 【Ivt],【IVt】,”);

//设置采样频率
to collecting data’,

//开始采集数据

西南交通大学硕士研究生学位论文
LabRADServerl

第…页

Re画sfersenlng(40.’slop¨Stop data
[_、__】【。v。】_'_)

acquisition’.

Ⅳ停止数据采集

LablLa.DSer,,erl ReginerSening(50’cd_’’Change director),_.

阻]畔】.’Use””to

go up’J

//改变当前目求

LabRADServerl Re画nerSettjng(60’dk__1List director)content__

【¨】r(bsJl]._b T?Dir;F-File’).

Ⅳ存储目录

LabRADServerl RegisterSening(70’get'-’Dovmload data coment._

H]H]”):
LabRADServerl StartServing;

Ⅳ为脆务器提供数据

此时,当按【F9】运行服务器并刷新浏览器的服务器歹lj表时,靳服务器将显示出来 并提供所有可用的设置。在浏览器上可快速裔焉所有注册设置的不同参数是如何调 用的。浏览器的第一个参数是没置ID号,技仃J可以自己选择。manager上的文件列 表及浏览器上显示鲒果如图3一j 5,3-16所示

?=1~国
{it) N*e

ⅫF
R*od
no

s耐
1, 0


RE∞t唰
13 0
5 7

雪1
1 2 亭3

H∞5掣 6q岬

no
v20

E,啦H

1‘Ⅱ加se坩v20



斟3-I 5 DAQ服务器连接到manager后的显示目

至里圣鎏奎三至圭至薹圭耋::篁圣

堇i:至

幽3-16浏览器上控示的DAQ服务器提供的一些功能列表

3.3

6数据采集服务器的请求处理
处理请求我们必须执行OnRequest事件。在对象查看器中职击LabRADServerI

的OnRequesl事件。编写相应设置的请求代码。

服务器的各个设置分别完成不同的功能,系统中的任一模块都可向该服务器发送 它提供的请求。例如,新加入的客户端要求该服务器设置采样频率,返当服务器收到
请求后,即刻触发OnRequest事件中的设置20,完成请求后将数据返回到该客户端.

整个系统的可以这样理解:系统中的任一模块要求数据采集服务器做什么,它就做什
么(在该服务器提供的服务范围内),不要求做的它什么也不做。同时,开机注册的 时候,这些服务器设置manager都会显示在它的列表中,这使得整个系统的数据传输 透明化。 数据采集服务器向manager注册|三【后,整个系统即开始工作,如果我们在该网络 巾加八一客户端进行数据来集,即:客r1端向mallager注册后,可请求数据采集服务 器中的可用功能。如果请求的是开始采集数掘,则谖服务器即刻丌始采集,采集的数 据存八它的缓冲区,当缓冲区数据达到4k时,服务器发送一个请求将数据存到专门 用丁存储数据的数据存储服务器。即数据采集服务器只负责它设置中的几个功能,对 于它没有设置的功能,将由其他服务器端去完成:当然,本次设计的数掘采集服务器

内容较单一,我们可咀修改软件部分实现动车组备部分的数据采集,如:轴箱加速度、
车轮速度等。都可以通过设计的分布式系统来实现。

窒里圣望奎兰些圭至圣圭耋!!垒兰
3.4客户端的建立

堇兰至

客户端模块通常有两种目的:要么他们只为用户提供一个全新的界面系统,以完
成。一些手动控制的任务;要么运行脚本,用系统自动化的方式执行复杂的任务。 本系统中的客户端是用来手动控制,首先,我们建立一个客户端模块.在Delphi 中创建一个客户端,将其自动连接到manager,然后激活.我们在用户界面建立一个 组合框,两个标签,两个列表框和两个按钮。如图3.17所示。

to一日09 o ,乎e盘l rI}

口…[_…~……"”■0‘ .●…I…}s㈣n】☆☆-r‰∞i二_㈨。m
;r%蜀圹电^陋虱剖目s锄霹一。i-?

i篙

。直:___’.墓|:『『=0== 哮■'善■ — o№㈣



:厂一-__.
_。■…,
==



。!。。一:!。

刳3-17客户端界面设置

这样,我们可通过这些标签来查找系统中的文件服务器列表,显示所选文件的内 容以及对系统中可用服务器文件进行管理。
>ListBox ,ListBox

1中将会显示我们在数据采集服务器中设置的所有通道。

1将显示数据采集服务器中的采样频率。

1、获取文件服务器列表

我们通过编写激活服务器的代码可使客户端自动连接到系统.这样,可以要求 manager给出一个所有服务器的列表,此时.需对LabRADClientl的OnConnecl事件
进行编程:
procedure TForral

LabRADClientIConnect(Sender:TObject:ID:Cardinal:

Welcome:Stfingt:

iiiII
Var

i—i

西南交通大学硕士研究生学位论文
"T"I

第33页 iiiiiiiiiiiiiiiiiiiiiii

Pkt:TLabRADAPIPacket;

begin

Pkt:=TLabRADAPIPacket.Create(’Manager);
Pkt.AddRecord(’Servers’);

LabRADClientl.Request(Pkt,GotChannelList);

//发送请求并注册一个 //GotChannelList处理函数

end;

程序将创建一个数据包发送到manager,在这个数据包中,我们通过manager询 问所有可用的服务器。 2、选择一个服务器 当选择一个服务器时,我们希望程序直接搜索当前目录并显示在组合框中。因此, 我们用以下代码实现组合框ComboBoxl中的OnChange事件:
procedure TFonIll.ComboBoxl Change(Sender:TObject);
var

Pkt:TLabRADAPIPacket;

begin if ComboBox 1.Text=-”then exit;

Pkt:=TLabRADAPIPacket.Create(ComboBox 1.Text); Pkt.AddRecord(’dir’); LabRADClientl.Request(Pkt,GotDirListing,0);
end;

我们创建一个选定服务器的目录的请求包。GotDirListing函数将结果进行处理。 我们创建的数据包有两个记录:一是改变目录的请求和一是对新目录列表的请求。响 应包也将包含两个记录:每个对应一个请求。这就是为什么我们需要一种方式来告诉 处理器:应答的记录包含目录列表,因此必须使用Data参数。 3、显示文件 使用下面的代码为列表框ListBoxl中的OnDblClick事件添加一个处理程序:
procedure TForml.ListBoxlDblClick(Sender:TObject);
var

Pkt:TLabRADAPIPacket;
?

begin if ListBox 1.Itemlndex<0 then exit;

Pkt:=TLabRADAPIPacket.Create(ComboBox 1.Text); Pkt.AddRecord(’get’,’s’); Vkt[O].Data.SetString(ListBoxl.Items[ListBoxl.Itemlndex]); LabRADClientl.Request(Plot,GotContent);

西南交通大学硕士研究生学位论文
end;

第34页

在组合框中将会显示出我们选择的DAQ Server数据采集服务器,我们通过软件 控制可以得到采集的通道号和采样频率等,同时,通过与manager的连接,我们可以 在该客户端对数据采集服务器进行控制。

西南交通大学硕士研究生学位论文

第35页

第4章Linux内核驱动及系统软件设计
4.1

Linux驱动程序概述
设备驱动程序是嵌入式Linux内核的重要组成部分,也可以理解为操作系统的一

部分,对于一个特定的硬件设备来说,其对应的驱动程序是不同的。对于操作系统来 说,挂接的设备越多,所需要的驱动程序也越多。操作系统本身并没有对种类繁多的 硬件设备提供持久不变的“设各驱动”,也就是说操作系统在没有设备驱动程序支持下 是无法正常支配硬件行为的。这时候就需要独立开发一套适合自己产品的设备驱动。 对于嵌入式开发,更没有通用的驱动程序可以使用。因此,驱动程序开发是整个嵌入 式系统设计过程中必不可少的一部分。 现今的操作系统通常把内核和应用程序分成两个层次即“内核态”和“用户态”。 驱动程序是在“内核空间”中运行,而应用程序则是在“用户空间”中运行的。驱动

程序实际上就是硬件与应用程序之间的中间层。驱动程序工作在内核空间,其本质是
实现逻辑设备到物理设备的转换,启动相应的I/0设备,发出I/0命令,完成相应的 I/0操作,它是内核与外围设备数据交流的核心代码。编写设备驱动必须掌握操作系 统的工作原理,并对硬件设备的运行机制有清楚的认识。图4.1所示更加直观地表述 了驱动程序的地位和功能瞄oo】。

iiiiiiiiiiiiiiiiiiiiiiiiiii宣I

一-—I —~一I

西南交通大学硕士研究生学位论文


一l———iI

iiiiiiiiiiiiiiiiiiii

第36页

图4.1

驱动程序在嵌入式Linux系统中的作用

驱动程序是连接硬件设备和设备文件的纽带,是操作系统内核和硬件设备之间的 接口。设备驱动程序为应用程序屏蔽了硬件的细节,使应用程序可以像操作普通文件 一样操作硬件设备。下面就详细介绍嵌入式Linux下的设备驱动。

4.2设备类型分类
在Linux操作系统下,设备文件主要有3种类型: ●字符设备; ◆块设备; ●网络设备。 Linux内核必须能够用标准的方式和它们作用。每一类设备,如字符设备、块设 备和网络设备的驱动程序都提供了通用的接口,供内核在需要请求它们的服务时加以 使用。 Linux非常地动态,每次启动Linux内核都可能遇到不同的物理设备,所以可能 需要不同的设备驱动程序。Linux允许使用者在创建内核时通过配置脚本包含指定的 设备驱动程序,并在启动的时候将这些设备初始化。其它驱动程序可以在需要的时候

iiim R一——m

e…

西南交通大学硕士研究生学位论文
"i
n n n m

第37页
"iiiiiii





作为内核模块加载。为了处理设备驱动程序的这种动态的特质,设备驱动程序在它们 初始化的时候像内核登记。Linux维护已经登记的设备驱动程序列表,作为和它们接 口的一部分。

4.2.1字符设备
字符设备驱动程序是嵌入式Linux最基本、也是最常用的驱动程序,也是本系统 中选用的驱动程序。它的功能非常强大,几乎可以描述不涉及挂载文件系统的所有设 备。图4.2所示为驱动程序在应用程序和硬件设备之间接口功能的流程图。
应用程序

{工
调用标准的readO、wnteO、ioctlO、 open()、close()i函数


file_operations


驱动程序中对应硬件设备的实际的 devicereadO,device_writeO,deviceioctlO,

deviceopenO、device—close函数

j工
硬件设备

图4.2驱动程序的接口流程图

通常字符设备都是顺序写入和读取的。当对字符设备发出读/写请求时,实际的 硬件I/0将会紧接着执行操作。这样做法,使得字符设备的I/0操作很快。 字符设备(char device)和普通文件之间的主要区别是:普通文件可以来回读/写, 而大多数字符设备仅仅是数据通道,只能顺序读/写。但是不完全排除字符设备模拟 普通文件读/写过程的可能性。字符设备是Linux最简单的设备,可以像文件一样访问。 初始化字符设备时,设备驱动程序向Linux登记,并在字符设备向量表中增加一个
device

struct数据结构条目,这个设备的主设备标识符用做这个向量表的索引。一个

设备的主设备标识符是固定的,chrdevs向量表的每一个条目,一个device.struct数据

西南交通大学硕士研究生学位论文

第38页

结构,包括两个元素:一个登记的设备驱动程序的名称的指针和一个指向一组文件操

作的指针。这块文件操作本身位于这个设备的字符设备驱动程序中,每一个都处理特 定的文件操作,比如打开、读、写和关闭。/proc/devices中字符设备的内容来自chrdevs
向量表。

4.2.2块设备
块设备主要是面向大量数据传输或慢速设备而设计的,可以节省CPU的等待时 间。当对块设备进行读/写操作时,首先要开辟一段内存缓冲区,当用户进程对设备 的请求能够满足要求时,就返回请求的数据;如果不能,还需要调用请求函数来进行 实际的I/O操作。 从表面上看,似乎块设备和字符设备的主要区别就是是否开辟缓冲区、是否支持

seek(定位)操作。实际上,他们的主要区别是系统的管理方式。块设备的管理方式 是为了优化存储,而字符设备的管理方式是为了优化操作。所以,很可能在嵌入式
Linux系统中,某些设备既有字符设备驱动程序,又有块设备驱动程序。

4.2.3网络设备
网络设备在嵌入式Linux系统中比较特殊,它不像字符设备或者是块设备那样, 可以通过对应的设备文件节点去访问,内核也不是通过read(),write()等系统调 用去访问网络设备。嵌入式Linux的网络系统主要是基于BSD UNIX的socket(套接 字)机制。在系统和驱动程序之间定义有专门的数据结构(sk—buff)进行那个数据的 传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议 的支持。 4.3

AD驱动中关键数据结构
设备驱动程序的关键数据结构有:file operations数据结构、inode数据结构和file

数据结构。而写驱动程序的任务之一从某种意义上就是完成file operations中的函数 指针。 内核内部通过file结构识别设备,通过file operations数据结构提供文件系统的 入口点函数,也就是访问设备驱动的函数。file operations定义在<linux/fs.h>中的函数 指针表。
struct

file_operations{

struct module木owner;

loft_t(宰llseek)(struct file*.10ff t.int);

西南交通大学硕士研究生学位论文 ssize_t(木read)(struct ssize__t(宰write)(struct
file*,,char*,size_t,lofi file*,const

第39页

t木);

char*,sizet,loff_t拳);

int(木readdir)(struct file*,void*,filldir_t);
unsigned

int(木poll)(struct

file*,struct poll_table_struct木);

int(牛loctl)(struct inode*,struct file*,unsigned int,unsigned long); int(mmap)(struct ira(木open)(struct
file*,struct vm_area_struct木); inode*,struct file木);

mr(木flush)(struct file枣); int(宰release)(struct inode*,struct file宰); rot(宰fsync)(struct file*,stmct
dentry*,int

datasync);

int(幸fasync)(int,struct file*,int); ink母lock)(struct
file*,int,struct file_lock幸);

ssize_t(宰readv)(struct file*,const struct iovec*,unsigned long,lofr_t幸); ssizet(幸wfitev)(stmct
file*,const struct

iovec*,unsigned long,loff_t宰); t,loff_t,int);

ssize_t(簟sendpage)(struct

file*,struct page*,int,size

unsigned long(奉get_unmapped area)(stmct file*,unsigned long,unsigned
long,unsigned

long,unsigned long);

); 这个结构的每一个成员的名字都对应着一个系统调用。在用户进程利用系统调用 对设备文件进行诸如read/write操作时,系统调用通过设备文件的主设备号找到相应 的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数, 这是Linux的设备驱动程序工作的基本原理。 4.4

AD驱动开发中的基本函数
设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行登记,

以便系统在适当的时候调用。在Linux系统中,通过调用register chrdev向系统注册 字符型设备驱动程序。
im registerchrdev(unsigned int major,const char宰name,struct file_operations幸fops)

定义中的major是为设备驱动程序向系统申请的主设备号,如果major为0,则 系统为该驱动程序动态地分配一个主设备号,不过系统分配的这个主设备号是临时 的。name是设备名。fops是对各个调用的入口点的说明。此函数返回0表示成功, 返回.INVAL表示申请的主设备号非法,一般来说使主设备号大于系统所允许的最大 设备号。返回.EBUSY表示所申请的主设备号正在被其他设备驱动程序使用。如果动

西南交通大学硕士研究生学位论文

第40页

态分配主设备号成功,则此函数将返回所分配的主设备号。如果registerchrdev操作 成功,则设备名就会出现在/proc/devices文件里。 初始化部分一般还负责为设备驱动程序申请系统资源,包括内存、中断、时钟、 I/O端口等。这些资源也可以在open子程序或别的地方申请f32。6】。 1.内存操作 作为系统核心的一部分,设备驱动程序在申请和释放内存时不是调用malloc和 free,而代之以调用kmalloc和kfree函数。kmalloc等函数返回的是物理地址,而malloc 等返回的是线性地址。它们在ram/slab.c文件中定义。 void幸kmalloc(size_size,int flags)
void

kfree(const void木objp)

参数size为希望申请的字节数,objp为要释放的内存指针。 2.中断 在UNIX/Linux系统里,对中断的处理是属于系统核心的部分,因此如果设备与 系统之间以中断方式进行数据交换,就必须把该设备的驱动程序作为系统核心的一部 分。设备驱动程序通过调用request_irq函数来申请中断,通过行ee-irq来释放中断。 它们的定义如下:
int

request_irq(unsigned

int

irq,void(枣handler)(int,void*,struct pt_regs拳),unsigned id)

long

irq_flags,const char宰devname,void木dev void

free_irq(unsigned

int

irq,void宰devjd);

在驱动程序初始化时,Linux内核通过registerirq注册这个中断,并把中断信息 添加到irqaction数组中,从而将中断号和中断服务联系起来。irqaction的数据结构如 下:
stmct irqaction{

void(木handler)(int,void*,struct pt_regs木);
unsigned long flags;

unsigned
const

long mask;

char木name;

void宰dev_id;
struct irqacfion木next;

); 根据设备的中断号可以在数组irq_action中检索到设备的中断信息。
3.

I/O端口

每个连接到I/O总线上的设备都有自己的I/O地址集,访问I/O口的函数有(以 读字节为例):

西南交通大学硕士研究生学位论文
inline unsigned int inline

第41页

inb(unsigned

short port); short

//读取某个端12的值

unsigned

int

inb__p(unsigned

port); //向某个端口赋值

inline void inline void

outb(char value,unsigned

short port); short

outb__p(char value,unsigned

port);

其中inb_p和outb_p插入了一定的延时以适应某些慢的I/0端口。 与中断和内存不同,使用一个没有申请的I/O端口不会使CPU产生异常,也就 不会导致诸如“Segmentation fault”这类错误的发生。在使用I/O端口前,应该检查此 I/O端口是否已有别的程序在使用。若没有,再把此端口标记为正在使用,在使用完 以后释放它。 4.计时器

在Linux系统中,时钟是由系统接管,设备驱动程序可以向系统申请时钟。与时
钟有关的系统调用有:
kemel/timer.c->
void int

add_timer(struct timerlist丰timer);

del_timer(struct timerlist水timer); init__timer(struct timer_list木timer);

inline void

street timer list的定义为:
struct

timerlist{

strudt list——head list;

unsigned unsigned

long expires; long data;

void(宰function)(unsigned long); );

4.5串口AD嵌入式Linux驱动程序的具体实现
4.5.1

SPI驱动
串行外围设备接口SPI(serial
peripheral

interface)总线技术是Motorola公司推出的

一种同步串行接口[33】,它允许CPU与TTL移位寄存器、A/D或D/A转换器、实时时 钟(RTO)、存储器以及LCD和LED显示驱动器等外围接口器件以串行方式进行通讯。 SPI总线只需3~4根数据线和控制线即可扩展具有SPI接口的各种I/O器件,其硬件 功能很强,实现软件相当简单。系统中FPGA从ARM获取采样频率、采样点数等信 息,结合SPI总线技术用于实现ARM与FPGA之间这些小数据量的通信,占用较少 的微处理器I/O资源,硬件连接简单、软件易于实现,程序运行效率高。

西南交通大学硕士研究生学位论文
| III

第42页

¥3C2440有2个SPI口,可实现串行数据传输,每个SPI接口各有2个移位寄存
器分别负责接收和发送数据。发送数据和接收数据是同步进行的,传送的频率可由相 应的控制寄存器设定。数据传输时,一个SPI系统作为“主机”控制数据流,其他SPI 作为“从机”,主机控制数据的输入和输出。¥3C2440的SPI接口共有4个引脚信号: 串行时钟SCK(SPICLK0,1)、主入从出MISO(SPIMIS00,1)和主出从入 MOSI(SPIMOSIO,1)数据线、低电平有效引脚/SS(nSSO,1)。 根据S3C2440的SPI特点及工作原理确定其与TLC2543的接口如图4.3所示。
S3C2440 TLC2543

NSS SPICLK0

NSS SCLK DOUT DIN

SPIMIS00 SPIMOSl0

图4.3¥3C2440与TLC2543的连接图

芯片上“从属选择”(slave.select)的引脚数决定了可连到总线上的器件数量。在 SPI传输中,数据是同步进行发送和接收的。数据传输的时钟基于来自主处理器的时 钟脉冲,摩托罗拉没有定义任何通用SPI的时钟规范。然而,最常用的时钟设置基于 时钟极性(CPOL)和时钟相位(CPHA)两个参数,CPOL定义SPI串行时钟的活动状态, 而CPHA定义相对于SO.数据位的时钟相位。CPOL和CPHA的设置决定了数据取样 的时钟沿。其程序的流程图如图4-4所示:
SPPREn

J设置波特率I


SPCONn

f设置SPI模式I 初始化删C或
SD卡


确定标志位
写入数据至 SPTDATn


设置SPCONn’s的

TAGD位为正常模式


从SPI BIJF中读取数据


设晋GPIO口将接收的

故据转存举数据缓冲区

图4-4 SPI总线收发数据流程图

西南交通大学硕士研究生学位论文

第43页

其中值得注意的是初始化MMC或者SD卡只需要往SPTDATn中写10次的OXFF
即可。而在EVC环境下为了直接对已知地址的特殊功能寄存器进行读写操作,我们 通过直接调用系统提供的API函数WRITE
READ PORT PORT

UCHAR()与

UCHAR()即可。程序使用的特殊功能寄存器其地址如下表4.1所示:
表4-1 SPI特殊功能寄存器地址览表 描述说明 SPI通道0控制寄存器 SPI通道1控制寄存器 SPI通道0状态寄存器 SPI通道1状态寄存器 SPI通道0波特率设置寄存器 SPI通道1波特率设置寄存器 SPI通道0发送缓冲寄存器 SPl通道1发送缓冲寄存器 SPl通道0接收缓冲寄存器 SPI通道1接收缓冲寄存器 初始值
0x00 0x00 0x01 0x01 0x00 0x00 0x00 0x00 0xFF 0xFF

特殊功能寄存器
SPCoN0 SPCoNl SPSTA0 SPSTAl SPPREO SPPREl SPTDAT0 SPTDATO SPRDAT0 SPRDATO

地址
0x59000000 0x59000020 0x59000004 Ox59000024 0x5900000C 0x5900002C 0x59000010 Ox59000030 0x59000014 Ox59000034

SPI驱动主要完成初始化模块部分,初始化工作首先要对¥3C2440的SPI控制器 编程,设置SPI工作方式,完成对控制寄存器SPCON设置、波特率SPPRE设置和 GPIO口的设置等。具体设置如下:
void

IniLSPI(void) {
int i; rSPPRE0=0x32; rSPCON0=0x 1 e;

for(i=0;i<l 0;i++)
rSPTDAT0=0x位

雨PECON净Oxoa800000; 硒PECON&=(-0x05400000);
rGPEUP

I=0x3 800;

//GPH5..........>CS rGPHCON I=0x0400;

rGPHCON&=(一0x0800); rGPHUP&=(~0x20);

iiiiiiim

西南交通大学硕士研究生学位论文
I-- 2'

第44页

iLiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

rGPHDAT j=0x20;



4.5.2数据采集板的驱动实现
本驱动的工作流程如图4.5所示。Linux内核是通过一个file operations的结构体来组 织对设备操作的具体实现函数,结构中的成分几乎全是函数指针。包含了驱动程序提 供给应用程序访问硬件设备的各种方法。每个成员都对应一个系统调用,当用户对设 备文件进行操作时,系统调用通过设备文件的主设备号找到相应设备的驱动程序,然 后找至lJfile operationsqb相应的函数指针,并由该函数进行以下的控制。我们需要对SPI 端口进行打开、关闭、接收、发送、传输数据操作,因此定义file 下:
im AD_open(struct inode}inode.struct file宰flip);
int

AD_release(struct inode幸inode.struct file幸flip); AD_write(struct
file木file,const char木buf,size_t

static ssize_t static ssize_t
struct

count,lofl_t宰offset);

ADread(struct file宰file,char木buf,size_t count,loft_t宰offset);

fileoperations AD_fops={

.owner=THIS_MODULE.
.read= .write= .open=

ADread,
AD_write, AD_open,

.release=AD_release,

); 其中读设备方法主要实现A/D转换后的结果输出到用户空间中,写设备方法则相 反,它从用户空间读取数据,对A/D设备写命令字进行控制。用户利用SPI接口发送和 接收数据时,系统就会分别调用AD write和AD read函数及AD convea和spi仅data函 数。AD

read函数中需要注意参数buf和count。buff:用户空间缓冲区,read调用的返回

数据保存在这里。count是指bu腔间的大小,用字节数表示。当¥3C2440的状态寄存器
(在此使用的是GPH的数据寄存器GPHDAT)设置为TXD时进行A/D转换,可以通过

copy_to_usr(buf,from,count)i';gl数将接收的数据传送给用户程序。AD_write函数中的 buf和count参数同AD-read函数中的说明,可通过copy_from_usr(to,buf,COunt)i函数接
收用户需要发送的数据。 文件的打开(AD.open)和关闭(ADJelease)函数只是将模块使用计数加一、减一。 open调用时如果返回.1则表示打开设备文件不成功,close调用时只需关闭openi函数返回

西南交通大学硕士研究生学位论文
II

第45页



_



的文件描述字所连的设备即可。

对于加转换及其数据传输,定义:
void AD_convert(void); void spi tx

data(unsigned

char

data);
tx

A/D转换函数AD conveR中首先设置寄存器为发送状态,调用spi

data通过中断

方式完成数据发送。¥3C2440的SPI接口设置为中断传送模式进行串行数据传输:int request_irq(unsigned
int

irq,irqretum_t(木handler)(im,void幸,structpt_regs木),unsigned long id)。

flags,const char木dev name,void木dev

图4.5驱动程序流程

4.5.3嵌入式Linux驱动程序的加载方式
在完成了嵌入式Linux驱动程序的编写测试工作后,下一步就是将编写好的驱动 程序加载到系统内核,完成驱动硬件的工作。通常有两种做法: 1.驱动程序直接编译入内核 采用这种编译的驱动程序在内核启动时就已经在内存中,运行时不需要再自己加 载驱动,可以保留专用的存储器空间。具体实现方法如图4-6所示。

西南交通大学硕士研究生学位论文

第46页

图4-6驱动程序编译进内核的加载方式

2.驱动程序的模块加载 采用模块加载方式的驱动程序将会以模块形式存储在文件系统里,需要时动态载 入内核即可。这样使得驱动程序按需加载,不用时节省内存,并且驱动程序相对独立 于内核,升级灵活,授权方式灵活,如图4.7所示为具体的实现方法。

图4.7

驱动程序的模块加载模式

函数example_init()和example_cleanup0实现驱动程序模块方式的加载和卸载功 能。在程序的最后用下面两行代码进行声明: Module_init(example_initO): Module_exit(example_cleanup()): 在完成了模块化驱动程序的编写和测试后,可以通过insmod和rmmod命令方便 地加载和卸载驱动程序。

4.6数据存储
Linux支持大部分的MFC函数,而在MFC下数据的存储可以分为以二进制文件 以及ASC 11码2种形式。MFC下为文件的保存提了多种类如:ofstream类,ifstream 类,Cfile类等,而本系统中采用了最为简单的C语言的文件操作函数

fopenO,fpData=fopen(”\kResidentFlash\\Origin.姒”,”wb+It);
由于ADC转换收数据量较大,而且在传输过程中采用单一字节的传输方式容易 发生数据丢失且传输效率不高,为了解决这一问题,我们采用了堆栈的方式将ADCbuf 中的数据以固定大小的方式进行打包传输。在定义类的成员变量时,用户可以根据需 要自己定义2个内存区域的大小如:Bufl--new short[BufSize];Buf2--new short[BufSize];

西南交通大学硕士研究生学位论文

第47页

本系统的默认大小为4096个字节即4K的空间,当内存区域被填充满后系统将响应事 件自动进行数据传输。流程图如图4.8所示:
f在内存中申请l l两块固定大小l f的内存区域f

图4.8数据存储流程图

其数据流图如下图所示:
一ASCII码:
//I一一一一一一一一l

图4-9系统保存数据流图

从图中可以看出,当系统启动AD转换之后,数据将通过SPI总线首先存储在 系统SDRAM中的块存储单元内,当块存储单元被填充满之后,系统有2路的保存方 式,假如无SD卡时,用户可选择将数据以ASC II码文本方式保存在NAND Flash内。 4.7

TCP/IP协议设置及数据传输
TCP/IP协议是目前计算机互联网时代应用最为广泛的一种数据传输协议之一,

它可以实现计算机设备之间无差错的数据传输,因此它在数据传输过程中是最为可靠

西南交通大学硕士研究生学位论文 的传输协议之一【55’601。

第48页

而目前基于TCP/IP协议的文件传输协议和方式主要有:文件传输协议方式(FTP)、 远程拷贝方式(RCP)、套接字方式(SOCKET),其主要特点如下表所示:
传输方式 表4-2几种常用文件传输协议比较 优点 最为普遍,使用面广,使用简单,不需要用户编制 额外的应用软件。 采用人型或中型计算机做服务器,将所有文件信息 都存放在该服务器内,其他用户作为文件使用这通 过网络进行文件传输,适合再局域网内进行大文件 或者目录拷贝。 利片j TCP或者UDP提供的套接字直接在服务器和 客户端之间进行文件传输,实现过程可由应用程序 开发者直接控制,灵活性很高,适用于局域网内消 息传递。

缺点
在广域网上传输大文件 时可靠性较低,不支持断 点续传,不适合大文件、 高精度文件传输。 在Internet上安全性难以 控制。 编程复杂,可靠性和安全 性完全依赖于应用程序 开发者。

FTP

RCP

SoCKET

本系统为了实现与上位机的数据传输,采用的是基于SOCKET的文件传输协议, 其程序流程图如下图所示:

图4.10文件传输流程图

本程序主要是实现ARM板与上位机之间数据以二进制文件的形式进行传输,AD
转换结束之后,保存在NAND Flash上的数据转换结果才能实现数据传输。为了满足 与上位机之间全双工的通信,采用了2个不同的线程和2个套接字信息来完成与上位 机之间的通信。其程序如下所示: 接收端信息:
sockSrv=socket(AF—INET,SOCK_STREAM.0);
addrSrv.sin_addr.S un.S_addr=htonl(INADDR

ANY);

西南交通大学硕士研究生学位论文
addrSrv.sin family=AF INEt addrSrv.sin port=htons(1

第49页

0240);

发送端信息
sockSend=socket(AF INET,SOCK STREAM,01: addrSend.sin family=AF INET;
addrSend.sin port=htons(1 0240);

4.8上位机应用程序设计
系统与上位机的通信采用的基于TCP/IP协议,该协议可实现设备间无差错的数 据传输。上位机程序主要包括系统硬件识别,网络连接,数据传输,以及数据终端显 示与保存五个部分组成。系统流程图如图4.12所示:

连接硬件


l初始化系统、TC肿,各子系统注册


◆N
AD驱动


ARM进行数据采集



数据传输到manager


数据传输到该子系统n


终端显示数据


保存数据 图4.12上位机程序流程图

西南交通大学硕士研究生学位论文

第50页

第5章系统调试
系统主要由manager、数据采集服务器和客户端组成,因此系统的调试工作首先 也为各个部件的调试。调试的主要目的是验证各个模块能否工作、能否按预定功能工 作、工作性能能否达到要求、系统是否稳定等。调试主要为以下几个方面的内容: 1.确保AD转换达到预期设定要求,串口AD驱动程序的准确运行,AD模块与ARM 开发板之间的通信有效畅通,保证数据传输准确。 2.确保ARM板Linux下应用程序准确有效,系统具有较好的稳定性,保证开发板 与AD模块之间SPI通信准确。 3.确保manager与数据采集服务器之间的连接以及数据传输的正确性和稳定性。主 要检查监测节点是否按照预定协议正确的传输数据。 4.确保客户端程序准确运行,保证与manager之间通信及数据请求等信息的准确性。 5.对调试过程中发现的问题及时分析和解决,优化系统设计。

系统的调试方法:
系统的调试工作主要是通过现场采集数据,并与其他类型的数据采集系统采集之 后的数据进行对比测试试验检验系统的准确性,同时,要检验网络传输的可靠性。而

AD转换模块与ARM之间采用的是软件编程控制,数据采集以ARM为核心的方式也
便于整个调试的进行。由于本系统的研究过程中运用了大量的程序编程,而编程的调 试手段主要是通过设置断点、进行单步调试、查看指定的特殊功能寄存器中的值等。

现场调试结果:
本系统通过在西南交通大学列车安全运行监控实验室的模拟试验车上进行测试, 并取得一定效果。现场测试轮对的速度,并通过路由网络将数据采集服务器、客户端 以及manager连接通信,客户端通过manager对数据采集服务器进行数据的采集控制 等。通过一系列的试验数据,证明系统符合预期设计目标。图5.1为AD转换模块, 图5.2为服务器、客户端与manager的连接图,图5.3为系统客户端的测试数据显示。

至里奎鎏奎兰至圭兰耋兰茎篓堡兰

薹i!至

幽5-I

AD数据采集模块

幽5 2服务器,客户端与managPri芏接显示幽

幽5-3系统客户端的测试数据

由于分布式系统是基于网络设计,我们倾向于用“吞吐量”来表示一个系统的测 试性能。在数据传输的同时,我们也考虑到M络对数据包的影响。以太网的带宽为 10Mbps,因为实现时受各种低效率固素的影珥司,所以由一段带宽为10Mbps的链路连 接的一对节点的吞吐量只达到2Mbps。这样就意味着,一个客户端的应用能够以 2Mbps的速度向另外的一个服务器发送数掘。 通过测试,在路南器动态分配地址的情况下,整个系统可进行通信及数据传输, 客户端通过与manager连接了解整个系统提供的服务,并通过manager与数据采集服 务器进行通信.埘其数据采集部分进行软件控制,系统达到预期要求。

西南交通大学硕士研究生学位论文

第52页

结论
本文探讨高速动车组上ARM+Linux分布式数据采集管理系统的结构及可行 性,使其能够运用到我国目前的动车组测试中。研究设计了一种基于嵌入式Linux下 的ARM数据采集的硬件及软件设计,论文研究内容及成果如下: 1.设计了基于TLC2543的AD数据采集板。

2.设计了基于ARM¥3C2440开发板的分布式数据采集管理系统。
3.编写了基于Linux下的串口AD驱动程序。


4.编写了基于ARM9处理器在嵌入式Linux下的数据采集通信、保存数据、各子系 统之间的数据传输程序。 5.设计了整个分布式系统的服务器模块及具体实现方法。

今后工作展望:
由于个人水平有限,本系统设计完成之后仍然存在大量问题需要改进,主要有以 下几个方面: 1.各个模块之间通信稳定性还有待提高,偶尔发生相互无法识别的现象。模块之间 的通信程序仍然需要进行大量的调试。 2.采用简单的¥3C2440A功能模块代替ARM开发板,削减不必要的功能模块,以 减少系统功耗,将系统供电由适配器供电改为蓄电池供电,减少系统体积,增强 系统便携式性能。 3.Linux环境下的AD模块驱动中,对于Linux内核源代码的修改暂时还没考虑实时 性,可通过内核抢占性及修改内核代码来实现数据的实时性传输。
4.

由于条件有限本系统没有对分布式系统设置专门的存储服务器,如果数据量大的 话,可以考虑增加一个专门用于数据存储的数据存储服务器。

5.

由于分布式系统依靠网络,服务器/客户端的数据传输会对整个网络传输速度有很 大的影响,整个系统传输速度慢,当网络饱和时,我们可以进行改造或者更换网 络接口板等措施。

西南交通大学硕士研究生学位论文

第53页

致谢
论文能够顺利完成首先感谢我的导师陈建政教授,从论文的选题到现在结束都离 不开陈老师的精心指导和启发,同时也深深的感谢陈老师在平时的学习、生活和科研 工作各方面给以的真诚的帮助和关怀。陈老师严谨的治学态度、实事求是的科学精神、 渊博的学识及待人随和的处事方法等等都给我留下了极其深刻的印象,常常使我在不 知不觉间就养成良好的学习、生活及工作习惯。在此学业即将完成之际,谨向陈老师 表达我最诚挚的谢意! 感谢我的室友及我的师兄,他们在学习和生活中给予我的帮助和支持,感谢我的 家人,他们是我努力的源泉,感谢我身边的朋友们,让我在这么愉快的环境下学习。 衷心地感谢在百忙之中评阅论文的各位专家、教授!

西南交通大学硕士研究生学位论文

第54页

参考文献
【1】李善平,刘文峰等.Linux与嵌入式系统.北京:清华大学出版社2003 【2】美Andrew S.Tanenbaum著.分布式操作系统.北京.电子工业出版社.2008 【3】英George 社.2004 【4]Andrew S.TanenBaum,Maarten 版社. 【5】胡贯荣,李胜利.一种局域网分布式文件系统的设计与实现.华中理工大学学报,V01.27,NO.7,1999. 【6]唐一之.分布式网络文件系统(DNFS)研究与实现.[硕士学位论文】.湖南大学,2002. 【7]顾志峰,姚萌.基于网关的嵌入式数据采集系统【J】.仪器仪表学报,2006,27(6):2030—203 1 【8】程佩青.数字信号处理教程.北京:清华大学出版社,2001年,11.12 【9]林木辉,林锦贤.基于可扩展、高性能分布式文件系统的网络存储模式的研究与实现.福建电 脑,NO一9,2005. 【10】Marcocan位等著.Delphi7从入f-J至U精通.罗征等译.电子工业出版社,2003 【11】张海卿.Delphi7实例编程100例【M】.北京:中国铁道出版社,2003:176—182,21 【121_:E田苗.嵌入式系统设计与实例开发.北京:清华大学出版社,2003,4:44.51 【13】马忠梅,李善平,康慨等.ARM&Linux嵌入式教程【M】,北京:北京航空航天大学出版 社.2004:293—300 【14】魏忠,蔡勇,雷红卫.嵌入式开发详解.电子工业出版社.2003:120.153 [15】肖金球,刘传洋,仲嘉霖.基于FPGA的高速实时数据采集系统.电路与系统学报,2005,
(12):128.131
vail

Coulouris,Jean Dollimore,Tim

Kindberg著.分布式系统概念与设计.机械工业出版

Steen.分布式系统原理与范型,杨剑峰等译一匕京:清华大学出

【161杨健,张慧慧.基于嵌入式系统的数据采集系统网络接入的设计与实现,仪器仪表学报(增 刊),2005,26(8):290-292 【17】刘松堂,王太勇等.基于网络和状态监测的设备管理系统【J】.西南交通大学学 报,2003,38(5):570.573. 【18】徐峰,王志芳,傅尚新.大型旋转机械振动信号数据采集器的研究[J】.清华大学学报(自然科学 版),1998,38(6):1
11.114.

[19】叶炜,曾水根,于海洋.基于工频的远程电力线数据采集系统的实现【J】.东北电力学院学 报.2005.12:100.105 【20]IT同路人.Linux标准学习教程.人民邮电出版社.2008.1 【2 1】S.Furber.ARM 【22]Walter
System-on?Chip

Architecture.English:ARM

limited,200 1:9—1 0

Oney,Programming the Microsoft Windows Driver Model,Microsoft press,2000

西南交通大学硕士研究生学位论文
【23】Art
Baker.The J

第55页
HallPTR.200 1 for Ultrasound

Windows

2000 Device Driver G R.A Low—cost

Book(Second edition).Frentice

【24】Brown

A,Lockwood
on

High?performance Pulse Generator

Imaging.IEEE Transactions

Ultra-Sonics,Ferroelectfics and Frequency

Control,2002,49(6)

【25】赵品.电路设计与制板:Protel99高级应用.人民邮电出版社.2000
【26】A.Helal,A.Heddaya,B.Bhargava
Publishers,1 996. Replication Techniques in DiStributed Systems Kluwer Academic

【27】陈艳.引导加载程序vivi的分析和移植研究[J】.电子设计应用.2006:11:112.1

14

【28】Alessandro Rubini,Jonathan Corbet.Linux设备驱动程序(第二版)【M】.电力工业出版 社.2002.5:44.90 f29]魏永明.Linux设备驱动程序(第2版)[M】.北京:中国电力出版社,2002。10. 【30】孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发指南[M】.北京:电子工业出版社,2005. 【31]潘志东,刘增华.串行A/D转换器TLC2543原理及应用[J】.电测与仪表,2001,38(3):40-43, 【32]宋宝华.Linux设备驱动开发详解【M】.北京:人民邮电出版社,2005 【331李胜朝,黄先祥,谢建.嵌人式Linux系统中字符设备驱动程序的开发【J】.计算机工程,2007,33 (4):5-8.

【34】(美)沃尔瓦诺(JonathanWⅥ著,李曦等译.嵌入式微计算机系统:实时接121技术[M】.北京:机械
工业出版社.2003. 【35】倪继利.Linux内核分析及编程[M】一匕京:电子工业出版社,2006 【363冯国进.嵌入式Linux驱动程序设计从入门到精通[M】.清华大学出版社,2008.3. 【37]李俊,嵌入式Linux设备驱动开发详解,人民邮电出版社,2008.3 【38]支Ij淼.嵌入式系统接ISl设计与Linux驱动程序开发【M】,北京:中国电力出版社,2004 【39】孙琼.嵌入式Linux应用程序开发详解【M】.北京:人民邮电出版社,2007. 【40]罗苑堂,杨宗德.嵌入式Linux应用系统开发实例精讲【M】.电子工业出版社,2007. 【4 1 Thanasis
Loukopoulos,lshfaq Ahmad.Static

and

adaptive distributed data replication using genetic

algorithms.J.Parallel Distrib.Comput.64(2004)1 270-1 285.

【42]Mukesh singhal,Niranjan G—shivaratri.Advanced

Concepts in Operating System, 94.

Distributed,DatabaseAnd Multiprocessor Operating Systems.McGraw—Hid,INC:1 9

【43]毛德操,胡希明.Linux内核源代码情景分析.浙江:浙江大学出版社.2001.5:107-213 【44]倪继利.Linux内核分析及编程一匕京:电子工业出版社.2006.7:200.700 【45]毛德操.胡希明.Linux内核源代码情景分析【M】.杭州:浙江大学出版社.2001:127~136 [46】陈莉君.Linux操作系统内核分析【M】.北京:人民邮电出版社.2000:68—73 【47】韦东山,嵌入式Linux应用开发完全手册.人民邮电出版社.2009.2 【48】Ellie Quigley,Linux Shell.实例精解【M】,北京:中国电力出版社.2004 【49]Stephen A.Rago.UNIX环境高级编程【M】。北京:人民邮电出版社.2006

西南交通大学硕士研究生学位论文
【50】RobbinsA.实战Linux编程精髓[M】.杨明军,译.北京:中国电力出版社,2005 【5 1]WesleyW.Chu.Optimal
OnComputers,Oct.1 969,C一1 file allocation multiple computer

第56页

system[J].IEEETrans.

8(1 0Xs):865-889.

【52]w.Richard

Stevens.UNIX network Programming Volume l 2nd ed.USA:Prentice Hall,Inc,1 998. document dissemination to reduce traffic and balance load in distributed

【53]A.Bestawos.Demand—based

information systems.In Proc.of the IEEE Syrup.

【54】张琼声,侯波,李重彦.Linux系统中基于TCP/IP套接字中间件的设计与实现.科学技术与工 程.2004,5(1 7):36-40 【55】W.Richard Stevens著.陆雪莹等译.TCP/IP详解卷2实现一匕京:机械工业出版社.2000.3:42.100 【56】岑贤道,安常青.网络管理协议及应用开发.北京:清华大学出版社.1998.56—60 【57】刘晓辉.网络管理标准教程_匕京:人民邮电出版社.2002.78.83 【58】天夜创作室.Linux网络编程技术.人民邮电出版社.2001.11 【59】程鹏,朱学永.基于Linux系统的小型网络管理方案的分析.电脑知识与技术.2005(98):56-58 【60】荣锋.基于TCP/IP协议的网络数据传输.西华大学硕士论文.2006.6

西南交通大学硕士研究生学位论文

第57页

攻读硕士学位期间发表的论文
[1】杨小容,陈建政.串121 AD嵌入式Linux驱动实现,中国测试,2010.3.第2期.

分布式数据采集处理系统技术研究
作者: 学位授予单位: 杨小容 西南交通大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1686906.aspx


相关文章:
基于单片机分布式数据采集系统设计毕业论文
研究了PC机与单片机通信的分布式结构的通信方式及总线特点, 设计了基于 RS-232...由于集成电路制造技术的不 断提高,出现了高性能、高可靠的单片机数据采集系统(...
制造系统数据采集技术研究
用一台工控机可以实现所有的数据采集处理,具有结构简单、易于操作、 维护方便...2 基于智能主体的制造系统数据采集技术 2.1 智能主体与分布式人工智能 智能主体...
NDAM分布式数据采集控制系统在远程计量中的应用
龙源期刊网 http://www.qikan.com.cn NDAM 分布式数据采集控制系统在远程计 量中的应用 作者:周涛 来源:《科技创新与应用》2013 年第 16 期 摘要:计算机技术...
NDAM分布式数据采集控制系统在远程计量中的应用
NDAM 分布式数据采集控制系统在远程计量中的应用 摘要:计算机技术与通信技术的结合促进了局域网络的飞速发 展,以太网连接技术正逐渐成为工业控制应用的一种趋势,本文...
一种实用的分布式数据采集和控制系统
电路如图6所示: 接口技术作业 学号:0005018 卡号:...(3C)一体化趋势日趋明显,嵌入式系统再度成为研究与...分布式数据采集处理系统... 62页 免费 一个实用单...
数据采集系统的历史与发展
1956 年美国首先研究了用在军事上的测试 系统,目标...数据采集技术已经成为一种专门的技术,在 工业领域...串行总线数据采集系统分布式系统结构和智能化方向...
基于局域网的分布式数据采集系统
《城市建设理论研究》2013 年第 36 期 【摘要】随着社会的进步和互联网技术的进一步成熟,在大型社区和相关企业内部,基于 局域网的分布式数据采集系统变得越来越重要...
分布式数据采集平台介绍(网络爬虫)
分布式网络爬虫系统,高性能、高并发,专业数据采集平台...具有处理复杂报文的能力 14、 具有采集结果加工处理...分布式网络爬虫研究 暂无评价 31页 ¥2.00 2007...
实时数据采集系统方案-
? 分布式实时数据的采集、存贮、管理与查询 支持历史...实时数据采集系统主要技术特征 4.1、数据传输方面 ...按时的存取和处理数据,必须尽量 保证关键的数据操作...
更多相关标签:
分布式数据采集系统 | 分布式采集系统 | 分布式日志采集系统 | 分布式实时处理系统 | 分布式系统的事务处理 | 分布式系统 事务处理 | 分布式处理系统 | 分布式图像处理系统 |