(检测技术与自动化装置专业论文)基于嵌入式系统的现场总线的研究与应用.pdf_第1页
(检测技术与自动化装置专业论文)基于嵌入式系统的现场总线的研究与应用.pdf_第2页
(检测技术与自动化装置专业论文)基于嵌入式系统的现场总线的研究与应用.pdf_第3页
(检测技术与自动化装置专业论文)基于嵌入式系统的现场总线的研究与应用.pdf_第4页
(检测技术与自动化装置专业论文)基于嵌入式系统的现场总线的研究与应用.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(检测技术与自动化装置专业论文)基于嵌入式系统的现场总线的研究与应用.pdf.pdf 免费下载

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

文档简介

北京邮电大擘硕士研究生擘住论文2 0 d 7 基于嵌入式系统的现场总线的研究与应用 摘要 c a n ( c o n t r o la r c an e 觚o r k ) 总线是一种支持分布式实时控制的,高 安全性的串行总线。基于g 气n 总线高速通信速率、高可靠性、连接方 便、多主站、通讯协议简单和高性能价格比等突出优点,c a n 总线被 广泛应用工业以及汽车环境中m 。 随着嵌入式系统处理器的快速发展,一片嵌入式处理器就可完成比 较复杂的运算和控制功能。由嵌入式处理器构成的系统体积越来越小, 功能越来越强大。 本系统基于嵌入式微处理器和单片机,通过c a n 总线连接通信网 络,另外还增加了一个u s b c a n 节点,可以方便p c 或便携式电脑随 时通过u s b 接口接入a 气n 总线网络。 基于微控制器a t 8 9 c 5 2 的c a n 节点主要是模拟工业环境中的智能 设备,微控制器从总线上获取命令,根据命令来控制管理其下位的设备。 基于嵌入式处理器a r m 9 的a 气n 节点有着强大的监控功能,不仅 可以对c a n 总线上的各个节点根据需求发送命令,还可以将c a n 网络 上各个节点的状态显示出来,对q 埘总线的信息进行记录以备企业信 息管理、分析使用。 u s b a 气n 节点主要为p c 或笔记本电脑接入c a n 总线提供一个方 便快捷的接入点。由于a 气n 总线是多主形式的串行总线,c a n u s b 节 点可以通过软件编程实现对c a n 网络中所有节点的控制,能够模拟所 有o k n 总线上任意节点进行通信,这就大大方便c a n 总线系统的现场 调试,加快了故障排除的速度。 本文利用c a n 控制器扩展微控制器和嵌入式处理器,建立了c a n 北京邮电大擘硕士研究生学位论文2 0 0 7 总线网络,研究分析了a 悄总线的底层通信协议;通过系统功能的分 析、a 地协议的分析,对a 埘总线应用层协议有了一定的认识,设计 了基于本系统的上层通信的协议,成功实现了c a n 总线节点之间快速 实时的通信。 关键字:a 气n 应用层协议智能节点c a n u s b 北京邮电走学硕士研究生擘住论文2 0 0 7 t h er e s e a r c ha n da p p llc a t10 n 0 ff i e l d b u sb a s e d0 n e m b e d d e ds y s t e m c a n ( c 伽仃d la 他an e t w o r k ) 丘c l d - b 惦i sav c r ys a f e t ys e r i a lb u sw h i c h 啪鲫p p c n d i s t r i b u t c d 坤a lt i m ec o n t f 0 1 c a nh a sb e e nu di ni n d 璐t f i a lc n v i m n m e n ta n d a u t o - c 捌c i t yw i d e l y a sd c 、,e 1 0 p i n gm p i d l yr c o t l yrac m b e d d e dp r o c e s rc 卸m a k cam o r cc o m p l c x o p c n t i 锄d 由t ap i o c e 鹤,卸dt h cs i z co f 啪b c d d c dp r o c e s s 叫i s 锄l l c r t h e s to f h a r d w a mi sl o w 盯a n d1 0 w c r 1 1 l i ss y s t e mi 们l u d 嚣a d eb a s e d a 伽西c d d e dp c c s s o r ,“,on o d 髓b 硒e do n m i a o 。o n t r o l l e r 姐dau s b c a n d c ,w h i c hl i n k c db yt h ec a nb 峪t h c d cb a d o nm i a o n 勃l l 盯a t b 9 c 5 2i sas 脚nn o d c i ts i m u l 曲c da 柚t o m t i cd e v i o c ,w h i c h 啪 b e n 仃o l l c dr e m o t e l y 卸db ep r o 掣糊e dt o 瑚 t h e d eb a o nt b ee m b c d d c ds y s l c m 啪d c t c c t 柚dr c c o r dt h ec o m m m d t i o 璐o f c a nb 惦1 n h c mo ft h i sn o d ei sa r m 9 s 3 c 2 4 1 0 ,a3 2 b i tp 删潞s o r w h i c hh 鹤a p o w c f f i i if 眦i d j 1 k d e o f u s b c a n i s t h cp c r 0 0 m p u t e rc a na c o c 豁m e n b 璐n v e n i e n t l y 1 硼a y ,a l m o s t 锄yp c r s o n a lc o m p u t e r h 笛a 鸺bp o n w ed e s i 印a u s b 。c 孤d ew h i c h c 勰m a k et h ea o c e 豁o ft h c :a nb 惦c 鹞i e r ,m a k cd e b u g g i i l g 锄dr 嘲v e r i n gi n d u s t r i a l d c “f a s t e l t h i sp f o j e c tb u i l tan e 啊o i ko f o 如果边沿位于采样点之前。 e u p d a t c d a 扭( f a l s e ) ; 刷新显示 ) 枉i e ( g - s e n d 砥【r e a d f i a 力; r c t u m o l : 而由于c a n 报文的接收也是随机的,所以也采用一个线程最总线上的报文 进行监听接收,程序如下: u 玎q tr e a d ,n l r e a d p r o “l p v o i dp p 扪m ) 北京邮电大学硕士研究生学位论文2 0 0 7 h w n d h ,n d = ( ( c u s b c a n d l g 事) p p a m m ) 一 n l j l w n d ; d o i f ( w j “f o r s i n g l e o b j e c t ( g h r e a d e v e n t _ p o n 【g - r e c p o f t n o 】, 5 0 0 ) 一、 a h o b j e c l ) r e s e t e v 朋t ( g - h r e a d e v 跚tp o r t 【g - r e c p o r c n o 】) ;恢复线程标志位 w h i l e ( h k c a n r e a d f r a m e ( & 墨- d e v i c e h 柚d l e l r c c p o n n o , & g _ r e c f r 啪e ) = o ) 判读有无收到c a n 报文 解析接收帧 r x c m d i d h = g - r e c f m m e m f m m e o 】 5 ; r x c m d i d l = ( g - r e c f 姗e m f r a m e 1 】“3 ) i ( g - r e c f r 锄e m f r 蛳e 0 5 ) ; r x c m d c m d i d = g - r e c f l 锄e m f r 锄e 【2 】; r x c m d c m d 蚰= g - r e c f r a m e m f r a m e 【3 】; r x c m d c m d d a t a n o d es 切t l l s n o d e i d = g _ - r e c f r a m e m f m m e 4 ; r x c m d c m d d a 协n o d e s t a t u s n a g s = g - r c c f r 锄e m f m m e 5 】; r x c m d 锄d d a t a n o d 屯s t a t i l s 却c e d = g - 尽e c f r a m e m f r a m e 【6 】; r x c m d c m d d a 诅n o d e _ s t 咖s t o r 吼h = 出f r m e m f r 咖e 【7 】; r x c m d c m d d a 诅n o d e _ s t a m s t o r u l l l = g - r e c f r 锄e 1 l l 】m 蛆e 8 】; ) w h n e ( 艮r e a d l l l r e a d f l a g ) ; ) r 血l m o l : ) 在程序中最主要的函数是h k c a n s e l l d f m m e ( ) 和h k c a n r e a d f r 帅e ( ) 两个 函数,分别实现发送c a n 报文和接收c a n 报文的功能,这两个函数分别通过发送 线程和接收线程来调用;通过g - s e n d l l l r e a d f l a g 和g _ r e a d n 职a d f l a g 两个变量实现 发送和接收线程的调度线程。而程序的丰线程则提供界面的显示和刷新。 北京邮电大擘硕士研究生学位论支2 0 0 7 图4 2 c a n 节点实时控制系统控制界面 监控程序采用s u a ls t i l d i o n e t2 0 0 3 集成开发环境编写,工作界面如图4 - 2 。 程序采用了多线程编程技术,其中一个线程专门用来处理c a n 总线上接收到的报 文数据,另有一个线程负责处理本节点发送到c a n 总线上的数据。系统运行的状 态见附录u s b c a n 节点p c 监控程序界面。 4 4 本章小结 本章首先会绍了c a n 总线网络中的p c 控制节点的硬件与软件结构,对控制系 统的软件体系,软硬件编程接口进行研究,通过软件流程图以及软件界面对控制系 统进行介绍。p c 控制节点的软件设计以及节点控制系统的界面、功能等。 5 1 概述 第五章基于a r m 9 的c a n 总线嵌入式监控系统 c a n 网络是多主工作方式的现场总线,网络上任意一个节点均可以主动地向其 他节点发送数据,同时c a n 网络上的报文所有节点也都可以正确的接受。因此只 要在c a n 网络增加一个节点就可以监听到c a n 总线上的所有报文。 c a n 总线上连接的一般都是工业设备,功能大多都很简单,仅仅有简单的控制 功能,不能记录历史的状态和使用情况,为此我们才c a n 总线上加入一个节点, 这个节点可以实时的记录c a n 总线的报文,实时显示设备的运行情况,并且能够 把c a n 总线上报文或设备状态存储下来。利用这些数据,我们可以对现场总线中 各个设备在一天或一段时间内的运行情况,负载情况进行分析,从而得到设备的使 用率,预测车问或工厂设备的使用情况,对生产工艺进行优化,充分发挥设备的最 大效能。 本课题中,设计了一个基于a 鼢圆嵌入式处理器的c a n 网络监控节点,对网 络报文进行实时监控、记录。这个节点的功能不需要很强,只需要能够稳定可靠的 记录c a n 总线上的信息,并且有很大的存储能力。这就要求系统必须为3 2 位以上 的c p u ,并且有一个相当稳定的操作系统支持其运行。 5 2a r m 9 嵌入式硬件平台构成 为了满足网络监控和记录的需要,就需要监控节点具有c a n 总线接口、一定 速度的处理能力、海量的寻址空间、以太网络接口等特征。具备这些性能的节点需 要一个功能强大的处理器,a i t m 9 系列处理器恰好满足这些需求。 图5 1 & 八式系统节点硬件买物 嵌入式系统实物如图5 1 ,系统采用a r m 9 系列嵌入式处理器s 3 c 2 4 1 0 ,其硬 件结构如图5 - 2 ,具备上述特征并且内建l c d 显示器控制电路,方便系统扩展显示 设备。 图5 2 嵌入式系统节点硬件结构框图 4 i 北京邮电大学硕士研究生学住论文2 0 0 7 5 2 1 中央处理器s 3 c 2 4 1 0 三星s 3 c 2 4 1 0 是一款基于a r m 9 2 0 t 内核的开发的,它具有开放式设计,集 成度高、尺寸小、可扩展性强等特点,适用于低成本、低功耗和高性能手持设备和 一般应用的单片微处理器解决方案。 s 3 c 2 4 1 0 具有以下特点: 工作频率为2 0 0 m h z ; 5 级整数流水线,指令执行效率更高; 提供1 1 m 口s ,m h z 的哈佛结构; 支持3 2 位a r m 指令集和1 6 位1 1 b u m b 指令集; 支持3 2 位的高速a m b a 总线接口; 全性能的m m u ,支持l i 肌x ,w 枷o w s c e ,v x w o r l ( s 等多种主流嵌入式操 作系统; m p u 支持实时操作系统: 支持数据c a c h c 和指令c a c h c ,具有更高的指令和数据处理能力: 2 路s p i 串行接口; 1 6k b 一体化的c a c h e m m u ; l c d 控制器( 支持s t n ; 3 路u a r t ; 2 路u s b h o s t ; 1 路u s b d e v i c e : 看门狗: 实时时钟( i 盯c ) ; 5 2 1c a n 通信模块的扩展 因为s 3 c 2 4 l o 本身不集成c a n 总线控制器,需要在s 3 c 2 4 1 0 处理其的外围扩 展c a n 总线控制器。本课题中采用的硬件平台为武汉创维特公司的 j ) 队r m 9 - 2 4 1 0 3 嵌入式实验平台。 系统通过s 3 c 2 4 1 0 的串行数据口s p i 与基于s p i 口的独立c a n 控制器m c p 2 5 1 5 相连接,m c p 2 5 1 5 通过p h i l i p s 公司的t j a l 0 5 0 高速c a n 总线驱动器连接到c a n 总线网络上。 北京邮电大学硕士研究生学位论文2 0 0 7 5 2 2c a n 控制器m c p 2 5 1 5 5 2 2 1 m c p 2 5 1 5 概述 m c p 2 5 1 5 【2 卵是一款独立c a n 控制器,是为简化连接c a n 总线的应用而开发的。 图5 - 3m c p 2 5 1 5 的结构框图 m c p 2 5 1 5 主要由三个部分组成: 1 c a n 协议引擎。 2 用来为器件及其运行进行配置的控制逻辑和s r a m 寄存器。 3 s p i 协议模块。 m c p 2 5 1 5 具有三个发送缓冲器和两个接收缓冲器,两个验收屏蔽寄存器( 分 别对应不同的接收缓冲器) 以及六个验收过滤寄存器。 5 2 2 2s p i 接口 m c p 2 5 1 5 设计可与许多微控制器的串行外设接口( s p i ) 直接相连,支持o ,o 和 1 ,1 运行模式。外部数据和命令通过s l 引脚传送到器件中,丽数据在s c k 时钟信 号的上升沿传送进去。m c p 2 5 l o 在s c k 下降沿通过s o 引脚发送。 4 3 熬 霸划 菥星黧 北京邮电走学硕士研究生学位论文2 0 0 7 5 3 嵌入式系统软件设计 5 3 1 概述 图5 - 4 嵌入式系统软硬件层关系 在嵌入式系统中,软件与硬件的关系如图5 4 所示,为了方便嵌入式硬件系统 应用程序的编写,一些组织和公司就在其应用程序下定义了一簇统一编程的接口, 屏蔽掉不同的硬件,方便各种应用程序的编写和移植,这一层逐渐变化就形成了现 在的操作系统。一台计算机上可以有多种软件,操作系统是其中最基本、最主要的 软件。而在操作系统下边并不直接就是系统硬件,而是系统硬件的b s p ,即板级支 持包。操作系统通过b s p 来访问系统硬件,只要提供相应的b s p ,操作系统在任何 硬件上都能使用。 由于本课题中嵌入式节点用来做报文检测,记录,对实时性要求不高,但是需 要能够长期稳定的工作,所以该节点选择使用嵌入式l i n u x 操作系统。 5 3 2 嵌入式l i n u x 操作系统 l i n u x 是由l i n u sb e n e d i c tt o r v a l d s 和许多自由软件开发者,通过互联网共 同努力而形成的一种能运行于多种硬件平台之上,源代码公开、功能强大、运行稳 定高效、遵守p o s i x 标准、与u m x 兼容的免费操作系统。 北京邮电大学硕士研究生学位论文2 0 0 7 原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正 逐渐应用于嵌入式设备。l i n u x 可以说是最早的嵌入式l i n u x 发行版本。它是为没 有m h i u 的处理器而设计的,进而发展了一个完整的开发平台,包括编译、调试等工 具。 5 3 2 1 【面u x 操作系统的特性 l 、 实时特性。对大多数嵌入式系统来说,有l 到5 毫秒的实时响应时间就足 够了。l i n u x 内核对实时进程的调度提供了一定程度的支持,能满足大部分的软实 时,但由于l i n u x 内核的非抢占性,无法实现硬实时,不过采用r t l i n u x 技术能很 好解决该问题。 2 、 内存占用。l i n u x 内核是长驻内存的,在简单的系统中,当启动后,内核 和各种应用进程均驻留在内存中,但也可利用l i n u x 动态装卸程序的能力来节省r a h i 应用程序只需在运行时,才临时装载到内存中,一旦运行结束,就释放掉占用的资 源。典型的嵌入式系统都有闪存( f l a s h 娅m o r y ) ,闪存可被组织成一个文件系统( 用 闪存的驱动程序作为从闪存到文件系统的接口) ,所有应用程序以文件的形式被存放 在闪存中,并存必要的时候被装载到内存中。另外,l i n u x 还可通过以下机制节省 系统的r a m 空间: 系统启动后,释放那些为启动而占用了r 勰空间的代码; 可动态地装卸驱动程序,只装载那些正在使用的设备的驱动软件。 3 、文件系统 1 ) 使用v f s 管理各文件系统。l i n l l 】【中的v f s ( m “f i l es y s t e m s 诵t c h ) 是 一种开放的接口机制,使l i n u x 能够支持大部分的文件系统,如e x t 2 ,m s d o s , m 矾i x ,v f a t ,n t f s ,i s 0 9 6 6 0 等,并允许这些文件系统之间互相访问。 2 ) 文件系统和存储介质分配。文件系统可建立在一个传统的磁盘上,也可建 立在闪存中。闪存被组织成很多小块的扇区,把其中一个作为引导块,即此处存放 c p u 上电后运行的第一个程序:引导程序。并利用余下的块建立一个文件系统,l i 加x 内核映像就可以被引导程序从f l a s h 中加载到r a m 中运行。在嵌入式系统中可这样 安排: 用闪存存放只读固件( 如内核映像) : 在速度很快的r a i d 中运行程序: 基于l i n u x 的嵌入式系统还需要一个r a 佃工s k 来建立根文件系统。 北京邮电走学硕士研究生学位论文2 7 5 3 2 2l i 肌x 操作系统的优势 现在市面上有各种各样的嵌入式操作系统。在繁多的嵌入式操作系统中,很难 说出那一种嵌入式操作系统就一定优于其它的嵌入式操作系统。但这之中,l i n u x 操作系统以其自身的特色和优势成为了嵌入式操作系统研究中的新的热点 1 、充分满足硬件设备的实时性要求。 严格要求的实时性的决定因素与中断例程本身和内核中的其他驱动程序有关: 而响应延迟时间主要受中断的优先级和其他进程暂时也关闭中断响应的影响。因此 管理和驱动中断的机制必须保证实时要求。根据这个要求,大多数嵌入式系统并不 具备严格的实时性。但是,嵌入式l i n u x 可以很好的满足实时性要求。 2 、低廉的价格和高度的可靠性。 与现有的各种商业性操作系统相比,l i n u x 的最大优势是价格和可靠性。l i n u x 是免费的或初始价格极低,仅是发行成本。但是这里所说的l i n u x 价格低廉,不仅 是指初始费用,还包括它使用低价硬件以及老硬件的能力。商业操作系统鼓励用户 升级硬件,而使用l i n u x 操作系统则不必像使用w i n d 0 w sx p 那样去升级用户的c p u 或增加内存。可靠性,普遍认为l i n u x 能与许多商业性的u n i x 系统相媲美,当然要 比w i n d 0 wn t 更可靠。尤其在l i n u x 系统充当的是w e b 服务器或文件服务器时,更 能体现出它的可靠性。 3 可应用于多种硬件平台。 l i n u x 己经被移植到多种硬件平台,这对于经费、时间受限制的研究与开发项 目是很有吸引力的。原型可以在标准平台上开发后移植到具体的硬件上,加快了软 件与硬件的开发过程。l i n u 、采用一个统一的框架对硬件进行管理,从一个硬件平 台到另一个硬件平台的改动与上层应用无关。 l i n u x 可以随意地配置,不需要任何的许可证或商家的合作关系,源代码可以 免费得到。这使得采用l i n u x 作为操作系统不会遇到任何关于版权的纠纷。毫无疑 问,这会节省大量的开发费用。本身内置网络支持,而目前嵌入式系统对网络支持 要求越来越高。l i n u x 的高度模块化使添加部件非常容易。 4 l i n u x 带有用户熟悉的完善的开发工具,几乎所有用于u n i x 系统的应用软 件都己移植到了l i n u x 上。l i n u x 还提供了强大的网络功能,有多种可选择窗口管 理器( x w i n d o w s ) 。其强大的语言编译器g c c ,g + + 等也可以很容易得到,不但成熟 完善,而且使用方便。 5 具有小巧的功能完善的内核。 北京邮电大学硕士研究生学位论文2 0 0 7 一般来说,需要使用嵌入式操作系统的硬件体积都十分有限,不能像一般的计 算机那样采用海量存储器来进行数据存储。一般是采用软件固化的方法,将程序和 操作系统“嵌入”到整个产品里面。在这个技术中减少操作系统的体积是关键。不 能想象在一个紧凑的硬件设备外面再接一个通用的硬盘或是打算将几十兆上百兆的 操作系统输入到普通的r o m 或r a m 里面去。同时,如果为了追求内核的体积而将一 些必要的功能去掉,则不能完全胜任各种不同的任务。因此,对嵌入式系统来讲: 功能和体积是一对互斥事件。嵌入式l i n u x 除了本身体积较少以外,还保留了l i n u x 操作系统中非常有特色的一点用户可以自己裁减内核。用户完全可以根据不同的任 务来选定特定的操作内核模块,而将不用的部分去掉,减少体积,从根本上解决了 体积和功能的矛盾。 6 l i n u x 的另一个优势是,在i n t e r n e t 上总能得到用户所要的帮助。从某种意 义上说,l i n u 】【本来就是i n t e r n e t 的产物,正是通过i n t e r n e t ,全世界成千上万的 程序员共同努力推动了l i n u x 的发展。 目前正在开发的嵌入式系统中,7 0 以上的项目选择l i n u x 作为嵌入式操作 系统。l i n u x 现己成为嵌入式操作的理想选择。 5 3 2 3 嵌入式l i n 雌系统的构成 一个特定的嵌入式l i n u x 操作系统可以是,从一个只有启动程序、内存管理、 进程管理、设备管理、定时器服务等的小型内核系统,到能支持各种文件系统和多 种网络服务的完整服务器。 1 、最小的l i n u x 系统。 引导程序,完成硬件初始化和内核加载; 最小化的l i n u x 内核,配置成仅仅支持内存、进程管理和定时器服务的 微内核: i n i t 程序,作为初始用户进程。 2 、 基本的l j n u x 系统。基本的l i n u x 系统的形成需在最小l i n u x 系统的 基础上再加上: 硬件设备的驱动程序; 一个或几个应用进程,提供必要的应用功能,实现具体的应用目标。 北京邮电欠学硕士研究生学位论文2 0 0 7 5 3 3 设备驱动程序 5 3 3 1 设备驱动程序概述 设备驱动可以理解为操作系统的以部分,对于一个特定的硬件设备来说,其相 应的设备驱动程序是不同的,比如网卡、声卡、鼠标等,对于操作系统来说,挂接 的设备越多,所需要的设备驱动程序就越多。 设备驱动程序是l i n u x 内核的重要组成部分,其工作在一个高优先级的环境下, 如果出错就会发生很严重的问题。它起到了硬件设备和操作系统纽带的作用。 5 3 3 2 设备驱动与文件系统的关系 设备驱动程序的任务是包括自动配置和初始化子程序,负责检测所要去动的硬 件设备是否存在和是否能正常工作。如果正常,则对这个设备及其相关的驱动程序 所需要的软件状态进行初始化。 服务与i o 请求的子程序,被称为驱动程序的上半部分。调用这部分是系统调 用的结果。在执行这部分程序的时候,系统仍认为和进行调用的进程属于同一个进 程,只是用户态变成了核心态,并具有进行此系统调用的用户程序的运行环境,所 以可以在其中调用s l e e p ( ) 等与程序运行环境相关的函数。 5 3 3 3 设备驱动分类 l i n 溉内核必须能用标准的方式调用驱动【2 钆3 们。每一类设备,如字符设备、块 设备和网络设备的驱动都提供了通用的接口,供内核调用。这些通用的接口意味着 内核可以完全相同的看待不同的设备和他们的驱动程序。由于c a n 属于字符类设 备,下面只详细说明字符设备的驱动程序情况: 4 8 北京邮电大学硕士研完生学位论文2 0 0 7 c h rd e v s n a 耻f o p s f i l eo p e r a t i o n 1 s e e k r e a d 耵i t e r e a d d i r s e l e c t i o c t l 衄a p o p e n r e l e a s e f s y n f a s v n c c h e c k j 怕d ia c h a n g e r e v a l i d a t e 图5 - 5 字符设备接口 字符设备和普通文件之间的主要区别是:普通文件可以来回读写,而大多数 字符设备仅仅是数据通道,只能顺序读写。应用程序使用标准的系统调用打开、读 取、写和关闭,如图5 5 ,完全像是操作一个普通文件一样。初始化字符设备时, 他的设备驱动程序向l i n u x 登记,并在字符设备向量表里增加一个d e v i c es 饥i c t 数 据结构条目,这个设备的主标识符用作这个向量表的索引。一个设备的标志符是固 定的。c h r d e v s 向量表中的每一个条且,一个d e v i c es t r u c t 数据结构,包括两个元素: 一个登记的设备驱动程序的名称的指针和一个指向一组文件操作的指针。这块文件 操作本身位于这个设备的字符设备的驱动程序中,每一个都处理特定的文件操作, 比如打开、读、写和关闭。,p r o c ,d e v i c e 中的字符设备的内容来自c h r d e v s 向量表。 当代表一个字符设备的字符特殊文件被打开时,核心必须做一些事情,从而去 掉正确的字符驱动程序的文件操作例程。与普通文件或目录一样,每一个特殊文件 都用v f s i 节点表达。这个字符特殊文件的塔i n o d e 都包括设备的m a i o f 和m i l l o r 标识符。丽这个v f s i 节点由底层的文件系统在查找这个设备特殊文件的时候,通 用的o p c n ( ) 文件操作使用设备的主设备标志符作为这个字符特殊文件的f i i e 数据 结构,让它的文件操作指向设备驱动程序的操作。然后应用程序所有的文件系统操 作都被映射到字符设备的文件操作。 北京邮电大学硕士研究生学住论文2 0 0 7 5 3 3 4c a n 驱动程序的编写 s 3 c 2 4 1 0 通过的s p i 口来发送命令控制c a n 控制器m c p 2 5 1 5 ,所以要对s 3 c 2 4 1 0 的 s p i 口进行设置,如波特率,通信方式等,就需要配置s 3 c 2 4 1 0 的相关寄存器。 驱动程序中对i 0 端口的引用必须使用虚拟地址,不能用物理地址。相关特殊 功能寄存器的地址已经映射好了,存放在l i n u x i n c l u d e a s 旷a r m a r c h s 3 c 2 4 1 0 s 3 c 2 4 1 0 h 中,只要知道驱动程序所需要的虚拟地址值即可。通过o p e n 操作中申请 这些i 0 端口: r c q u e s t f c g i o n ( 0 】【5 9 0 0 0 0 0 0 ,o x 3 8 ,”m c p c a n f i ) ; s p ii n t e r f a c e r e q u e s t _ 奠g i o n ( 0 x 5 6 0 0 0 0 0 0 ,o ) 【9 4 ,”m c p c a ) ;w p o n r e q u e s t _ r e l 如n ( 0 】【4 c o o 0 0 0 c ,4 ,”m c p c a n ”) ;c l o c k c a n 报文的数据结构s 扛1 l c tc a nd a t a : t y p c d e fs 仃u c tc a q - d a t a i n t b u 悄o : i n l d t y p e ; 眦s i 蛐e d i n t d : i n td a t a l e n : c h a rd a t a 【9 】; ,c a nd a t a : c a n 设备的结构体: s 饥i c t m c pd e v i c ef v o l a t i l el l l l s i 鼬e dl o n gr e “b u f v o l a 6 l e 眦s i 印e d1 0 n 2r e c v h e a d : v o l a t i l eu 1 1 s i 辨e dl gr e c v t a i l ; v o l a t i l e 眦l s i 辨e d1 0 n gr o c v n 吼: w a i l q u e u 9 - h e a d ji 1 1 q ;o ru s e 嬲a 西o b a lv a r i a b l e s m ts e i i l a p h o s e m ; s e m a p h o r cu s e df o r 舢t e x u n s i 印e di n t u i l s i 印c d i m u n s i 印e di m i r q n u m ; m i n o r n u m :奉d e v i c em i rn u m b e r 幸 b m l d r a t e : u 璐i 驴e dc h a r+ s e n d b u 吼s i 印e di m s 明d n u m : v o i a t i l el i l l s i 鲫e dl o n gs 曲d h e a d ; v o l a t i l e 吼s i 驴c dl o n gs 锄d t a i l ; ) a t 砸b e - ( ( a l i 罂l c d ( l l c a c h e b y t e s ) ,p a c k e d ) ) ; 北京邮电大学硕士研究生学位论文2 0 钾 婀p 2 5 1 5 芯片的初始化是在o p 操作中调用的m c p 2 5 1 5i n h ( ) 函数中完成的, 而设备结构m c pd e v i c e 的内存分配和初始化是在i n i t 加载操作中调用的 m c pd e v i c ei n i t ( 1 函数中完成的。 c a n 使用的是外部中断5 ,所以申请的中断信号线为取qe i n t 5 v o i dm c p c 锄0 l h 锄d l e “i n ti r q ,v o i d d e v j d ,s n 、l c tp t 地g s + 阳g s ) 是中断处理例 程,发生中断后就应该进入到这个函数内运行。 5 3 4 监控程序 嵌入式系统节点部分主要功能是检测c a n 总线上报文情况,记录每一时刻总 线的状态,起到日志的作用,监控系统的程序流程如图5 6 图5 6 监控系统流程图 在监控程序中创建了一个线程r e c e i v e ,程序如下: r e t = p t h r e a d c r e a t e ( i d ,n u l l ,( v o i d 车) r e c e i v e , i f ( r e t ! = o ) p r i n t f( ”c r e a t ep t h r e a de r r o r ! n ) : 北京邮电大学硕士研究生学位论文2 0 0 7 e x i t ( 1 ) : p r i n t f ( ”c r e a t ep t h r e a ds u c c e s s n ”) : 专门负责侦听c a n 总线上的报文,当r c c e i v e 线程接收到的c a n 报文为一个 c a n d a t a 结构体,程序对其进行分析按照一定格式存储在本地的存储器中。 创建另一个线程s d ,专门负责发送c a n 报文数据,程序如下: r e t = p t h r e a d c r e a t e ( i d ,n u l l ,( v o i d 术) s e n d ,d a t a s e n d ) : i f ( r e t ! = o ) ( p r i n t f ( ”c r e a t ep t h r e a de r r o r ! n ”) : e x i t ( 1 ) : ) p r i n t f ( ”c r e a t ep t h r e a ds u c c e s s n ”) : 当需要节点发送数据是通过调用s d 线程完成c a n 报文数据的发送。 5 3 5 监控记录格式 监控程序记录下每一时刻c a n 总线的报文信息,采用报文+ 时间的格式。 时间通过调用l i n u x 系统函数t i m e ( t i n l et & ) 获取,获取的时间信息存储在 t 岫et 结构体中。血1 et 为1 9 7 0 年1 月1 日到现在的秒数,是一个很大的值,通过 c t i i n e ( ) 将t i i i l et 结构中的信息转换成真实世界所使用的时间日期表示方法,并以字 符串形态返回,如“w e dj l l i l2 82 1 :2 5 :0 82 0 0 6 u ”。 报文采用1 6 进制数字表示,下边便是一条记录: 0 0 2 8 0 2 0 2 0 1o o 0 0 0 0 0 0 0 0m o nj 锄2 91 5 :2 5 :0 4 2 0 0 7 5 3 6 监控程序测试结果 经过实验测试在不同波特率情况下,监控程序的性能有所不同,当c a n 总线 波特率在小于2 5 0 k b p s 时监控程序工作正常,可以准确的记录下c a n 总线上的每 一条报文,并写入n a s h 存储器。当波特率达到l m b p s 时,监控程序工作不稳定, 会丢失一些c a n 报文。 可能原因: 由于采用嵌入式系统采用n a s h 存储器,当波特率很高时,存储速度慢于报文的 发送速度。 北京邮电大学硕士研究生学位论文2 0 0 7 5 4 本章小结 本章首先是嵌入式硬件系统即a r m 9 系统的最小系统以及总线扩展的研究与 分析,c a n 总线控制器m c p 2 5 1 5 扩展,嵌入式软件硬件关系结构,对嵌入式l i n u x 操作系统进行简单的介绍,l i n l l 】【驱动程序的特点与如何编写,其中重点介绍了和 监控程序的结构功能。 北京邮电大学硕士研究生学位论文2 0 0 7 第六章工作总结与展望 本文以c a n 总线协议为基础,通过构建了一个小型试验网络,深入的研究了 c a n 总线通信协议。使用c a n 总线控制器构建c a n 节点模块,掌握了c a n 控制 器的使用方法,深刻的认识了c a n 总线物理层和数据链路层的通信协议;通过对 c a n 高层协议的研究,对c a n o p e n 协议的分析,通过构建整个实验网,进一步的 认识c a n 总线的特点,特别是对于实际的应用,就需要高层的网络协议支持,经 过系统中高层网络协议的制定和分析,从整体上对c a n 总线有了一定程度的理解。 c a n 总线的协议主要定义了物理层和数据链路层,当前这两层协议的研究发展 已相当成熟,对于c a n 总线的开发主要是对c a n 总线的高层协议研究和开发。本 文中只对现有的c a n 网络的高层协议进行初步的研究,通过学习借鉴c a n o p , 建立自己的c a n 总线网络,而对c a n 高层协议研究的还并不多,希望以后能做在 c a n 高层协议方面多做些工作,如利用数学建模,o p n c t 等网络仿真工具对c a n 协议进行深入研究。 北京邮电大擘项士研究生学位论文2 0 0 7 参考文献 【1 】阳宪惠现场总线技术及原理北京:北京航空航天大学出版社,1 9 9 9 2 】饶运涛邹继军郑勇芸现场总线c a n 原理与应用技术,2 0 0 3 【3 】邬宽明c a n 总线原理和应用系统设计北京:北京航空航天大学出版社,1 9 9 6 f 4 】邹益仁,马增良,蒲维现场总线控制系统的设计和开发京:国防工业出版 社2 3 f 5 】王桂荣,钱剑敏c a n 总线和基于c a n 总线的商层协议【j 】计算机测量与控制, 2 0 0 3 ,( 0 5 ) 【6 】马秋霞,郇极c a n 0 p 现场总线从设备协议一致性测试系统研究【妇制造业自 动化,2 0 0 5 ,( 0 1 ) 【7 】程坷飞,王渝,王向周基于c a n o p c l l 协议的车载平台数据通讯系统田微计算 机信息,2 0 0 5 ,( 0 7 ) 【8 】张舒原,吴运新。c a n b u s 技术在智能装载机中的应用阴装备制造技术, 2 0 0 3 ,( 0 3 ) 【9 】陈骥基于c a n o p c n 高级协议和e d 调度算法的电动汽车网络协议研究【d 】天津 大学,2 0 0 4 f l o 】吴爱国,刘莉c a n 总线控制系统的应用层协议c a n o p 锄剖析啊微计算机信 息,2 0 0 3 ,( 0 3 ) 【l l 】吕京建,张宏韬c a n 总线的浅析c a

温馨提示

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

评论

0/150

提交评论