首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
一种基于ARM的嵌入式网关系统设计与实现
来源:本站整理  作者:佚名  2009-08-03 15:54:24




2 协议转换流程
    当CAN总线上的设备向Ethernet网发送数据时,嵌入式网关将接收到的CAN数据包解析,提取数据域中的内容;然后按照TCP/IP协议进行封装,嵌入式网关将经过封装的数据发送给以太网控制芯片RTL8019AS。由RTL8019AS自动给这些数据添加以太网物理层和逻辑链路层所需的相关信息,通过物理接口传送到以太网。反之,当以太网向CAN总线上设备发送TCP/IP数据包时,它首先将数据发送到RTL8019AS,嵌入式网关从RTL8019AS中接收到数据后,提取实际要传送的数据,然后封装成CAN总线数据格式,通过CAN总线将数据发送到网络中的现场设备。
    嵌入式网关硬件必须具有以太网接口和CAN总线接口,而软件要有TCP/1P协议栈和CAN总线驱动程序;通常嵌入式Linux内核中有完整的TCP/IP协议栈。由于REALTEK公司支持Linux的开发,Linux系统中已含有RTL8019AS芯片的通用驱动程序,CAN总线协议驱动并不是标准配置。因此,设计CAN总线接口及其编制驱动程序是实现嵌入式网关最主要的工作。


3 CAN驱动程序设计
    Linux驱动程序属于Linux内核的一部分,是嵌入式系统控制硬件的接口,它为用户屏蔽设备的工作细节,并向用户提供透明访问硬件设备的机制。驱动程序的开发在嵌入式系统开发中具有举足轻重的地位。开发出稳定、完备的驱动程序可提高整个系统的性能。
3.1 CAN驱动程序流程
    MCP2510的内部结构框图如图2所示。

    MCP2510内含3个发送缓冲器和2个接收缓冲器,同时还具有灵活的中断管理能力。CAN协议机负责与CAN总线的接口,SPI接口逻辑用于实现同MCU的通信,而寄存、缓冲器组与控制逻辑则用来完成各种方式的设定和操作控制。
    在Linux多任务操作系统中,CAN总线通信程序的设计可分为发送数据模块、接收等待模块和中断处理模块实现。系统中CAN总线的数据发送和接收是两个不同的线程。在驱动程序中建立数据发送和接收缓冲区。中断处理程序只负责填充(或读取)缓冲区中的数据,然后唤醒等待接收(或发送)数据的任务。数据的发送与接收都通过独立的缓冲区,并由中断来实现。操作系统的中断响应时间在软件上决定了CAN总线数据的最快收发速度。
3.2 CAN设备驱动程序的实现要点
3.2.1 CAN设备驱动操作函数
    CAN设备驱动程序最终提供给应用程序的是一个流控制接口,主要包括:open,realse,read,write,ioctl等操作。添加设备驱动程序,实际上就是给上述操作编写相应的程序代码。驱动程序加载到内核时,会首先运行驱动程序的初始化函数,然后等待系统调用在file_operations数据结构中定义的相关函数,实现对设备的操作。系统使用Linux 2.4.18版本,其文件系统接口被写义为:


    s3c2410_mcp2510_open负责对将要进行的I/O操作做好必要的准备工作,主要包括限制CAN打开次数、清空3个发送缓冲区和2个接收缓冲区等。
    s3c2410_mcp2510_write将要发送的数据通过SPI总线将数据传送MCP2510的发送缓冲器,再通过MCP2510将数据发送到CAN总线。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:178,945.30000 毫秒