《【电力期刊】基于ARM920T嵌入式通信控制系统设备驱动开.pdf》由会员分享,可在线阅读,更多相关《【电力期刊】基于ARM920T嵌入式通信控制系统设备驱动开.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 2 6 卷第 6期 2 0 0 6年 6月 电 力 自 动 化 议 备E l e c t ri c P o w e r A u t o m at i o nE q u i P m e n tVo l.2 6 N o.6 J u n.2 0 0 6由基于A R M9 20T嵌人式通信控制 系 统 设 备 驱 动 开 发王松月,杨福兴(北京邮电大学 自 动化学院,北京 1 0 0 8 7 6)摘要:传统的8/16位微控制器由于速度慢、功耗大且实现I nt e met协议困难,已经不能满足大量信息管理的需要。提出 一种基于A R M920 T 和Li nux 的嵌入式通信控制系 统,介绍了系 统
2、架构和在工业系统的应用。论述了用动态模块加载法和静态编译进内核法开发系统外扩设备控制器局域网(C A N)总线以及R S 一 422/R S 一 485 总线驱动程序的流程,分析了驱动的调试方法;对开发嵌入式系统驱动程序的2 种方法作了对比。关键词:嵌入式系统;A R M;L in ux;驱动中图分类号:T P 3 l l.5 2;T P 3 6文献标识码:B文章编号:1 0 0 6 一 6 0 4 7(2 0 0 6)0 6 一 0 0 7 5 一 0 40 引言 通信管理机主要用于各智能设备及系统之间的数据交换。它是各设备之间数据交换的通信枢纽,是自动化系统不可缺少的重要设备。传统的8/l
3、6位微控制器由于速度慢、功耗大且实现I nt e met协议十分困难,已经越来越不能满足高速发展的工业系统对大量信息管理的需要。随着A R M(A d va ncedRIS CM achi nes)工业级芯片的不断成熟及嵌人式Li mix 系统的不断完善,开发一种基于A R M和Li mix的嵌人式系统用于工业系统通信管理很有必要。而设备驱动是整个系统的重要组成部分,是连接软、硬件平台的桥梁。本文提出一种基于 A R M芯片 E P9 3 巧 嵌人式通信控制系统,介绍了用动态模块加载法和静态编译进内核法开发系统外扩设备控制器局域网(C A N)总线和R S 一 4 2 2/R s 一 4 85
4、总线驱动程序的 过程。1 系统整体架构及工作原理 所设计的嵌人式通信控制系统以32 位 A R M芯片E P 9 3 1 5 为核心,运行嵌人式Li mix 操作系统,可实现大容量信息采集与计算、通信管理和工业控制等功能。E p 9 3 1 5 是C i mis Log i C 公司开发的基于A R M92O T处理器核的工业级芯片,支持32 位A R M指令集和16位Thu m b 指令集,5 级整数流水线,提供1.I M l p S/M H z 的哈佛结构,内存管理单元(M M u)支持Win d ow C E、Li nux 等嵌人式操作系统。主频最高可达Z ooM H z,配备M a v
5、 e h c kc ru n c h 协处理器,可用于浮点运算、D S P 运算和媒体处理,内置图 像加速卡,图像显示和处理十分迅捷。芯片内部集成有串口R S 一 2 3 2、通用串行总线(U S B)、网口、外挂硬盘收稿日期:2(X)5 一 1 1 一 3 0;修回日期:2(X)6 一 0 2 一 2 7和音频等控制器,支持彩色液晶、触摸屏和小键盘,功能十分强大。其系统架构如图1 所示。图 1系统架构图F i g.IS y s t e ma rc h i t e c t u re 为完善其通信管理功能,本系统外扩了4 路电气隔离R S 一 4 8 5/4 2 2串口、2 路光电隔离C A N
6、VZ.0总线、1 路变压器隔离 1 0/1 0 0 M b i t/5 以太网和3 2路开关量输人/输出功能,并且配备实时时钟,可以掉电保持。为增加其可靠性,系统设计有看门狗和电源监测电 路,并且采取电 磁滤波屏蔽(EM l)设计,使系统具有较强的抗干扰能力。此嵌入式通信控制系统配置了异步串行收发(U A R T)、U S B I.1、C A NZ.O B和以太网等工业总线标准 接口,可作为网 关,通过简单的现场总线将其他8/16位微处理器(M C u)组成的嵌人式工业控制设备连接,下位机的数据和信息从R S 一 4 22/R S 一 4 85总线进人嵌人式控制器,经过协议转换后通过In te
7、 m et发送到远程主机上。C A N节点可收集模拟量输人、E P 9 3 1 5u s e:M an u 公.h t t p:/www.c i rms.c o m.万方数据电 力自 动 化 议 备第 2 6卷由输出和开关量输人、输出等信息。通过C A N总线传送并存储在系统内存中,生成C A N数据文件,用户通过网络可访问和修改工业现场数据。嵌人式控制器本身还可作为工业控制的 1 个节点使用,实时采集、存储、传输,通过键盘和L C D可查询设备状态和设置设备参数。该嵌人式通信控制系统将基于 T C P/IP 的以太网和现场总线技术有效地结合,使得孤立的现场设备作为网络节点有机地连接,易于集中
8、化管理和控制,体现了网络化和开放性是当前工业控制领域的发展方向。2 搭建系统软件开发环境 在设备驱动程序的开发过程中,调试内核和驱动程 序采用Ft p 一 T el ne t 远程开发 模 式。如图2 所示。画卿画一二匡而纂巫靡画3 动态模块加载法开发 C A N总线驱动程序 C A N属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络,本系统采用2 片p h i l i p s 公司生产的S J A I O 0 0 作为独立的C A N控制器4j。以下介绍驱动程序实现中的关键问题。3.1 物理地址到虚拟地址的映射 E P 9 3 1 5内部带有M M u,用户不能直接对底
9、层物理地址操作,必须在内核中将物理地址映射到相应的虚拟地址上,操作虚拟地址以读/写寄存器。有 2 种方法可实现这种映射5j。3.1.1 静 态映射 在i n u x/i n c l u d e/a s m一 a rm/ar c h 一 e p 9 3 x x/re g m ap.h 中 定义物理地址、虚拟地址和映射长度。#d e fi n e C AN B A S E VI R T0 xF F B 0 0 0 0 0交换机串口线P HYS0 x 3 l E0 0 0 0 0 0开发板lll Li n ux服务器 1 开发板2 图ZF tP及Tel ne t 远程开发模式F i g 2R e m
10、 o t e d e v e l o p m e n t m o d e o f F t pa n d Tel n e t/C A N中虚拟地址#d e fi n eC AN B AS E/C A N中物理地址#d e fi n eC A N S I Z E 在 l i n u x/a r c h/0 x 0 0 1 0 0 0 0 0/长度a rm/m a c h 一 e p 9 3 x x/m m.C 中将 首先,在Li mix 服务器上建立交叉编译环境,交叉编译就是在一个系统平台上生成另一系统平台上的可执行代码。可以在www.k eg el.C o m上下载交叉编译软件包c 加 s s
11、t o o l 一 2.9 5.3.t a r.9 2,解压并修改/e t c目 录 下的p ro fil e 脚本文件,设置交叉编译工具路径,系统以后再编译程序时就会自动找到适合的编译工具。由于目 标板平台基于A R M处理器,所有生成的交叉编译工具都会打上a rm一 h mix 一 前缀。开发人员通过网络用 T el net 方式远程登陆到Li nux 服务器,把需要编译的内核或者驱动程序用文件传输协议(Ft P)传到服务器上,编 译完成后把可执行代码用Ft p 协议下载回自 己 主 机,然后,通过网 络下载到开发板上,通过串口 控制开发板。这种方法可使开发者在熟悉的Win dow S 环
12、境下开发调试,使用熟悉的编辑软件修改程序,避免了Li n ux 开发界面单一的缺点和在不同界面下切换的麻烦。同时,多人可以共享 1 台高性能的Li n u x 服务器,可以节约资源且方便高效。嵌人式软件系统的结构可分为操作系统、设备驱动、应用中间件和应用系统4个层次。设备驱动程序在功能上分为2 层:硬件控制层和接口封装层。硬件控制层负责对硬件模块按功能提供各种控制接口;接口 封装层负责将硬件控制层封装成标准的应用 接 口,。Li nux 内核提供了2 种机制开发设备驱动程序:一种直接把驱动程序编译到内核中;另一种则是驱动程序编译成可动态加载和卸载的驱动模块T3。以下分别介绍用这 2 种方法开发
13、 C A N总线和串口R S 一 4 2 2/R S 一 4 8 5 的驱动程序。上面的定义添加实现映射的结构中。s t a t i cs t ruC t m a 仁d e s ce p 9 3 x x-i o-d e s c _i n i t d a t a=1/V irt u alA d d r e s,P h y s i c a l A d d r e s,s i z eDo ma i n R W C B瓦s tl l O _ B A S E _ V I R T,1 0 _ B A S E 一H Y S,1 0 多I Z E,D O M A I N _ 1 0,0,1,0,0 ,C A
14、N _ B A S E 一 I R T,C A N _ B A S E _ P H Y S,C A N _ S I Z E,D O M A I N _ 1 0,1,1,0,0 LAS T-D E S C ;3.1.2 动态映射 L i n u x 在1 0.h 头文件中声明了函数i o re m a p(),用于将 1/0内存资源的物理地址映射到核心虚地址空间(3 G B 一 4 G B)中,函数原型如下:v o i d*i o r e m a p(u n s i g n e dl o n gp h y s 一d d r,u n s i 罗e dl o n gs i z e,u n s i g
15、 n e dl o n gfl a g s);函数v o i di o u n m a p(v o i d*a d d r)用于取消i o re-m ap()所作的映射,参数a ddr 是指核心虚地址的指针。这2 个函 数都 是实现 在m m/io re m ap.C 文 件中。映射完成后,就可以象读/写R A M那样直接读/写系统的1/0内 存资源了。3.2 字符设备的注册 Li nux 系统的 设备分为字符、块和网 络3 种设备,字符设备存取时只需较少缓存,应用程序可像访问文件一样使用标准系统调用打开、读、写和关闭它。当 字符设备初始化时,它的 设备驱动程序向U mix核心登记,通过系 统
16、函 数re gi st e r-ch 记 evo 将设备加入到系统设备列表中,在c h adevs 向量表中增加1 个devi ce _ st ru ct数据结构条目,该设备的主设备标识符(例如对于c an设备是9 1)作为该向量表的索引,1个设备的主标识符是固定的。chadevs 向量表中的devi ce _ st ru ot数据结构包含2 个元素:一个是登记的设备驱动程序名称的 指针,另一个是指向一组文件操万方数据第 6期王松月,等:基于A R M9 20T 嵌人式通信控制系统设备驱动开发.作的指针。这块文件操作本身位于这个设备的字符设备驱动程序中,每个都处理特定的文件操作,比如打开、读、
17、写和关闭,/p r o C/d e v i c e s 中 字符设备的内容来自c h 记 ev s 向量表。注销与注册相反,调用u n r e g i s t e r-ch r d e v()函数6 。3.3 C A N总线驱动程序的 3 个主要组成部分 a.自动配置和初始化子程序,完成硬件设备的检测和初始化。b.服务于1/0请求的子程序,控制硬件发送和接 收 数 据,打 开、关 闭 及 属 性 设 置。fil e 一 叩 er at ion s 结构为 Lin ux 提供的服务于 1/0请求的子程序的代码实现提供了一系列入口 点,和字符设备一起注册到系统中,在文件作用域中进行定义7j。c.中
18、断服务子程序在 Li mix 系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Li mix 系统接收硬件中断,再由系统调用中 断服务子程序。调用re q ue s t_ i rq()注册中 断处 理程序,fr e e _ i r q()释 放中 断8 。3.4 C A N驱动程序的加载 编写M ake fil e 文件,将驱动程序交叉编译生成can.0 的二进制可执行文件并下载到目标板,执行in smod C an.。,就可以将驱动程序加载到内核空间运行了。Li nux 内核维护了一张所有内核所用资源的符号表(称为内核资源符号表)。当一个模块被加载,程序i n i t-
19、m o d u l e()函数开始执行,Li n u x 就会修改内核资源符号表,将该模块所提供的服务和资源加入进去。这样另一个模块载人时,如果需要就可以引用该模块的资源了。卸载一个模块时,程序从d ean-m odul e()函数开始执行,需要知道当前模块是否正在被使用。如果没有被使用,在卸载时要能够通知该模块,以便由它自己释放已被它占用的系统资源。同时,Li n u x 还要从内核资源符号表中删除该模块提供的所有资源和服务9。程序模块加载和卸载流程图如图3 所示。(a)模块加载流程 (h)模块卸载流程 图 3C A N驱动程序动态流程 F i g.3 D y n a m i c fl o
20、wo f C A Nd ri v e r p r o g r a m4 静态编译进内核方法开发驱动程序 R S 一 4 2 2 与R S 一 4 8 5 都是串行数据接口标准,数据信号采用差分传输方式。R S 一 4 22支持单机发送、多机接收的单向、平衡传输规范;R S 一 4 85标准增加了多点、双向 通信能力。本系统采用P hi l i Ps公司生产的St1 6 C 5 54D作为复用驱动器。4.1 串口驱动程序开发步骤 与C A N总线一样,串口 也属于字符设备,驱动程序架构和C A N设备相似。以下仅介绍串口驱动程序S er ia L C 静态编译进内核的方法。-步骤 1 改动 S
21、e r i a l.C的源代码。新建函数 i n ti n i t _ s e r i a l(v o i d),将设备注册在此处:re s u l t=re g i s t e r 一 c h r d e v(9 2,“s e ri a l”,&s e ri a l 一p s)。步骤2 将S e r i a l.C 复制到二/d r i v e r s/c h a r 目录下,并在二/d ri v e r s/c h a r 目录下m e m.c 的 i n t c h r-d e v _ i n i t()函数中增加如下代码:#i fde f C O N F I G T E S T DR
22、I VEi n i t _ s e r i a l();#e n d i f步骤 3 在 二/d ri v e r s/c h a r目录下 M a k e fi l e中增加如下代码:i fe q($(C O N F I G es rr E S T D R I V E),y)L-O B J S+=s e r i a l.0E n d i f步骤4 在二/ar c h/m 6 8 k n o m m u目 录下c o n fi g.i n 中字符设备段里增加如下代码:B o o l s u P P o rtfo rt e s t d r i v e C O N F I G JE S T D R
23、 I V Ey步骤5 运行m a k em e n u c o n fi g(在m e n u c o n fi g 的字符设备选项里可以看到刚刚添加的“S uPPo rtfo rte st d rive”选项,并且已经被选中。步骤6 文件系统的相应改变。在二d ev/目录下依次创建串口设备:m k n o d/d e v/S e r i a l lC9 20,C表示字符设备,9 2 是主设备号,最后一位是次设备号。对文件系统的目 录进行添加即可。至此,已经在Li mix 中增加了一个新的设备驱动程序。通过命令 ls m od 可以查看新的设备驱动程序是否已经加载到内核中了。接下来进行Li n
24、 ux内核编译,一般Li nux内核全部编译需要下述命令:万方数据函电 力自 动 化 议 备第 2 6卷 m a k e x c o n fi g(m e n u c o n fi g)(d e p)(c l e a n)(b z l m a g e)(m o d u l e s)(m o d u l e s _ i n s t a l l)将编译好的内核重新下载到目 标板上就可使用串口的驱动程序了。4.2 驱动程序的调试方法 在驱动程序的开发过程中,调用内核打印错误函数p ri ni k(),将调试信息打印到超级终端上进行简单的调试。通过将2 路R S 一 4 22 或者2 路 R S-48
25、5 对通,编写测试代码,配合使用示波器检测串口设备收发数据的正确性。C A N驱动程序也使用同样的调试方法。制系统在宜昌、南京等电力系统得到了很好的应用。利用 Inte met和嵌人式技术实现工业控制领域的网络连接和远程监控具有很好的市场前景。5 比较 2 种方法开发驱动程序的特点 使用模块可以使得内核更加紧凑和灵活,修改内核时也不必全部重新编译内核,这样也避免了修改内 核时重启机器模块;链接到内核,它的作用和静态链接的内核目 标代码完全等价,这样在调用模块函数时,就可不显示传递消息。由于嵌人式Li nux 不像桌面Linux 那样可以灵活地使用 i nsm od/rmm od加载、卸载设备驱
26、动程序,使用静态编译进内核的方法有利于内核运行的稳定性,不容易产生系统恐慌。同时,模块的引人也带来了一些问题,由于内 核所占的内 存空间是不会被换出的,链接进内核的 模块会给整个系统带来一定的性能和内存方面的损失,而且装入内 核的 模块 会成为内 核的 一部分,可以修改内核中的其他部分。模块的使用不当可能导致系统崩溃,而且模块的版本维护,以及内 核符号表的更新,模块之间的依赖性都是编写模块程序时要时时关注的问题。静态编译进内核的方法调试不是很方便,每次都需要重新编译内核。这2 种方法各有利弊,可以根据具体情况选择使用。6 结语 随着微控制器和网络技术的发展,工业系统中使用A R M和Limix
27、 相结合的嵌人式技术必将越来越广泛。本文介绍的基于A R M9 2 0 T嵌人式通信控参考文献:1 赵炯.Li n ux内核完全注释 M.北京:机械工业出版社,2 仪阵.2 李善平,刘文峰,李程远,等.Li n 以内核2 4版源代码分析大全 【M,北京:机械工业出版社,2 002.3 1 乌 阵 宽明.c A N总线原理和应用系统设计 M.北京:北京航空 航天大学出版社,2 003.4 秦贵和,徐华中.A R M g嵌人式技术及Li nux 高级实践教程 仁 M工北京:北京航空航天大学出版社,2 005.5 L o v ER.Li nux 内核设计与实现 M.陈莉君,康华,张波,译.北京:机械
28、工业出版社,Z IX)4.6 M o L A YB.Unix/u nu x 编程实 践教程 M .扬宗源,黄海涛,译.北京:清华大学出版社,2 0 047 W A L LK.G N U/Li n ux编程指南 M.张辉,译.北京:清华大学 出版社,2 0 0 5.8 Y A G H M O U RK.构建嵌人式L i n u x 系统 M .韩存冰,改编.北 京:中国电力出版社,2 004【9 陈坚,孙志月.M ode m通信编程技术 M.西安:西安电子科技大 学出版社,2003.【10习博,方彦军.嵌入式监测系统中网络通信的研究与实现【J .电力自动化设备,2(X4,2 4(7):6 8 一
29、 7 1 X IB o,F A N G Y an一 j u n.Res e 二ha n di m p l e m e n t at i o nof n e t-w 0 rk c o m mun i c at i o ni ne m b e d d e dmOn i t orin gs y s t e m【J .E l e c-t ri cp owe r A u t o m a t i o nE q u i p m e n t,2(X)4,24(7):6 8 一 7 1.1 1 严亚勤,吴文传,张伯明.基于嵌人式L i nux 的网 络RTu J .电 力自 动化设备,2 x)4,2 4(9):
30、2 7 一 29.Y A N Y a 一 q i n,WU We n 一 c h u a n,Z H A N G B o 一 而n g.A n e t w o rk R T Ub a s e do ne m b e d d e dLi n u x 仁 J .E l e c t ri cP o 铸 e rA u t o m at i o n E q u i p m e n t,Z IX)4,24(9):2 7 一 2 9 12 严晓蓉.电力自 动化系统中的数据处理 J ,电力自 动化设备,2 0()5,2 5(3):9 6 一 9 9.Y A N X i ao一 ro n g,D a t ap
31、ro c e s s i n gi ne l e c t ri cp owe ra u t o m at i o n 斗 s t e m J .E l e c t ri cp o w e r A u t o m at i o nE q u i p m e n t,2 005,2 5(3):9 6 一 9 9 (责任编辑:汪仪珍)作者简介:王松月(1 981 一),男,江苏新沂人,硕士研究生,研究方向为嵌入式系统与计算机控制(E 一 m ai l:w angs y ee b u Pt s i na.杨福兴(1 9 64一),男,江西高安人,教授,研究方向为嵌入式系统与计算机控制、物流信息系统。D
32、 ri v e rd e v e I o P me n t fore m b e d d e dc o mm u nic a ti o nc o ntr o l s yst e m b a s e do nA RM920T WA N GS o n g 一 y u e,Y A N GF u 一 x i n g (B e ij i n gU n i v e r s i t yo f P o s t sa n dTel e c o m m u n i c a t i o n s,B e ij i n gl 0 0 8 7 6,C h i n a)A bst rac t:Thet r a d i t
33、i o n als/1 6b i tM C U(M i c ro一 C o n t ro l U n i t)c a nn o t m e e t re q u i re m e n t so f m a s si nfOrma t i o nm a n a g e m e n t b e c a u s eo f i t ss l o ws P e e d,h e a v yc o n s u m p t i o nandd i ffi c u l t yt oi m p l e m e n tI n t e rne tp ro t o c o l.A ne m b e d d e dc o
34、 m m u n i c at i o nc o n t ro ls y s t e m b a s e do nA R M(A d v a n c e dR I S CM a c h i n e s)9 2 0 TandL i n u xi sp ro p o s e d.T h es y s t e march i t e c t u re a n di t s即p l i c a t i o n si ni n d u s t ri als y s t e m sa r ei n t ro d u c e d,a n dt h ew a yt od e v e l o P d r i v
35、 e r sfo rP e r i p h e ra l sw i t h C A N(C o n t ro l l e rA r e aN e t w o rk)b u s a n dR S 一 4 2 2/R S 一 4 8 5b u su s i n gt h ed y n a m i cm o d u l el o a d i n gm e t h o da n dt h es t a t i cc o m P i l i n gt ok e rne lm e t h o di sd i s c u s s e d,Thed e b u g g i n go ft h ed ri v e ri sa n a l y z e d,Twom e t h o d so f d e v e l o p i n gt h ee m b e d d e ds y s t e md ri v e rp ro 肛 a ma r ec o n t r a s t e d.K e yw o r d s:e m b e d d e ds y s t e m;A R M;L i n u x;d ri v e r万方数据