毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc

上传人:laozhun 文档编号:3978554 上传时间:2023-03-30 格式:DOC 页数:34 大小:519.50KB
返回 下载 相关 举报
毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc_第1页
第1页 / 共34页
毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc_第2页
第2页 / 共34页
毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc_第3页
第3页 / 共34页
毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc_第4页
第4页 / 共34页
毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于arm的以太网与can总线协议转换网关的设计.doc(34页珍藏版)》请在三一办公上搜索。

1、本 科 毕 业 设 计(论文)题 目:基于arm的以太网与can总线协议转换网关的设计学生姓名:学 号:专业班级:通信工程2008级3班指导教师: 2012年6月15日摘 要工业的发展迫切需求工业网络与信息网络融合,以实现信息的通讯和共享,满足对管理和控制的一体化要求。因此,实现控制网络与信息网络的融合成为当今的热点问题。本文探讨了CAN总线与以太网互联的方法,利用ARM9 S3C2410为主控制器,设计嵌入式网关转换器,实现了在Linux环境下CAN总线与以太网的互联和通信。本文对系统进行了硬件设计,采用微控制器+以太网接口芯片+CAN总线接口芯片实现互联网关,主控制器选用三星半导体公司的A

2、RM9 S3C2410,以太网控制器选用AX88796,CAN控制器选用MCP2510。最后,本文对系统进行了软件设计,完成Linux操作系统在目标机上的安装、下载和移植等工作编写Linux环境下CAN总线的应用程序,完成在Linux操作系统下的CAN-TCP/IP协议转换程序设计,实现CAN总线与以太网这两种不同网络的互联和通信。关键词:以太网;CAN总线;Linux;网关;协议ABSTRACTThe industrial development of the network with top urgent needs information network integration so a

3、s to realize the communication and information sharing, meet the management and control of integration .Therefore, to control the network and information network integration has become one of the hot issue.This paper discuss connection method between the CAN bus and Ethernet, using ARM9 S3C2410 as p

4、rimarily controller , design the embedded gateway converter ,realized in Linux environment CAN bus and Ethernet connection and communications.Since then , on the system hardware design , adopting micro controller + Ethernet interface chip + CAN bus interface chip implemented Internet shut. The Lord

5、controller chooses the S3C2410 semiconductor company Samsung ARM9, choose AX88796 as Ethernet controller , choose MCP2510 as CAN controller. Finally on the system software design , complete the Linux operating system in your target machine installation , download , and transplantation , write down t

6、he applications of Linux CAN ,complete in the Linux operating system CAN-TCP/IP protocol conversion program design , realization CAN bus and Ethernet the two different network interconnection and communication.Keywords: Ethernent; CAN bus ;Linux; Gateway; Protocol目 录第1章前 言11.1 课题内容及意义11.2 论文组织结构1第2章

7、 嵌入式网关技术背景32.1 现场总线32.1.1 CAN总线的特点32.1.2 CAN总线通信协议42.2 以太网技术42.2.1 以太网发展情况简介52.2.2 TCP/IP协议52.3 嵌入式操作系统72.3.1 Linux操作系统概述72.3.2 嵌入式Linux系统的开发流程8第3章 系统设计103.1 整体方案103.2 网关设计的硬件和软件方案103.3 网关的总体设计方案10第4章 系统硬件电路设计124.1 S3C2410最小系统相关硬件电路设计124.1.1 电源电路的设计124.1.2 复位电路设计134.1.3 时钟电路设计134.2 CAN接口电路设计134.3 以太

8、网接口电路设计14第5章 系统软件设计165.1 软件开发系统的搭建165.1.1 Linux 交叉开发模式165.1.2 Linux 宿主机环境的建立与安装175.1.3 ARM下Linux内核的配置和移植185.2 CAN模块软件设计195.2.1 CAN的驱动程序195.2.2 CAN应用程序设计205.3 以太网模块的软件设计205.4 协议转换模块22第6章 总结与展望266.1 总结266.2 展望26致 谢28参考文献29第1章 前 言1.1 课题内容及意义工业网络的发展迫切需求与顶层信息网络融合,以实现信息的通讯和共享,满足对管理和控制的一体化。因此,实现控制网络与信息网络的融

