我正在写mcp3008驱动程序而不使用iio进行学习。 在这个阶段,我想要调用驱动程序的探测器。在Linux 4.9设备树中添加SPI slave设备rapbery pi

我已经附加我在DT弓/ ARM /开机/ DTS/bcm2708-RPI-b.dts代码

&spi0 {

pinctrl-names = "default";

pinctrl-0 = ;

cs-gpios = , ;

spidev0: [email protected]{

compatible = "spidev";

reg = <0>; /* CE0 */

#address-cells = <1>;

#size-cells = <0>;

spi-max-frequency = <500000>;

};

spidev1: [email protected]{

compatible = "spidev";

reg = <1>; /* CE1 */

#address-cells = <1>;

#size-cells = <0>;

spi-max-frequency = <500000>;

};

/* new device for mcp3008 */

aartyaa_3008{

compatible = "aartyaa_mcp3008";

reg = <0>;

#address-cells = <1>;

#size-cells = <0>;

spi-max-frequency = <1600000>;

};

};

我的驱动程序代码看起来像

static int mcp3008_probe(struct spi_device *spi)

{

int ret = 0;

struct mcp3008 *mcp = NULL;

const struct mcp3008_chip_info *chip_info;

dev_dbg(&spi->dev, "aaartyaa came in probe, master dev = %s\n",

dev_name(&spi->master->dev));

.

.

.

.

}

static const struct of_device_id mcp3008_of_ids[] = {

{

.compatible = "aartyaa_mcp3008",

},

{ },

};

MODULE_DEVICE_TABLE(of, mcp3008_of_ids);

static const struct spi_device_id mcp3008_ids[] = {

{"aartyaa_mcp3008", MCP3008},

{},

};

MODULE_DEVICE_TABLE(spi, mcp3008_ids);

static struct spi_driver mcp3008_driver = {

.driver = {

.name = "aartyaa_mcp3008",

.of_match_table = of_match_ptr(mcp3008_of_ids),

},

.id_table = mcp3008_ids,

.probe = mcp3008_probe,

//.remove = devm_mcp3008_device_release,

};

module_spi_driver(mcp3008_driver);

它是不是能注册并创建SPI设备 的dmesg =>

[ 213.352758] spi-bcm2835 20204000.spi: chipselect 0 already in use

[ 213.352781] spi_master spi0: spi_device register error /soc/[email protected]/aartyaa_3008

[ 213.352799] spi_master spi0: Failed to create SPI device for /soc/[email protected]/aartyaa_3008

spi_bcm2835和spi_bcm2835aux加入到系统。 正如我注意到的,插入它后,模块将添加到/ sys/bus/spi/drivers中。 探针未被调用,因为找不到匹配设备。

驱动程序的probe是如何调用,以及如何添加SPI设备在设备树

任何帮助将受到赞赏和感谢。

2017-06-23

pritam

+1

即使您想访问三个SPI从机,您的SPI主机也只有两个为芯片选择定义的引脚。 –

+1

spi1有3个CE引脚。或者您可以使用spi0并禁用其中一个spidev设备来窃取您的设备的CE引脚。它取决于您在40路接头上使用哪个引脚。最好使用DT覆盖而不是修改基本DT文件。 –

