这两天在imx6的内核里面使用GPIO仿spi完成我们的ssd2828的驱动,是开发的过程中遇到了一下疑惑也解决了一些问题,现记录如下:
1, Linux底下的GPIO的控制方式,开始都是以单片机的思维在考虑GPIO,翻阅资料和仔细阅读代码后发现解决问题的思路和办法是不一样的。
在网上找到一片很好的写gpio的文章,链接如下 http://blog.chinaunix.net/uid-27717694-id-3701921.html 这篇文章站在一定的高度看待了linux底下的gpio。
2,关于Linux底下GPIO的和mcu底下的GPIO的区别,由于Linux系统使用虚拟地址,不能使用寄存器直接控制gpio,需要申请在使用具体的函数对其进行控制。要使用系统的思想来看问题。
3, Linux系统底下每个GPIO都有专门的数字代码,没有个板子可以使用的代码范围可以不一样。具体的机制还要再看,因为我们看到我们使用板上对其的具体的约束。
4, 具体到ssd2828 的初始化,我如果将gpio仿的spi 放置LCD初始化话之前,在系统启动过程中会出现一段屏幕的花屏。放到LCD初始化之后在转换的时候是没有的。
5, 在board_mx6q_sabresd.h 中定义了板子固定初始化GPIO的pad ,这应该也是Linux系统底下,一种针对不同的思维,还需好好体会。
一个疑问:
Linux系统上不同板GPIO的pad初始化,是不是要包含所有要用的GPIO,或者说选来放进初始 pad的标准是什么?