9、合成为当今的热点问题。本文将现场总线与以太网互联的意义就是实现工业网络中信息的通讯和共享。CAN总线构成的测控网络与以太网构成的管理信息网络相融合,在测控底层发挥现场总线作为专用控制网络的优势,又在信息管理层发挥以太网的优势,满足社会各界对工业控制网络的需求。实现互联以后,不仅可以直接在操作室采集现场的测控数据、对现场的设备进行实时的控制,还可以通过互联网进行远程控制和设备维护。本文以嵌入式Linux为软件平台,S3C2410为硬件平台,对CAN-TCP/IP进行研究,设计出嵌入式网关转换器,实现CAN总线与以太网的互联和通信。课题主要内容:1,系统主要硬件电路的设计2,CAN模块驱动程序的移

10、植以及应用程序的设计3,以太网模块驱动程序的移植以应用程序的设计4,CAN-TCP/IP协议转换程序的设计5,Linux环境下S3C2410的内核的移植本文将完成Linux操作系统在目标机上的安装、下载和移植等,编写Linux下的CAN应用程序,完成在Linux操作系统下的CAN-TCP/IP协议转换程序设计,实现CAN总线和以太网这两种不同网络的互联和通信。1.2 论文组织结构本论文共分6章,论文内容按下列章节组织:第1章是前言。本章主要给出毕业设计课题的背景,内容、意义和论文的组织结构第 2 章是嵌入式网关技术背景。本章介绍CAN总线的特点以及CAN总线的通信协议。介绍以太网的发展情况以及

11、TCP/IP协议。同时阐述Linux操作系统、嵌入式Linux系统的开发流程。第3章是系统设计。介绍了系统的整体架构及各功能模块的划分,概要的设计硬件部分和软件部分第 4 章是系统硬件电路设计。主要介绍S3C2410最小系统电路、CAN接口电路和以太网接口电路的详细设计。第5章是系统软件设计。本章主要介绍了嵌入式交差编译过程,内核移植,CAN模块应用程序的设计,以太网模块应用程序的设计,协议转换部分程序设计以及驱动的加载。第6章是总结与展望。本章对论文所作的工作进行了总结,并对下一步工作计划做出了设想。第2章 嵌入式网关技术背景2.1 现场总线现场总线是用于现场仪表与控制系统和控制室之间的一种

12、全分散、全数字化、智能、双向、互联、多变量、多点、多站的通讯网络。现场总线是当今自动化领域发展的热点之一,被誉为自动化领域的计算机局域网。它作为工业数据通信网络的基础,沟通了生产过程现场级控制设备之间及其与更高控制管理层之间的联系。它不仅是一个基础网络,而且还是一种开放式、新型全分布的控制系统。它在制造业、流程工业、交通、楼宇等方面的自动化系统具有广泛的应用前景。2.1.1 CAN总线的特点20世纪80年代初,德国的BOSCH公司就提出了用CAN(Controller Area Netmork)控制器局域网来解决汽车内部的复杂硬件信号接线。目前,其应用范围已经不再局限于汽车工业,而向过程控制、

13、纺织机械、农用机械、机器人、数控机床、医疗器械以及传感器等领域发展。CAN总线以其独特的设计,低成本、高可靠性、实时性、抗干扰能力强等特点得到广泛的应用。1993年11月ISO正式颁布了道路交通运输工具、数据信息交换、高速通信控制器局域网国际标准ISO11898CAN高速应用标准,ISO11519CAN低速应用标准,这为控制器局域网的标准化、规范化铺平了道路。CAN具有的一些特点1(1) CAN为多主方式工作,网络上任一节点均可以在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式灵活,且无需占地址等节点信息。利用这一特点可方便地构成多机备份系统。(2) CAN网络上的节点信息分成不

14、同的优先级,可满足不同的实时要求,高于优先级的数据最多可在134s内得到传输。(3) CAN采用非破坏性总线仲裁技术。当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可以不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间,尤其是在网络负载很重的情况下也不会出现网络瘫痪的情况。(4) CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接受数据,无需专门的“调度”。(5) CAN的直接通信距离最远可达10Km(5Kbit/s以下);通信速率最高可达1Mbit/s(此时通信距离最长为40m)。(6) CAN上的节点数主要取决于总线驱动电路

