原理图到代码 linux
这里以自己调试 wifi 为例,将自己学习到的东西记录下,以君正 x1000e halley2 为例
原理图
先看一个图
这里是 halley2 平台 wifi 芯片的原理图,其中需要关注的其实就红框中的,记住这个名字
WL_WAKE_HOST
WL_REG_EN
接着要发现这个名字有什么用
看这里,这个引脚分别对应 PC16,PC17
代码
这里的 PC16,PC17
,就开始与代码上相对应了,在代码上一般就以 GPIO_PC(16)
,GPIO_PC(17)
这样的宏来定义引脚。
当然,不同的平台会是不一样的名字,但基本规则是相似的,这时一般在 arch 目录下对应的平台中去找寻相关定义。比如这时候以 halley2 平台为例,就在 arch/xburst/soc-x1000/chip-x1000/halley2/halley2_v10
目录中。
#define GPIO_WIFI_RST_N GPIO_PC(17)
#define GPIO_WIFI_WAKE GPIO_PC(16)
这就是对应的定义,再看就是内核中如何定义这个 GPIO_PC 的
#define GPIO_PA(n) (0*32 + n)
#define GPIO_PB(n) (1*32 + n)
#define GPIO_PC(n) (2*32 + n)
#define GPIO_PD(n) (3*32 + n)
#define GPIO_PE(n) (4*32 + n)
#define GPIO_PF(n) (5*32 + n)
一般芯片提供商,会按这样的风格来定义具体的引脚,这种方式基本是通用的,其它的平台也可以类似这样来看。
总结
因为本身看过很多驱动的东西,但有些东西,可能因为太简单,不被关注,所以入门者就很难懂,也很难找到相关说明,就在这里记录一下吧。