嵌入式linux, CAN 驱动有关问题

2023-05-16

与can相关的文件有

1. linux3.0.1源码包中的:

drivers/net/can/mcp251x.c与Kconfig文件(将mcp251x.c中spi_board_info[] 中的.modalias="mcp2510"设为"mcp2515")是不是此处原因待查!

drivers/spi/spi_s3c64xx.c

net/can 所有文件

Document/spi

Document/can.txt 有关于socket CAN 编程的相关知识

2. linux 3.0.1系统中的相关操作

ifconfig

不出现can0网卡

more /proc/net/dev

有can0网卡

ifconfig can0 up

出现

[root@FORLINX6410]# ifconfig can0 up
mcp2515 spi1.0: bit-timing not yet defined                                      
mcp2515 spi1.0: unable to set initial baudrate!

根据linux3.0.1用户手册进行波特率设置

 up link set can0 up type can bitrate 250000

ifconfig

出现can0网卡

ifconfig can0 up

之后根据Document/can.txt 有关于socket CAN 编程的相关知识进行网络编程。

 


但是在开发板/dev目录下始终没有生成spi设备文件?????why??????

使用linux自带的spi_s3c24xx.c驱动后,/dev无法找到自动创建的接点,/proc/devices中也没有,但是把spidev.c文件编译模块后,/proc/devices中就有了major=153的设备了

 spi_s3c24xx.c本身并没有生成设备节点,spidev.c的任务就是为了再user space访问spi设备而设,就是通过它来进行spi设备的读写。详细方法请阅读内核Documents/spi目录下的例子。


 在加载spidev.ko后,生成spidev0.1 153 0接点了

附外解决方法:(参考)

1、在配置Linux 编译选项时,开启相应的SPI 选项,如下所示 
    -> Device Drivers 
      -> SPI support 
       SPI support 
          *** SPI Master Controller Drivers *** 
      -*- Bitbanging SPI master 
      <*> Samsung S3C24XX series SPI 
      < > Samsung S3C24XX series SPI by GPIO 
          *** SPI Protocol Masters *** 
      < > SPI EEPROMs from most vendors 
      <*> User mode SPI device driver support 
      < > Infineon TLE62X0 (for power switching) 
设置完成保存。

2.驱动文件mcp251x.c mcp251x.h can.h

文件mcp251x.c放在目录drivers/net/can/下;

文件mcp251x.h放在目录include/linux/can/platform/下;

文件can.h放在目录include/linux/can/

3.添加配置文件drivers/net/can/Kconfig

在文件中添加

config CAN_MCP251X

tristate "Microchip 251x series SPI CAN Controller"

depends on CAN && SPI

default N

---help---

  Say Y here if you want support for the Microchip 251x series of

  SPI based CAN controllers.

4.在drivers/net/can/Makefile文件中添加编译文件

obj-$(CONFIG_CAN_MCP251X) += mcp251x.o

5. 修改文件arch/arm/mach-s3c2410/mach-smdk2410.c中添加spi板级启动信息
#include <linux/spi/spi.h>
#include <asm/arch/spi.h>       //包含s3c2410_spi_info结构体

#include <linux/can/platform/mcp251x.h>  //包含struct mcp251x_platform_data结构体

static struct mcp251x_platform_data mcp251x_info = {

        .f_osc = 16000000,

        //.oscillator_frequency = 19000000,

        //.board_specific_setup = myboard_mcp251x_initfunc,

        //.device_reset = myboard_mcp251x_reset,

        //.transceiver_enable = NULL,

};

static struct spi_board_info spi_board_info[] __initdata = {

[0]=

{

        .modalias       = "mcp251x", //这个名称一定要与mcp251x.c驱动中

//proc函数中的.name要一致

        .platform_data  = &mcp251x_info,  //上面的结构体

        .irq              = IRQ_EINT3,            中断端口号

        .max_speed_hz  = 8000000,            //spi最大的速度

        .bus_num        = 0,            //spi01中选择spi0

        .chip_select      = 0,            //多个芯片选择

},

};

static struct s3c2410_spi_info s3c2410_spi0_platdata = {