15、,目前可达110个;报文标示符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标示符几乎不受限制。(7) 采用短帧结构,传输时间短,受干扰概率低,具有极好的检错效果。(8) CAN的每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低。(9) CAN的通信介质可为双绞线、同轴电缆或光纤,用户可灵活选择。(10) CAN节点在错误严重的情况下具有自动关闭输出功能,以便总线上其他的操作不受影响。2.1.2 CAN总线通信协议CAN总线控制器支持4种不同的CAN协议帧2数据帧:携带数据由发送器至接收器;数据帧自一个发送节点携带数据至一个活多个接收节点,数据帧由7个不同的位场

16、组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。远程帧:通过总线单元发送,以请求发送具有相同标示符的数据帧;激活为数据接收器的站可以借助于传送一个远程帧初始化各自源节点数据的发送。远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。出错帧:由检测出总线错误的任何单元发送;出错帧由两个不同场组成,第一个场由来自各帧的错误标志叠加得到,后随的第二个场是出错界定符。超载帧:用于提供当前的和后续的数据帧的附加延迟。超载帧包括两个位场:超载标志和超载界定符。存在两种导致发送超载标志的超载条件:一个是要求延迟下一个数据帧或远程帧的接收器的内部条件;另一个是在间歇

17、场检测到显性位。2.2 以太网技术以太网是从美国夏威夷大学开发的一中ALOHA的9.6Kbit/s无线电发射系统演变而来的。1972年,施乐公司根据ALOHA系统的原理研制出了一中2.94Mbit/s网络。这种网络被称为以太网,其特性是能够检测出载波,反射器在尝试发射前先监听网络上的载波信号。1979年,DIX(Digital、Intel、Xeror-数字、英特尔施乐)研制出一种行业标准的10Mbit/s以太网,即Ethernet 。1981年,IEEE Project802小组委员会成立,使10Mbit/s以太网成为一种国际标准。1995年,IEEE批准了100Mbit/s的以太网,这种以太

18、网被称为快速以太网3。2.2.1 以太网发展情况简介回顾Internet的发展史和应用史,可以分为三个阶段: 1980年-1990年Internet发展的萌发阶段。解决各种计算机的联网和信息交换,采用TCP/IP协议交换文件盒信息,主要解决专业领域和银行、军用系统采用不同操作系统的大、中、小型计算机的联网问题,这时并不称之为Internent,TCP/IP网络仅是少数计算机专家的概念。 1990年-2000年,PC作为客户机,Internet席卷全球。在TCP/IP协议网络之上发明的Email和www普遍应用,Internet国际互联网被大众接受,这时一个重要的条件是PC普及的非常广泛,即形成

19、了Client/Server体系结构,进而发展为Brower/Server体系结构,这时的客户机是已广泛普及的PC,而服务器是相对复杂的,价格昂贵的超级计算机,即我们所谓的“胖服务器”。Internet的发展史IT界的老牌公司也没有料想到会产生路由器的巨大需求,Cisco的成功就在于此。另一个方面,www的应用又造就了以yahoo为代表的.com公司,以及电子商务公司,这时候人们不得不承认Internet像一场革命改变了世界。 2000年-2010年,嵌入式Internet时代。这个时期,嵌入式Internet技术飞速发展将给地球披上“电子皮肤”,嵌入式片上系统称为瘦服务器。这些瘦服务器将与我

20、们这个世界你能想到的各种物理信息、生物信息相连接,通过Internet网自动的、实时的、方便地、简单的,提供给需要这些信息的对象。2.2.2 TCP/IP协议在整个计算机网络通信中,使用最为广泛的通信协议便是TCP/IP协议。TCP/IP起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,到20世纪90年代发展成为计算机之间最为常用的通讯协议。它是网络互联的标准协议,连入Internet的计算机进行的信息交换和传输需要采用该协议,而且,在Window2000Server系统下实现和其它操作系统的连接于通信,以及配置各种专门功能的服务器的过程中,TCP/IP是使用最频繁的一个网络组件

21、。TCP/IP可以包容有线、无线乃至其他各种丰富的通信设备,可以构筑一个统一的网络环境。TCP/IP是一种通信软件,它可以利用网络中德各种各样的硬件设备,并不必限定某种通信方式。TCP/IP是立足于作为通过各种硬件进行各种工作的软件而设计出来的,所以网络的作用很大程度上取决于TCP/IP协议及其作用。TCP/IP实际上市一种层次型协议,是一组协议的代名词,它的内部包含许多其他的协议,组成TCP/IP协议组。TCP/IP是一个层次协议集,在OSI参考模型中,把进行网络通信所必须的功能划分为七个层次。包括有:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。在TCP/IP协议的分组中,网

