为什么芯片上的所有引脚都不是GPIO?

时间:2017-06-07 11:13:23

标签: linux gpio

Linux状态下GPIO的文档:

  

A"通用输入/输出" (GPIO)是一种灵活的软件控制   数字信号。它们由多种芯片提供,并且是熟悉的   使用嵌入式和自定义硬件的Linux开发人员。

如果我们能够控制引脚的行为,那么为什么芯片上的所有引脚都不是GPIO?

OR

我们如何通过软件为芯片引脚提供功能?

请解释。

2 个答案:

答案 0 :(得分:2)

当您设计一个集成电路(芯片)时,考虑到某些元件模型,那些内部元件可能有特定的需求,不能在不同的引脚之间重新分配,那些引脚是固定功能。

例如,与存储器控制器相关的引脚具有非常严格的性能要求(在信号完整性,切换速率,输出驱动器,电容方面),这些引脚是固定功能不可重新分配,因此您不能将这些引脚用于GPIO 。如果你这样做,你将以较慢的芯片结束,因为额外的电路会改变这些值变得不可行。其他示例是电源域引脚(通常称为VCC,VDD,VEE,GND)。

这就是为什么GPIO引脚总是与SPI,I2C,SMBUS等慢速接口共享,但从不与SATA,DDR等快速接口共享。

在其他情况下,唯一的原因是因为芯片在没有特定组件的情况下没有意义,例如,鉴于您必须拥有RAM内存,那么RAM专用引脚不需要重新分配,因为您永远不会实现没有RAM的系统内存,永远不需要重用那些引脚用于GPIO

答案 1 :(得分:1)

SOC中的所有引脚都不是GPIO。一组特定的引脚映射为GPIO。其他引脚配置为特定接口,如DDR,SPI,I2C ......等,包括时钟,数据和电源引脚。 GPIO是通用引脚,可根据用户要求用于任何目的。它可用于处理IRQ,触发复位,发光LED等。

例如,考虑通过GPIO将FPGA连接到SOC。用户需要通过这些GPIO引脚对FPGA进行编程。在SOC方面,用户需要编写一个具有上述顺序的特定程序来驱动那些GPIO来编程FPGA配置文件。