linux socket 安装,Linux Socket CAN

本文详细介绍了在Linux-3.9.7内核上针对EM9287工控主板实现CAN驱动的方法,包括内核配置、Socket CAN驱动加载及测试。通过配置Freescale的FlexCAN模块,使用Socket CAN接口,简化了CAN设备的编程,并提供了配置波特率的示例代码。
摘要由CSDN通过智能技术生成

http://www.emtronix.com/article/article2013603.html

一、简述

EM9287工控主板CPU为Freescale 的iMX287,主频454MHz,以具有丰富的通讯接口为特色,可同时支持双网口、7路串口、32路GPIO、SPI、I2C以及CAN通讯等接口。CAN是一种在世界范围内广泛用于自动控制、嵌入式设备和汽车领域的网络技术,EM9287 的CAN通讯接口是通过FlexCAN模块来实现控制局域网络协议(CAN)通信的,FlexCAN模块同时支持CAN协议规范2.0,包括协议所规定的标准帧和扩展帧。

Linux下最早使用CAN的方法是基于字符设备来实现的,在EM9287上移植的Linux-3.9.7内核中FlexCAN模块驱动实现的是Socket CAN方式,Scoket CAN使用了socket接口和Linux网络协议栈,这种方法使得CAN设备驱动可以通过网络接口函数来调用,这样大大地方便了熟悉Linux网络编程的程序员,由于调用的都是标准的socket 函数,也使得应用程序便于移植,而不会因为硬件的调整而修改应用程序,这样加强了应用程序的可维护性。关于Socket CAN在Linux内核文档中有更为详细的介绍(/Linux-3.9.7/Documentation/networtking/can.txt)。

本文将简要介绍EM9287在Linux-3.9.7内核上如何实现CAN驱动以及如何在应用程序中使用Socket CAN。

二、Linux内核配置

内核配置中增加以下选项(make menuconfig):

Networking support --->

CAN bus subsystem support --->

Raw CAN Protocol (raw access with CAN-ID filtering)

Broadcast Manger CAN Protocol (with content filtering)

CAN Gateway/Router (with netlink configuration)

CAN Device Drivers --->

Platform CAN drivers with Netlink support

[*] CAN bit-timing calculation

Support for Freescale FLEXCAN based chips

EM9287移植的是Linux-3.9.7版本,对于硬件的描述和配置都是通过device tree相关文件进行传递,除了内核的配置外,还需要在相应的dst文件中增加can0节点。如:

can0: can@80032000 {

compatible = 'fsl,imx28-f

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值