免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2081 | 回复: 2
打印 上一主题 下一主题

[内核入门] linux内核启动后实现UART与普通IO的切换问题,请教各位!多谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-07 11:35 |只看该作者 |倒序浏览
我使用的是IMX6q,系统是linux10.0 ,BSP是官方最新的。
现在我在驱动一公司通讯芯片时,需要将UART与普通IO进行切换,例如:
UART1通讯时,要将UART引脚转换到普通IO来检测总线的电平状态,检测间隔6.6us,然后又切换到UART功能上去。

这种应用在单片机上很好实现,直接到一定时间去修改IO的功能,然后进行功能切换即可。
我现在是不清楚这种方式在IMX6q跑linux系统时能不能实现?

------------------------------------------------------------------------------------------------------
我在网上查阅资料如下:

初始化过的结构体和接口函数的定义都是带有"__init"和“__initdata”的,所以这些都只能在内核初始化代码中使用,一旦系统初始化结束并进入了文件系统,
这些定义都会被free。所有它们不能在内核模块(.ok)中被调用,否则你就等着Oops吧。因为一个芯片的引脚复用一般是硬件设计的时候定死的,一般不可能在启动后更改。
如果你是在要在模块中改变引脚复用配置,你只能通过自己ioremap相关寄存器再修改它们来实现。

------------------------------------------------------------------------------------------------------

请大神帮忙解释一下,内核启动后为什么不能修改IO的配置。

论坛徽章:
1
射手座
日期:2013-11-07 09:19:48
2 [报告]
发表于 2015-05-07 13:21 |只看该作者
可以实现。
通过驱动配置相应的寄存器即可,就如同在单片机上那样,但是要按照linux的方式来完成。
实现方式很多,比如写一个读写CPU寄存器的驱动模块,应用层通过该驱动的接口完成寄存器的配置。

但是不明白楼主这样设计的目的何在?可能的话,拿单独的GPIO完成电平检测的功能应该更合理。

论坛徽章:
0
3 [报告]
发表于 2015-05-07 13:37 |只看该作者
是这样的,有款驱动芯片是uart与IO复用的,所以需要进行频繁的切换。但是感觉您说的这种实现方式,不是那么方便啊。是不是需要自己去写一套驱动。回复 2# guocslock


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP