你好:
在自己做的电路板上使用了UART0_DCD管脚做GPIO对外设控制,它是管脚复用的,如下
板卡使用了串口0作为调试口,写了一个驱动对这个gpio管脚配置,但加载驱动会发生如下情况

1)、显示Last login,为重新登录
2)、当前路径也发生变化了,变成了登录缺省root路径
编写了一个测试程序,测试程序对该管脚操作也会出现这种情况,程序会自动退出,显示新登录tty0
其它管脚控制正常(包括UART0_DSR、UART0_RIN)不会发生这样的事情。
UART0_DCD应该是Modem模式下的载波检测管脚,用来检测是否有设备连接,检测到设备连接自动登录等等。。。我想是不是这个起了作用。内核中也没有找到对这个管脚的配置,不知怎样屏蔽。。。
下面为对该管脚的大致操作:
//IO map for control register
regInData = ioremap(0x4804C000+0x138, 8);
regOutData = ioremap(0x4804C000+0x13C, 8);
regOutEn = ioremap(0x4804C000+0x134, 8);
regSetOut = ioremap(0x4804C000+0x194, 8);
regClearOut = ioremap(0x4804C000+0x190, 8);
regPin = ioremap(0x48140000+0xAC8, 8);
//pinmux as GPIO[1][18]
value = (*regPin & 0xFFFFFFF8) | 3;
*regPin = value;
//set out value
value = *regPin | 0x40000;
*regPin = value;
//as output
value = *regOutEn & 0xFFFBFFFF;
*regOutEn = value;
//clear pin
*regClearOut = 0x40000;
其它管脚都好使,就UART0_DCD不行。请多帮助!!
Louis:
你好,
查看了一下手册,UART0_DCD信号只从N5这个pin脚出来,既然使用了UART0作为调试口,应该保证UART0的功能所有Pin脚均配置为串口模式,而从你的描述来看,应该是UART与GPIO产生了冲突。
Louis:
回复 Louis:
如果使用其他串口未调试口,如UART2,从而禁用UART0,并去掉初始化部分,再测试一下?
Wesley:
回复 Louis:
evm和dvr设计做使用此口做gpio,如下:
请帮忙多看看,现在卡在这里了。
Wesley:
回复 Louis:
evm和dvr使用了此口
uart2没有引出来,uart1没有加电平转换芯片,我也找个232芯片飞上看看,请你多分析下。
Louis:
回复 Wesley:
在DVR的设计当中,我们没有使用UART0作为调试串口,而是使用的UART2,同时在board_init中初始化UART2。
/* UART2 registers */#ifdef CONFIG_TI816X#define DEFAULT_UART_BASE UART2_BASE#endif
Wesley:
回复 Louis:
嗯,谢谢。我会想办法使用Uart2来测试。
另:我想能够使tty0的shell重新登录可能是在内核中发生,中断或者轮询了该管脚的状态,如果找到这个地方进行修改能屏蔽此问题。
TI中文支持网
请帮忙多看看,现在卡在这里了。
uart2没有引出来,uart1没有加电平转换芯片,我也找个232芯片飞上看看,请你多分析下。
