目前我的开发板上用UART0作为调试串口,由于项目需要,我要扩展一个485串口。请问我要怎么修改内核源码来实现uart1 作为485串口。
我使用内核版本:2.6.18
目前我自己修改了几个寄存器:
1、
主要修改在/arch/arm/mach-davinci/board-dm6467-evm.c里面的board_init函数中,之前这个函数的修改都去掉,在函数最后添加一个函数调用:davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN,DAVINCI_DM646X_LPSC_UART1,1);
然后在davinci_psc_config函数中,添加一个case语句:
case DAVINCI_DM646X_LPSC_UART1:/*bao*/
/* power up UART1 data */
val = davinci_readl(DAVINCI_VDD3P3V_PWDN);
davinci_writel(val & 0xFFFFFFBF, DAVINCI_VDD3P3V_PWDN);
/* select UART 16x mode */
val = davinci_readl(DAVINCI_UART1_BASE + 0x20);
davinci_writel(val & 0xFFFFFFF8, DAVINCI_UART1_BASE + 0x20);
/* generate THR interrupt */
val = davinci_readl(DAVINCI_UART1_BASE + 0x40);
davinci_writel(val | 0x00000008, DAVINCI_UART1_BASE + 0x40);
break;
但是我在读485串口的时候没问题,我开发板发送的时候发到5000个字节左右就就自动不发了,程序也没报错
Chris Meng:
你能参考一下e2e.ti.com/…/187717.aspx?看是否对你的问题有所帮助?
hant tony:
回复 Chris Meng:
谢谢