linux 从设备 spi,在Linux 4.9设备树中添加SPI slave设备rapbery pi相关推荐

  1. linux下spi添加设备,Linux Kernl添加spidev的设备节点

    一.spidev介绍 如果在内核中配置spidev,会在/dev目录下产生设备节点,通过此节点可以操作挂载在该SPI总线上的设备.用户空间通过该节点可以访问内核空间. 二.配置spidev设备步骤 在 ...

  2. linux 添加spi 驱动,Linux下SPI和IIC驱动免在设备树上添加设备信息的编写方法

    编写驱动时,一般需要往设备树上添加节点信息,这里提供一种直接在驱动中添加设备信息的方法. i2c的驱动模板如下 #include #include #define SENSOR_BUS_NUM 0 # ...

  3. pinctrl虚拟spi的linux驱动,LinuxSPI驱动.md

    --- ![](https://b3logfile.com/bing/20190517.jpg?imageView2/1/w/960/h/540/interlace/1/q/100) SPI 驱动框架 ...

  4. linux查找设备所在分片,Linux设备驱动统一模型解析

    soc节点指定了<0x0 0xe0000000 0x00100000>:此属性值指定对于1024KB范围的地址空间,在物理0x0处寻址的子节点映射到物理0xe0000000的父地址.通过这 ...

  5. linux spidev 应用_嵌入式Linux设备树语法总结

    1 设备树的说明 在写完嵌入式驱动总结后,对于设备树相关的语法和使用一直都想进行系统的描述,但是因为最近比较忙碌,所以一直拖到现在才完成初版,对于整个嵌入式Linux驱动开发中,设备树语法和构建是其中 ...

  6. nano spi flash linux构建指南

    title: nano spi flash linux构建指南 前言 本文介绍Licheepi nano SPI Flash镜像的制作过程.主要为小白首次入门做讲解! 制作嵌入式linux系统主要分四 ...

  7. linux uart寄存器 代替 printk,Linux驱动学习之设备树(设备树下的LED驱动实验),...

    Linux驱动学习之设备树(设备树下的LED驱动实验), 概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.相当于从驱动代码分离出来的配置文件,比如串口的波特率通过设 ...

  8. linux应用程序固件升级,一种多设备同步烧录Linux固件及应用程序的方法与流程...

    本发明涉及Linux系统技术领域,具体的说全自动化烧写Linux系统及其应用程序,主要是一种多设备同步烧录Linux固件及应用程序的方法. 背景技术: 随着计算机技术.互联网技术和单片机技术的深入发展 ...

  9. Spi cp2515 linux,基于MCP2515的Linux CAN总线驱动程序设计

    图3 MCP2515硬件连接图 5.MCP2515 Socket CAN驱动实现 FS2416平台使用Linux2.6.39的内核,内核中为MCP2515提供了Socket CAN驱动程序,我们只需为 ...

  10. linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx

    Linux内核驱动之spi子系统spi协议 概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构:支持多slave模式 ...

最新文章

  1. 复现经典:《统计学习方法》第18章 概率潜在语义分析
  2. 请问如何把.net framework框架集成在安装程序里头?
  3. Oracle 11g客户端及PLSQL Developer配置|Instant Client Setup-64位|OraClientLite11g_x86
  4. Spring学习笔记—最小化Spring XML配置
  5. 分支程序与循环程序设计-汇编实验二
  6. Vue移动端项目——Vant 移动端 REM 适配
  7. 42 可写成成三个整数的立方和
  8. “手把手教你学linux驱动开发”OK6410系列之01---模块编程
  9. sql server一对多怎么查询_Vlookup函数查找最后一个值和一对多查询
  10. java空间大战,看这篇足矣了!
  11. Hibernate中saveOrUpdate()和merge()的区别
  12. 谈谈培训机构的“骗局“给新人一些建议
  13. 求ax2+bx+c=0方程的解,要求(1) a=0,不是二次方程。(2) b2-4ac=0,有两个相同的实根。(3)b2-4ac>0,有两个不等的实根。(4)b2-4ac<有两个共轭的复根
  14. ppt太大怎么压缩变小一点?
  15. 基于等离激元的空间微分
  16. 量子计算机 量子不确定性_量子计算机将打破互联网,但前提是我们让它们
  17. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例55
  18. php支付宝红包接口,支付宝支付接口(即时到账交易接口)
  19. 网狐6603所有版本--新金典版本最新漏洞。
  20. 有了LIGO,引力波不仅可以被探测,还可以被发射!

热门文章

  1. cypress初识--看完就可以写一个简单web自动化脚本了!
  2. CRNN中英文字识别
  3. 配置 Android 的 SDK, DNK, JDK, ANT 环境
  4. Vue 视频音频播放
  5. redo log详解
  6. POJ 1753 Flip Game (当蒟蒻忘记scanf要读回车时,他自闭了
  7. Java 求向量夹角,坐标旋转
  8. H5播放flv视频流
  9. PT100热电阻接线方法
  10. CprimePlus 函数2