        .pin_cs = S3C2410_GPG2,     //片选端口指定

        .num_cs = 1,                  //总共端口数

       // .bus_num = 0,

}; 

smdk2410_devices数组中添加
&s3c_device_spi0
smdk2410_init函数中添加
s3c_device_spi0.dev.platform_data= &s3c2410_spi0_platdata;
spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));

4.重新编译内核

启动信息中有如下内容,说明成功了:

 

执行命令cat /proc/devices

显示252 mcp251x

  添加设备文件 mknod /dev/mcp251x c 252 0(主次设备号参照 /drivers/spi/spidev.c  MAJOR:153 MINOR:32-256 )

执行应用程序

./can_test

显示如下

  基本完成,接下来是接上硬件调试了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式linux, CAN 驱动有关问题 的相关文章

  • 马化腾五兄弟:难得的创业团队

    http www donews com people 201105 455471 shtm 腾讯的马化腾创业5兄弟 xff0c 堪称难得 xff0c 其理性堪称标本 12年前的那个秋天 xff0c 马化腾与他的同学张志东 合资 注册了深圳腾
  • 选择创业团队的类型

    从不同的角度 层次和结构 xff0c 可以划分为不同类型的创业团队 xff0c 而依据创业团队的组成者来划分 xff0c 创业团队有星状创业团队 xff08 Star Team xff09 网状创业团队 xff08 Net Team xff
  • MQTT3.1与UDP时效性分析

    前言 MQTT 3 1协议在弱网络环境下 xff08 比如2G 3G等 xff09 表现不够好 xff0c 因此才有了反思 弱网环境下表现 手机等终端在弱网络环境下丢包情况会非常明显 xff0c 连接MQTT Server成功率很低 相比单
  • Android APP开机自启动基本方法

    前言 应用自启动主要是通过接收系统广播BOOT COMPLETED来实现的 xff0c 在receiver中执行APP启动的方法 实现 主要分为两个部分 xff1a AndroidManifest xml配置 xff0c 包括权限配置和广播
  • gitlab markdown 支持TOC解决办法

    问题分析 1 标题的锚点会被替换 中文替换为 39 39 空格等非正常字符替换为 39 39 这给自己手动写toc也带来了麻烦 不能直接复制标题作为链接 2 不能自动生成TOC 目前gitlab不支持TOC功能 解决方法 1 解决中文问题
  • 数据科学家能力发展路线图

  • 每秒处理10万订单乐视集团支付架构

    随着乐视硬件抢购的不断升级 xff0c 乐视集团支付面临的请求压力百倍乃至千倍的暴增 作为商品购买的最后一环 xff0c 保证用户快速稳定的完成支付尤为重要 所以在15年11月 xff0c 我们对整个支付系统进行了全面的架构升级 xff0c
  • 一次心惊肉跳的服务器误删文件的恢复过程

    经历了两天不懈努力 xff0c 终于恢复了一次误操作删除的生产服务器数据 对本次事故过程和解决办法记录在此 xff0c 警醒自己 xff0c 也提示别人莫犯此错 也希望遇到问题的朋友能找到一丝灵感解决问题 事故背景 安排一个妹子在一台生产服
  • WIFI模块的各种配网方式之比较(串口AT、SmartConfig、微信Airkiss、WEB网页配网....)

    WIFI模块的各种配网方式之比较 如何对WIFI模块进行配网 xff1f 串口AT xff1f 微信Airkiss xff1f SmartConfig xff1f No xff01 WEB网页配网最简单 最方便 所受限制也最少 xff01
  • Android studio2.3.2 配置kotlin、Anko

    祝 xff1a 本文配置基于Android studio 2 3 2 xff0c gradle3 3 jdk1 8 1 下载kotlin插件 打开Settings面板 xff0c 找到Plugins选项 xff0c 点击Browse rep
  • TCP/UDP的套接字Socket通信工作流程

    一 面向连接的套接字Socket通信工作流程 为了实现服务器与客户机的通信 服务器和客户机都必须建立套接字 服务器与客户机的工作原理可以用下面的过程来描述 1 服务器先用 socket 函数来建立一个套接字 用这个套接字完成通信的监听 2
  • VirtualBox 如何能捕获/释放鼠标

    xff11 xff0e 热键的选项 xff1a 鼠标集成不选择 xff12 xff0e 当你点击虚拟机的时候会出现下图 xff0c 选择捕获就可以了 xff13 xff0e 但你无法移出到外面主机的时候 xff0c 按住键盘右侧的Ctrl移
  • onNewIntent触发的时机

    前提 ActivityA已经启动过 处于当前应用的Activity堆栈中 当ActivityA的LaunchMode为SingleTop时 xff0c 如果ActivityA在栈顶 且现在要再启动ActivityA xff0c 这时会调用o
  • tomcat各版本下载地址

    https archive apache org dist tomcat
  • Android屏幕尺寸适配常见方案smallestWidth

    前言 介于目前的Android设备存在有不同的屏幕尺寸 xff0c 屏幕分辨率 xff0c 像素密度 xff0c Android应用在开发的过程必须要考虑到屏幕尺寸适配的问题 xff0c 以保证在不同尺寸的Android设备上都能够正常运行
  • 奇数阶魔方阵!

    import java util Scanner public class Test5 打印 魔方阵 所谓的魔方阵是指这样的方阵 xff0c 它的行 列 对角线元素之和均相等 以下是奇数阶魔方阵 xff01 xff01 xff01 xff0
  • 基于Python高光谱遥感影像处理实例

    前言 在写波段配准相关代码时经常需要用到tif影像的波段合成和分解 xff0c 虽然可以用ENVI才处理 xff0c 但是每次都要打开再设置一些参数有些麻烦 xff0c 所以本着 独立自主 自力更生 的原则就写了些脚本来处理这个需求 又写了
  • 基于SIFT的图像Matlab拼接教程

    前言 图像拼接技术 xff0c 将普通图像或视频图像进行无缝拼接 xff0c 得到超宽视角甚至360度的全景图 xff0c 这样就可以用普通数码相机实现场面宏大的景物拍摄 利用计算机进行匹配 xff0c 将多幅具有重叠关系的图像拼合成为一幅
  • PyTorch 进行多步时间序列预测详细教程

    一 前言 Encoder decoder 模型提供了最先进的结果 xff0c 可以对语言翻译等 NLP 任务进行排序 多步时间序列预测也可以视为 seq2seq 任务 xff0c 可以使用编码器 解码器模型 本文提供了一个Encoder d
  • PERSIANN 降雨数据使用教程

    一 前言 PERSIANN xff0c 使用人工神经网络从遥感信息中估算降水 xff0c 是一种基于卫星的降水检索算法 xff0c 可提供近乎实时的降雨信息 该算法使用来自全球地球同步卫星的红外 IR 卫星数据作为降水信息的主要来源 红外图

