与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,            //spi0,1中选择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.重新编译内核

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

5 执行命令cat /proc/devices

显示252 mcp251x

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

执行应用程序

./can_test

显示如下

基本完成,接下来是接上硬件调试了。

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

  1. linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第四十一章嵌入式Linux LED驱动开发实验 上一章我 ...

  2. linux内核创建字符节点,Tiny6410学习ing—(四)、嵌入式Linux内核驱动进阶—(7)、高级字符设备驱动(自动创建节点)—#931...

    按照国嵌的视频教程上来说的,最后就是-自动创建设备文件! 其实我感觉以前完全可以直接是手动创建了设备文件,然后就可以直接讲述自动创建设备文件,为啥非要拖到最后来讲述,我也就不清楚了!! 不管了,写完收 ...

  3. 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  4. 嵌入式linux设备驱动开发,嵌入式Linux设备驱动开发简介.pdf

    清远见--嵌入式培训专家 http :// "黑色经典"系列之<嵌入式Linux 应用程序开发详解> 11 章 嵌入式Linux 设备驱动开发 本章目标 本书从 6 章 ...

  5. 有限状态机的嵌入式Linux按键驱动设计(转载)

    本文转载自边缘之火<有限状态机的嵌入式Linux按键驱动设计(转载)> 原文链接:  http://www.eccn.com/design_2010052509381340.htm 秦国栋 ...

  6. 【正点原子MP157连载】第二十一章 嵌入式Linux LED驱动开发实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  7. 嵌入式 Linux 内核驱动开发【The first day: 36093万字】

    嵌入式 Linux 内核驱动开发[1] 嵌入式 Linux 内核驱动开发前言 第1章 Linux 内核裁剪和定制 [1]Linux 内核开发简介 [2] Linux 源码阅读工具 [1.2.1]Sou ...

  8. linux内核按键驱动,嵌入式Linux按键驱动框架

    前言 本文将通过轮询.中断.poll机制.异步通知和同步互斥阻塞等方式编写按键驱动程序.本节的驱动框架是在<嵌入式Linux驱动框架的搭建>的基础上进行改进的,所以本文只讲解修改的部分. ...

  9. 嵌入式 Linux LED 驱动开发实验

    41.1 Linux 下 LED 灯驱动原理 Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器.所以本章的 LED 灯驱动最 终也是对 I.MX6ULL 的 IO 口进行配置,与裸机实验不 ...

  10. 嵌入式Linux设备驱动面试题汇总

    大家平时在写驱动的时候,驱动相关的知识都会用到,但真到面试的时候,很难快速流畅的回答面试提出的问题,特意从网上收集整理网友遇到的问题 驱动大概的分为三部分:基础部分,同步相关,还有中断部分.中断,同步 ...

最新文章

  1. java记录pv,计算500万PV/每天的网站
  2. Seq(HDU-6672)
  3. redis-python操作redis
  4. 三层BP神经网络的python实现
  5. QTP模拟鼠标和键盘事件整理
  6. python应用系列教程——python使用scapy监听网络数据包、按TCP/IP协议进行解析
  7. 图解设计模式+代码(一):创建型模式
  8. MFC 进行界面设计与编程
  9. 计算机竞赛奖学金申请书,最新奖学金申请书(精选6篇)
  10. 白硕:人工智能的诗与远方,一文读懂NLP起源、流派和技术
  11. G33/G31芯片最佳分辨率1440×900
  12. 路由器回执路由配置_如何用console线连接路由器进行初始配置-----无私奉献版(转载请注明出处)...
  13. 大湿教我写程序(2)之走向AV之路
  14. aptio2018设置u盘启动_2018年U盘装系统bios设置U盘启动方法介绍
  15. 关于阿里云服务器的问题及答案(详细汇总)
  16. 虚拟机配置opc服务器,组态王怎么配置成opc服务器
  17. 电脑录音软件哪个比较专业
  18. C# 25. 获取windows串口号对应的串口(设备)名称
  19. 联想think station D30安装系统的时候找不到硬盘的解决方法
  20. 电商产品展示,选360°全景还是3D展示?

热门文章

  1. matlab yalmip安装教程,如何在matlab路径中安装yalmip Matlab R2014a添加yalmip图文教程
  2. 全国计算机等级考试二级教程第七章,2012年全国计算机等级考试二级VB入门教程第七章(1)...
  3. python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画
  4. [转]一文解释PyTorch求导相关 (backward, autograd.grad)
  5. 计算机网络-基本概念(8)【网络层】集线器、网桥和路由器的区别
  6. 再见 Win10系统!下一代操作系统要来了!!
  7. c++ list 修改_Cpython源码阅读17-list自动扩容原理
  8. java bean工厂_java-将Service用作“工厂”以返回不同的Bean...
  9. shiny html5代码,javascript – Shiny:如何正确包含Shiny HTML
  10. python截取后三位元素_python – 如何从BeautifulSoup的表中获取第一个和第三个td?...