Linux kernel 如何在启动时初始化GPIO信号-fast?

Linux kernel 如何在启动时初始化GPIO信号-fast?,linux-kernel,embedded-linux,Linux Kernel,Embedded Linux,我的嵌入式Linux系统上有一些GPIO信号,需要设置为输出并驱动低电平。尽快 原则上,我认为我已经理解了设备树。我的理解是引导加载程序抓取设备树“blob”并将其传递给内核,内核将按照设备树中的指示配置硬件。我认为这一点的全部意义在于,除其他外,确保与设备的连接按照其应有的配置快速进行,从而避免出现“竞速”情况。虽然我对这些GPIO的设备设置正确地将它们设置为输出(我可以在我的应用程序运行后控制输出),但我真的希望它们在通电后的一秒钟内被初始化为低 我当前的PIN/PAD设置为: 0x0302

我的嵌入式Linux系统上有一些GPIO信号,需要设置为输出并驱动低电平。尽快

原则上,我认为我已经理解了设备树。我的理解是引导加载程序抓取设备树“blob”并将其传递给内核,内核将按照设备树中的指示配置硬件。我认为这一点的全部意义在于,除其他外,确保与设备的连接按照其应有的配置快速进行,从而避免出现“竞速”情况。虽然我对这些GPIO的设备设置正确地将它们设置为输出(我可以在我的应用程序运行后控制输出),但我真的希望它们在通电后的一秒钟内被初始化为低

我当前的PIN/PAD设置为:

0x03029:
PAD_CTL_PUS_100K_DOWN + 
PAD_CTL_PKE + 
PAD_CTL_ODE + 
PAD_CTL_DSE_48ohm + 
PAD_CTL_SRE_SLOW
但我得到的结果是产出很高

Stack Overflow中的一篇文章接近我的问题,但是解决方案谈到使用/etc/rcxx文件来影响这个结果。但是,它们在加载内核的很晚之后才会执行,对吗?我真的在寻找一种在通电/复位后<1秒钟内启动的解决方案


谢谢。

Linux内核并不急于按照您的设想初始化硬件。要求是,事先的系统重置已使所有外围设备静止到已知状态。如果您需要尽快将信号设为低电平,则让引导程序配置该输出,或在硬件中使用弱下拉电阻进行配置。修补引导加载程序以正确设置pin,然后在驱动程序中的操作系统中请求pin,而不更改其配置(在Linux中,`gpiod_get(…,gpiod_-ASIS)谢谢你们两位的回复。迟早我会为此和其他一些原因深入研究引导加载程序。但目前看来,下拉电阻器是我最好的选择。