linux系统中device tree的SPI描述
来源:互联网 发布:典韦 程咬金 知乎 编辑:程序博客网 时间:2024/05/16 10:46
SPI总线可以使用一个SPI主设备节点和多个SPI从设备为子节点描述。
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/devicetree/bindings/spi/spi-bus.txt
想要在dev目录中产生一个spidev节点的话可以增加下面的描述
spidev1: spidev@0 { compatible = "spidev"; /* appended from boardinfo */ reg = <0>; /* appended from boardinfo */ spi-max-frequency = <100000000>; /* appended from boardinfo */ enable-dma = <1>; /* appended from boardinfo */}; //end spidev@0 (spidev1)
最新的内核遇到compatible = “spidev”;这个属性会报出warnning,建议改为compatible =”rohm,dh2228fv”。
在dev目录下回产生一个 spidev#1.#2的节点,其中#2是描述中的reg属性。#1对应的是bus-num。
但是这个bus-num怎么得到的呢?翻看源码发现bus_num是动态产生的。
在3.7的时候产生的节点还是从1开始往上增加的。不知道从哪个版本开始从32756往下递减了。具体源码如下断,spi.c
//初始化dyn_bus_id为32756- static atomic_t dyn_bus_id = ATOMIC_INIT(0);+ static atomic_t dyn_bus_id = ATOMIC_INIT((1<<16) - 1);//bus_number 是从最大的数递减/* convention: dynamically assigned bus IDs count down from the max */if (master->bus_num < 0) { - master->bus_num = atomic_inc_return(&dyn_bus_id); + master->bus_num = atomic_dec_return(&dyn_bus_id); dynamic = 1;}
所以bus_num 数字开始从最大数字往下变化,为何这样改其目的不得而知,只是开发中出现了一个坑。如果真的想要保持原来的节点,只需要把这里的(-)部分code替换带(+)代码。
0 0
- linux系统中device tree的SPI描述
- device tree中对PCIe的描述
- Linux 3.10 ARM Device Tree 的初始化
- Linux 3.10 ARM Device Tree 的初始化
- Linux 3.10 ARM Device Tree 的初始化
- Linux 3.10 ARM Device Tree 的初始化
- Linux 3.10 ARM Device Tree 的初始化
- linux内核device tree的初始化流程
- Linux 3.10 ARM Device Tree 的初始化
- Linux 3.10 ARM Device Tree 的初始化
- Linux 3.10 ARM Device Tree 的初始化
- Linux Device Tree Usage
- linux device tree
- Linux ARM Device Tree
- Linux ARM Device Tree
- Linux ARM Device Tree
- Linux Device Tree
- linux device tree相关
- 一次启动tomcat失败的案例
- node-oracledb 安装
- 开发移动应用程序的三种选择:原生、HTML5或混合
- 底部导航栏的几种实现方式
- 百度地图canvas自定义轨迹
- linux系统中device tree的SPI描述
- ECharts简介
- 换了阿里云的maven源之后,整个世界都美好了
- .net操作SQL数据库中的几种方式
- 网络编程(56)—— Windows下使用IOCP构建socket服务端
- listView的 Adapter优化
- Golang ReverseProxy 简单的反向代理用于内网穿透
- angularjs 拦截器解析
- Android开发之splash界面