随机推荐

  • 基于Pyqt5快速构建应用程序详细教程

    一 介绍 图形用户界面 xff0c 更广为人知的名称是 GUI xff0c 是当今大多数个人计算机的一个特征 它为不同计算技能水平的用户提供了直观的体验 尽管 GUI 应用程序可能会使用更多资源 xff0c 但由于其点击式特性 xff0c
  • 基于Python的PROSAIL模型介绍以及使用

    1 介绍 PROSAIL是两种模型耦合得到的 SAIL是冠层尺度的辐射传输模型 xff0c 把冠层假设成是连续的且具有给定几何形状和密度的水平均匀分布的介质层 xff0c 从而模拟入射辐射与均匀介质之间的相互作用 xff0c 具体还是挺复杂
  • 关于VS中LNK1120与errorLNK2019问题

    最近遇到了该问题 xff0c 再查找了一些资料后 xff0c 发现了针对自己问题的解决方法 xff0c 贴出来让大家一起学习一下 其实如果这两个问题同时出现 xff0c 很可能不是链接库缺了lib xff0c 而是编译中添加的源没有被实例化
  • PCL—低层次视觉—点云分割(基于凹凸性)

    转自 xff1a http www cnblogs com ironstark p 5027269 html PCL 低层次视觉 点云分割 xff08 基于凹凸性 xff09 1 图像分割的两条思路 场景分割时机器视觉中的重要任务 xff0
  • 【ENVI入门系列】13.分类后处理

    原文地址 xff1a ENVI入门系列 13 分类后处理 作者 xff1a ENVI IDL中国 版权声明 xff1a 本教程涉及到的数据提供仅练习使用 xff0c 禁止用于商业用途 目录 分类后处理 1 概述 2 分类后处理 2 1 小斑
  • ENVI神经网络工具参数和使用方法

    原文地址 xff1a ENVI神经网络工具参数和使用方法 作者 xff1a pengheligis xff08 1 xff09 Activation xff1a 选择活化函数 对数 xff08 Logistic xff09 和双曲线 xff
  • Android中依赖版本统一管理

    前言 在Android的实际开发中 xff0c 我们会经常使用到多Module开发 xff0c 而当我们修改一些版本信息或者SDK升级时 xff0c 可能涉及多个Module都需要修改 显然逐个修改Module中的build gradle文
  • 详解使用pscp命令Linux文件上传与下载

    一 上传 2 开始 运行 cmd进入到 dos模式输入以下命令 以下是代码片段 xff1a pscp D java apache tomcat 5 5 27 webapps szfdc rardev 64 192 168 68 249 ho
  • 二进制的表白

    没能提起勇气对她进行表白 xff0c 只能寄托于0 1代码记录下对你的喜欢 01000101 01110110 01100101 01101110 00100001 01001001 00100000 01101100 01101111 0
  • java 去除或者替换字符串里面的数字或者字母

    package testPattern import java util regex Matcher import java util regex Pattern public class TestPattern 64 param args
  • python机器学习之scikit安装

    scikit是Python很容易上手的第三方库 下面介绍一下安装过程中遇到的问题 环境是 xff1a win32 43 python27 安装scikit需要安装numpy和scipy 很多教程都会选择使用easy install或者pip
  • 【Windows批处理】交互界面设计

    echo off cls title 终极多功能修复 menu cls color 0A echo span class token keyword echo span span class token operator span span
  • Mac下AndroidStudio报错macMissing essential plugin:org.jetbrains.android Please reinstall Android Studio

    在Mac环境下升级Android studio时报如下错误 xff1a Missing essential plugin org jetbrains android Please reinstall Android Studio from
  • Tensorflow中使用tfrecord方式读取数据

    前言 本博客默认读者对神经网络与Tensorflow有一定了解 xff0c 对其中的一些术语不再做具体解释 并且本博客主要以图片数据为例进行介绍 xff0c 如有错误 xff0c 敬请斧正 使用Tensorflow训练神经网络时 xff0c
  • Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

    需求 xff1a 假设有如下json字符串 xff1a 34 companyID 34 34 15 34 34 employees 34 34 firstName 34 34 Bill 34 34 lastName 34 34 Gates
  • linux 更改桌面程序图标的方法

    linux 更改桌面程序图标的方法 xff1a 打开个文本编辑器 xff0c 将图标拖到里面 xff1a 其中 xff1a Icon就是图标路径 xff0c 在里面输入你喜欢的图片就行了
  • Android独立Module运行

    前言 Android组件化中我们经常会将逻辑组件到各个Module中 xff0c 为了进一步提高开发效率 xff0c 避免不必要的编译时间浪费 xff0c 我们可以通过对Module中build配置进行进行设置 xff0c 以使各个业务单元
  • 对于人工智能,你有怎样的认识和理解?

    作为最初级的程序员 xff0c 对于高深的技术总是望尘莫及 xff0c 而高大上的人工智能更是让我们感觉遥远 xff0c 不过路都是一步步走出来的 xff0c 只要一直走 xff0c 总有触及到的一天 今天就来聊聊你对于人工智能的认识吧 x
  • 查看linux系统的glibc版本

    查看linux系统的glibc版本 getconf GNU LIBC VERSION span class token comment 或者 span ldd version
  • 嵌入式linux, CAN 驱动有关问题

    与can相关的文件有 1 linux3 0 1源码包中的 drivers net can mcp251x c与Kconfig文件 xff08 将mcp251x c中spi board info 中的 modalias 61 34 mcp25