22、络接口层是协议实现的基础,包括Ethernet和Token Ring等各种网络标准。IP提供了专门的功能,解决与各种网络物理地址的转换;网络层包括四个主要的协议:IP、ICMP、ARP、和RARP。它将多个网络联成一个Internet网,通过Internet网传送数据报,提供可靠的无连接报文分组传送服务,并能够实现逻辑地址(即IP地址)与物理地址的相互转换;传输层包括两个主要协议:TCP和UDP,在IP协议的基础上,提供可靠的面向连接的服务,并使发送方能区分一台计算机上的多个接受者,即不同网络连接的端口号,从而实现两个用户进程之间传递数据报;应用层则定义了各种机型上主要采用的协议:FTP、Te

23、lnet、DNS、SMTP等。对大的数据报进行打包拆包处理,它提供远程访问服务,使用户可以在本地机器和远程机器进行有关文件的操作和邮件传输,并能将名称解析成IP地址。TCP/IP协议栈的结构如图2.1。图2-1 TCP/IP协议栈的结构图2.3 嵌入式操作系统通用计算机具有完善的操作系统和应用接口(API),是计算机基本组成不可分离的一部分,应用程序的开发以及完成后的软件都在OS平台上面运行,但一般不是实时的。嵌入式系统应用软件可以没有操作系统直接在芯片上运行,但是为了合理的调度多任务,利用系统资源、系统函数以及专家库函数接口,用户必须自行选配RTOS开发平台,这样才能保证程序执行的实时性、可

24、靠性,并减少开发时间,保证软件质量。嵌入式操作系统完成嵌入式应用的任务调度和控制等核心功能,具有内核较精简、可配置、与高层应用紧密关联等特点4。2.3.1 Linux操作系统概述 Linux操作系统起源于10多年前一位芬兰大学生Linus Torvalde的业余作品,目前的成熟版本已经到了V2.6。Liunx作为一个免费的操作系统,并且是从网络上发展起来的,因此Linux的网络系统功能特别稳定和完善。目前Linux被广泛应用于网络服务器,桌面操作系统以及嵌入式Linux操作系统。Linux系统由4个主要的子系统组成:1, 用户进程。用户应用程序是运行在Linux操作系统最高层的一个庞大的软件集

25、合。当一个用户程序在操作系统之上运行时,它就是操作系统的一个进程2, 系统调用接口。为了在应用程序中实现特定的任务,可以通过系统调用接口来调用内核中特定的过程,以实现特定的服务。一般认为,这些调用和服务也是操作系统内核的一部分,内核的编程接口也属于这部分。系统调用本身也是若干条指令组成的过程,但与一般过程不同的是系统调用运行在内核模式,而一般的进程运行在用户模式。3, Linux内核。内核是操作系统的灵魂,包括内核抽象和对硬件资源的间接访问,它负责管理磁盘上的文件、内存,负责启动系统并运行程序,负责从网络上接收和发送数据报等。4, 硬件。硬件包括了Linux安装时需要的所有可能的物理设备。如C

26、PU、内存、硬盘、网络硬件、LCD显示屏等。2.3.2 嵌入式Linux系统的开发流程嵌入式Linux系统的开发流程一般包括开发平台的建立、操作系统的移植、应用软件的开发与调试5。绝大多数的Linux软件开发都是以Native方式进行的,即本机(HOST)开发、调试,本机运行的方式。这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在板子上运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译环境建立在宿主机,即PC机,对应的开发板称为目标板。开发时使用宿主机上的交叉编译汇编以及连接工具形成可执行的二进制代码,这种可执行代码并不能

27、在宿主机上执行,而只能在目标板上执行。然后把可执行的文件下载到目标板上运行,调试的方法很多,可以使用串口,以太网口等。宿主机和目标板的处理器一般不相同,需要选择合适的编译器,GNU编译器提供这样的功能,可以选择相应的编译器在宿主机上开发在目标板上运行的程序。所以在进行嵌入式开发前的第一步工作就是要安装一台装有指定操作系统的PC机作为宿主开发机,对于嵌入式Linux,宿主机上的操作系统为Linux操作系统。嵌入式开发通常要求宿主机配有网络,支持NFS(为交叉开发时mount使用),支持TFTP服务器(为下载、烧写所用)等。然后要在宿主机上建立交叉编译调试的开发环境。环境的建立需要许多的软件模块协

