- 论坛徽章:
- 0
|
我使用的是IMX6q,系统是linux10.0 ,BSP是官方最新的。
现在我在驱动一公司通讯芯片时,需要将UART与普通IO进行切换,例如:
UART1通讯时,要将UART引脚转换到普通IO来检测总线的电平状态,检测间隔6.6us,然后又切换到UART功能上去。
这种应用在单片机上很好实现,直接到一定时间去修改IO的功能,然后进行功能切换即可。
我现在是不清楚这种方式在IMX6q跑linux系统时能不能实现?
------------------------------------------------------------------------------------------------------
我在网上查阅资料如下:
初始化过的结构体和接口函数的定义都是带有"__init"和“__initdata”的,所以这些都只能在内核初始化代码中使用,一旦系统初始化结束并进入了文件系统,
这些定义都会被free。所有它们不能在内核模块(.ok)中被调用,否则你就等着Oops吧。因为一个芯片的引脚复用一般是硬件设计的时候定死的,一般不可能在启动后更改。
如果你是在要在模块中改变引脚复用配置,你只能通过自己ioremap相关寄存器再修改它们来实现。
------------------------------------------------------------------------------------------------------
请大神帮忙解释一下,内核启动后为什么不能修改IO的配置。 |
|