Linux状态下的GPIOs文档:
通用输入输出(GPIO)是一种灵活的软件控制数字信号.它们由多种芯片提供,对于使用嵌入式和自定义硬件的Linux开发人员来说非常熟悉。
如果我们能够控制一个引脚的行为,那么为什么芯片上的所有引脚都不是GPIOs呢?
或
我们如何通过软件为芯片上的引脚提供功能?
请解释一下。
发布于 2017-06-13 07:09:30
当您设计集成电路(芯片)时,您在设计时考虑了某种组件模型,这些内部组件可能有特定的需求,无法在不同的引脚之间重新分配,那么这些引脚就是固定的功能。
例如,与内存控制器相关的引脚具有非常严格的性能要求(在信号完整性、切换速率、输出驱动程序、电容方面),这些引脚是固定功能不可重分配的,因此不能将这些引脚用于GPIO。如果您这样做,您将以一个较慢的芯片结束,因为额外的电路改变这些值变得不可行。其他例子是功率域引脚(这些引脚被称为VCC、VDD、VEE、GND )。
这就是为什么GPIO引脚总是与诸如SPI、I2C、SMBUS这样的慢接口共享,而从不与SATA、DDR等快速接口共享。
在其他情况下,唯一的原因是,如果没有特定的组件,芯片就没有意义,例如,假设您必须拥有RAM内存,那么RAM专用引脚就不需要重新分配,因为您永远不会在没有RAM内存的情况下实现系统,也不会需要将这些引脚用于GPIO。
发布于 2017-06-07 11:50:21
SOC中的所有引脚都不是GPIO。映射为GPIO的一组特定的引脚。其他引脚被配置为特定的接口,如DDR,SPI,I2C.等等,包括时钟、数据和电源引脚。GPIO是通用引脚,可根据用户需求用于任何用途。它可用于处理IRQ,触发器重置,发光LEDs..etc。
例如,假设FPGA通过GPIOs连接到SOC。用户需要通过这些GPIO引脚编程FPGA。在SOC方面,用户需要编写一个具有上述顺序的特定程序来驱动这些GPIO来编写FPGA配置文件。
https://stackoverflow.com/questions/44411088
复制相似问题