28、同工作,这将是一个比较复杂的工作。简单的说,整个开发流程为:在宿主上使用针对特定处理器系统的编译器、链接器将Linux内核编译器链接生成目标代码,然后将该目标通过JTAG接口、串口或以太网接口等方式下载到目标板的FLASH中,上电后内核就能在该目标板上运行了。第3章 系统设计本章介绍了系统的方案设计,包括硬件部分和软件部分。介绍嵌入式网关的整体设计。3.1 整体方案在整个系统的设计中,各功能模块划分如图3-1所示:图3-1 总体模块图3.2 网关设计的硬件和软件方案本系统的硬件要求功能强大,能够提供足够的平台,因此选择S3C2410处理器。S3C2410微处理器是SAMSUNG公司为手持设备设

29、计的低功耗、高集成度的基于ARM920T核的处理器。S3C2410内部没有集成的以太网控制器,所以系统设计中选择AX88796控制器作为以太网控制器。另外S3C2410中也没有集成的CAN控制器,因此选择MCP2510作为CAN控制器,S3C2410通过SPI端口控制MCP2510.软件设计方面,由于以太网协议比较复杂,以及系统对时间要求比较苛刻,为了更好的管理微处理器,选择了Linux操作系统作为软件开发平台。Linux功能强大,代码开放,TCP/IP协议完全可以在其下运行,不需要裁剪。选择在S3C2410处理器上运行Linux操作系统,可以为以后的功能拓展打下一个很好的基础,在此基础上扩展

30、功能,无须再改变处理器和操作系统。3.3 网关的总体设计方案本文的网关主要由S3C2410最小系统、CAN模块、以太网模块。具体如图:RJ45以太网控制器AX88796S3C2410 cpuRS-232转换器串口DB-9电源电路,复位电路CAN控制器MCP2510TJA1050图3-2 嵌入式网关的硬件结构图S3C2410最小系统包括处理器、SDRAM、FLSAH、时钟电路、复位电路、电源电路。核心模块的外围电路设计包括如下:1, 电源电路设计:设计电路所需的1.8V和3.3V电压;2, 时钟电路设计:系统所需要的晶振。3, CAN模块:S3C2410通过SPI控制CAN控制器。4, 以太网模

31、块:通过S3C2410控制AX88796,进行网络访问。第4章 系统硬件电路设计ARM嵌入式芯片是一种高性能、低功耗的RISC芯片。它由英国公司设计,世界上几乎所有的主要半导体生产商都生产基于ARM体系结构的通用芯片,或在其专用芯片中应用相关ARM技术。4.1 S3C2410最小系统相关硬件电路设计S3C2410最小系统包括电源电路、SDRAM、NOR FLASH、NAND FLASH、时钟电路、复位电路等。主要需要设计的部分是电源电路、复位电路、时钟电路。4.1.1 电源电路的设计系统中电源的设计是至关重要的,因为它是系统工作的源动力,因此电源的设计也要非常谨慎,要考虑所设计的电源在达到系统

32、稳定工作需求的同时,还要减少系统功耗。在设计中,需要使用到5V,3.3V和1.8V的直流稳压电源。由于ARM核心板内含有1.8V内核供电电源,因此只需提供5V和3.3的供电电路。ARM 芯核工作电压1.8V,通用I/O 口和部分外设电压3.3V, USB 主机和LCD 工作电压5V。因此开发板由外部开关电源提供5V 直流电源,然后经过LM1085-3.3V稳压得到一路3.3V,再经过AS1117-1.8V线性电压调压器得到所需的1.8V 提供给ARM 芯核、MPLL、 UPLL、alive 等图4-1 电源部分的电路图4.1.2 复位电路设计硬件复位电路由IMP811T 构成,实现对电源电压的

