- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 imx6sx 硬件平台(NXP 嵌入式 ARM)上使用 Linux 3.14.52。
问题是在设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为/sys/class/gpio 结构中的设备,除非它们在内核引导期间存在。这些设备列在 /sys/bus/i2c/devices/i2c-1
(i2c 总线 1)结构中,但未在 /sys/class/gpio< 中给出 gpiochip/
结构。
有没有办法在将这些设备添加到系统后在启动后将它们指定为 gpiochip?
在以前的 (PowerPC) 平台上,设备树中列出的所有设备都被分配了 gpiochip,无论它们是否在内核引导期间打开。但是对于我们的 ARM 平台,设备必须在内核启动期间可用。我已尝试更改内核 i2c/gpio 选项(通过 .config)尽可能接近以前的平台,但这似乎没有效果。
最佳答案
可以肯定的是,内核在 2.6 内核分支中对 sysfs 的处理方式有所不同。我也遇到过类似的问题。它与设备树的处理有关。设备树将变得不平坦,但这只会启动实际的设备发现。如果设备实际上不存在,则不会对其进行探测,并且不会在 sysfs 中创建条目。
Linux board support code calls of_platform_populate(NULL, NULL, NULL, NULL) to kick off discovery of devices at the root of the tree. The parameters are all NULL because when starting from the root of the tree, there is no need to provide a starting node (the first NULL), a parent struct device (the last NULL), and we're not using a match table (yet). For a board that only needs to register devices, .init_machine() can be completely empty except for the of_platform_populate() call.
所以设备树只会告诉内核要发现什么,如果没有找到它实际上不会添加任何东西。
我可以确认 gpiochip 仅添加在您设备的探针上:
注意第 397 行对 gpiochip_add
的调用
我建议尝试将 gpio 扩展器设置为模块来编译您的内核,然后在实际附加后对其进行 insmod。
关于Linux, ARM : Why is gpiochip<num> only created if I2C GPIO Expander is present at boot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37168540/
假设有一个创建用户的操作。如果存在指定的电子邮件或用户名,此操作可能会失败。如果它失败了,则需要确切地知道原因。在我看来,有三种方法可以做到这一点,我想知道是否有明显的赢家。 所以,这是一个类用户:
var obj1 = Object.create; console.log(typeof obj1); var obj2 = Object.create(null); console.log(type
I am getting this error after running npm run build yield User.create({^在运行NPM Run Build Year Use
我应该为其他人将从中继承的第一个父对象传递哪个参数,哪个参数更有效 Object.create(Object.prototype) Object.create(Object) Object.creat
我正在尝试使用 JDBC(最新版本)设置 SQL Server 2008 数据库。 我有一个我想一起执行的 setup sql 命令列表: 基本上我做的是: connection.setAutoCom
我正在尝试创建一个 CloudFormation 模板来创建一个 Auto Scaling 组,以便我可以从中启动 2 个实例。 我已经创建了 Auto Scaling 组,但我不知道如何编写用于从
我正在创建我的第一个WordPress网站。我已经在我的网站上安装了Elementor Pro插件。随之而来的一个有利因素是“循环旋转木马”。。。当我把它添加到我的页面时,一切似乎都在工作,但是当我点
create-react-app error 我从终端运行yarn start时收到此错误消息...我尝试了sudo killall node和许多其他过程来清除i-node却没有成功。 我也将我的c
在 CRM 中,当我尝试设置工作流程时,我可以选择与某个实体的创建时间相关的超时。涉及三个字段。 记录创建于 创建于 修改时间 虽然最后一个很明显,但我看不出其他两个之间有任何逻辑上的区别。 最佳答案
我在一次采访中被问到这个问题。我无法回答。 "browserslist": [ ">0.2%", "not dead", "not ie <= 11", "not op_mini all" ] 我可以
这是一个 Rails 新手问题: 当我在模型上调用 create() 时,它会绕过关联的 Controller create 操作吗? 例如,这没有命中我的标签 Controller #create
我不明白这两种特权之间的区别。 我找到了这两种解释,但对我没有帮助。 CREATE TABLE -> Enables a user to create a table owned by that us
我是 SharePoint 工作流的新手。 创建新任务并分配 TaskId 时,我有两个选项: 创建一个新字段来保存 TaskId 创建一个新属性来保存 TaskId。 新属性是一个依赖属性。 我的问
我突然注意到我们的代码库中有一个TDataModuleTestExchange(nil)“构造函数调用”: procedure TDialoogConfigExchange.ButtonTestCli
我有一个具有 TComponent 变量的单元,我在单元初始化时创建此组件,如下所示: var XComp: TComponent; . . . . initialization begin
Composer 是否提供了更新项目创建时使用的包的方法?即,如果我使用以下内容创建一个新的 Laravel 项目 composer create-project --prefer-dist lara
在 Hibernate 中,如果我们将 hbm2ddl.auto 设置为 create/create-drop ,那么它将在启动时删除旧模式并创建新模式。这意味着,它也会删除数据?..我的疑问是,如果
我使用了 create an Automated Build 中的此链接 ( this guide ) . 浏览器错误控制台显示: https://hub.docker.com/v2/reposito
我已经搜索了 msdn 并没有找到答案。我应该知道有什么区别吗? 如果真的没有区别,那么为什么会存在这种冗余? --SQL Server Stored Procedure Syntax CREATE
我有以下内容: var CardViewModel = function (data) { ko.mapping.fromJS(data, {}, this); this.editin
我是一名优秀的程序员,十分优秀!