33、监控和手动复位操作。2410-S主板复位电路设置专用逻辑:IMP811T 的复位电平可以使CPU JTAG nTRST)和板级系统(nRESET)全部复位;来自仿真器的ICE_nSRST 信号只能使板级复位;来自仿真器的ICE_nTRST 可以使JTAG(nTRST)复位,通过跳线选择是否使板级nRESET 复位。nRESET反相后得到RESET 信号。图4-2 复位电路图4.1.3 时钟电路设计S3C2410 有两个工作时钟:系统主时钟MPLL和USB 的基准输入时钟源总线时钟UPLL。开发板上提供了一个实时时钟32.768KHz,一个12MHz 的外部晶振,并可以在EXTCLK 脚引入外部

34、时钟。图4-3 时钟电路图4.2 CAN接口电路设计在S3C2410处理器中没有直接嵌入的CAN接口,所以要选择独立的CAN控制器。由于S3C2410处理器设有SPI接口,MCP2510控制器的引脚设计中也包括了SPI接口,这样CAN控制器MCP2510可以通过SPI接口与处理器的SPI接口相连,简化了电路的设计。CAN总线接口芯片MCP2510SO总线接口芯片MCP2510SO将SPI信号转换为CAN总线信号,由 GPH0作为片选信号.经CAN总线收发器TJA1050 构成CAN总线接口,CAN收发器可以通过CANH和CANL端发送和接受数据,在CANH和CANL之间加入电阻,能够提高抗干扰

35、和可靠性。如图4-4所示:图4-4 CAN BUS电路设计4.3 以太网接口电路设计Ax88796是台湾Asix公司推出的NE2000兼容快速以太网控制器。其内部集成有10/100 Mb/s自适应的物理层收发器和8K16位的SRAM,支持MCS-51系列、80186系列以及MC68K系列等多种CPU总线类型。Ax88796执行基于IEEE802.3/IEEE802.3u 局域网标准的10Mb/s和100Mb/s以太网控制功能,并提供IEEE802.3u兼容的媒质无关接口MII(Media Independent Interface),用以支持在其它媒质上的应用。此外,Ax88796还提供可选用

36、的标准打印接口,可用于连接打印设备或用作通用I/O端口Ax88796的地址总线SA9:0与数据总线SD15:0分别与CPU的地址/数据总线相连。CPU通过I/O读写NE2000寄存器来控制Ax88796的工作状态,通过远程DMA FIFOs与Ax88796的内部缓存SRAM进行数据交换。SRAM与MAC核之间进行Local DMA将数据发送至MAC层,再经由内部的PHY层发送至RJ45接口,或者经过MII接口送至外部的物理层芯片。如图4-5为接口电路图:图4-5 以太网接口电路图第5章 系统软件设计嵌入式系统就是一应用为中心、以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、

37、体积、功耗等严格要求的专用计算机系统。基于Linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主机(PC机)所构成。目标板用于运行操作系统和系统应用软件,而目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主机来完成。双方之间一般通过串口、并口或以太网接口建立连接关系。需要的软件工具包括:1, FTP客户端程序。2, Telnet工具。3, 移植到某一特定ARM平台的Linux操作系统内核源码。4, GUN编译工具。5.1 软件开发系统的搭建5.1.1 Linux 交叉开发模式Linux交叉开发采用宿主机和目标机的模式进行。宿主机是一台运行Linux的PC机,目标

38、机为S3C2410。开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,这种代码不能在宿主机上执行,只能在目标机上执行。然后把可执行文件下载到目标机上运行。调试的方法很多,可以使用串口、以太网口等,具体使用哪种调试可以通过目标机处理器提供的支持做出选择。Linux交叉开发包括Linux内核的开发和Linux应用程序的开发。1, Linux内核的开发:下图5-1为Linux系统的开发流程。在主机的Redhat Linux操作系统下安装Linux发行包以及交叉编译器arm-linux-gcc。然后对Linux进行配置(make menuconfig)并选择适合本实验系统的相关配置,

39、配置完成后进行编译生成Linux映像文件zImage。然后通过u-boot的tftp命令将该文件下载到目标板并执行。图5-1 Linux内核开发流程2, Linux应用程序的开发:Linux应用程序的开发在宿主机异端的操作与内核开发类似,都使用arm-linux-gcc编译器应用程序,不同的是,编译生成elf格式的文件不是Linux映像文件。编译生成的应用程序可以通过多种方式进行调试,下面介绍几种我们的系统中可以使用的方式:(1) Linux应用程序以文件的方式直接将elf格式的文件加入到Linux文件系统中,然后更新整个文件系统,然后运行目标机Linux系统并运行应用程序。(2) 运行目标机

40、Linux系统,然后在目标机Linux系统中通过一些工具软件将宿主机中德应用程序通过以太网下载到目标机Linux系统,如NFS、FTP、TFTP等。(3) 在宿主机端将Linux应用程序拷贝到U盘,运行目标机Linux系统,然后在目标机Linux系统中通过挂在U盘,在U盘中运行应用程序。5.1.2 Linux 宿主机环境的建立与安装在进行嵌入式开发前的第一步工作就是要安装一台装有指定操作系统的PC机作为宿主机,对于嵌入式Linux,宿主机上操作系统一般为RedHat Linux6。1, 以太网的配置配置以太网前提必须是以太网卡已经配置正确,然后配置宿主机IP$ifconfig eth0 192

41、.168.0.121为了验证网络是否配置成功,可以在局域网内另外一台计算机上,在其终端输入:$ping 192.168.0.121如果ping通,表示网络连接已经建立。2, 配置TFTP服务器TFTP服务器的配置需要检查主机端的TFTP服务是否已经开通,此步骤只在第一次使用,以后可忽略在宿主机上执行:$setup选择System service:将其中的tftp一项选中,并去掉ipchains和iptables两项服务。然后还要选择Firewall configuration,选中No firewall。最后,退出setup,执行如下命令启动tftp服务:$service xinetd res

42、tart3, 配置NFS服务器可以通过主机系统的图形界面来配置NFS服务,命令的配置如下:编辑/etc.exports文件,设置如下:$vi /etc/exports在该空文件中添加如下行:/(rw)其中“/tftpboot”是共享的目录,也是目录系统的根文件系统目录:“192.168.1.46”表示该服务提供所有的主机和网络。然后重启nfs服务,刚才的设置就生效了。5.1.3 ARM下Linux内核的配置和移植1,Linux内核配置7首相以ROOT身份进入系统。在shell命令下输入命令进行内核配置:make menuconfigS3C2410中德Linux内核可以根据不同的系统需要进行裁剪

43、与配置,以达到专用、精简的效果。2,Linux内核编译内核配置好之后生成文件.config,用户根据自身需要选择适当的功能和选项,它保存这个配置信息,下一次再执行make menuconfig的时候将生成新的.config文件输入命令:make dep输入命令:make clean输入命令:make zImage通过各个目录的Makefile进行,将会在各个目录下生成一系列目标文件,上述步骤完成后,就完成看对Linux的编译工作。Linux内核的编译、修改、移植实际上与上层的应用程序,命令解释器shell、登陆程序login相关。这些程序应根据需要重新定制。3,Linux内核移植8利用终端仿真

44、DNW和Bootloader引导程序通过串口发送指令,用网线通过tftp传递内核代码数据,就可以把Linux内核移植到目标板上。移植完成后,Linux就可以在目标板上运行了。5.2 CAN模块软件设计在CAN模块的程序设计中,主要包括CAN应用程序的设计,因为CAN模块驱动程序已经给出,应用的时候加载一下即可。5.2.1 CAN的驱动程序1、在程序can.c中,驱动程序首先执行初始化s3c2410_mcp2510_init函数,之后引入can驱动程序的具体操作集6:static struct file_operations s3c2410_fops = owner: THIS_MODULE,w

45、rite: s3c2410_mcp2510_write,read: s3c2410_mcp2510_read,ioctl: s3c2410_mcp2510_ioctl,open: s3c2410_mcp2510_open,release: s3c2410_mcp2510_release,;2、CanData数据结构typedef struct unsigned int id; /CAN总线IDunsigned char data8; /CAN总线数据unsigned char dlc; /数据长度int IsExt; /是否是扩展帧int rxRTR; /是否是远程帧CanData, *PCa

46、nData;通过makefile文件可以编译连接生成目标文件can.o。通过如下命令可以将驱动加载进去$insmod can.o就将驱动程序加载进去了。5.2.2 CAN应用程序设计static void* canRev(void *t)CanData data;int i;DPRINTF(can recieve thread begin.n);for(;)read(can_fd,&data,sizeof(CanData);for(i=0;iMAX_CANDATALEN;len-=MAX_CANDATALEN)memcpy(data.data,pstr,8);write(can_fd,&data,sizeof(data);pst

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号