#
# Non-8250 serial port support
#
# CONFIG_SERIAL_AMBA_PL010 is not set
# CONFIG_SERIAL_AMBA_PL011 is not set
CONFIG_SERIAL_HS_LPC32XX=y
CLCD: Phytec LCD hardware, QVGA portrait display
Console: switching to colour frame buffer device 30x40
Serial: 8250/16550 driver4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0x40090000 (irq = 9) is a 16550A
console [ttyS0] enabled
serial8250.0: ttyS1 at MMIO 0x40080000 (irq = 7) is a 16550A
serial8250.0: ttyS2 at MMIO 0x40088000 (irq = 8) is a 16550A
serial8250.0: ttyS3 at MMIO 0x40098000 (irq = 10) is a 16550A
lpc32xx_hsuart.0: ttyTX0 at MMIO 0x40014000 (irq = 26) is a lpc32xx_hsuart
lpc32xx_hsuart.0: ttyTX1 at MMIO 0x40018000 (irq = 25) is a lpc32xx_hsuart
lpc32xx_hsuart.0: ttyTX2 at MMIO 0x4001c000 (irq = 24) is a lpc32xx_hsuart
loop: module loaded
LPC32XX_mii_bus: probed
使用了udev后,无需手动建立设备节点了,在/dev/目录下已经有了ttyTX0~2节点,再次发送字符,可以正常了:
[root@nxp root]# ls /dev/ttyTX*
/dev/ttyTX0 /dev/ttyTX1 /dev/ttyTX2
[root@nxp root]# echo hello>/dev/ttyTX0
[root@nxp root]# echo hello>/dev/ttyTX1
[root@nxp root]# echo hello>/dev/ttyTX2
[root@nxp root]#
总结
为了更加方便实用,最好修改内核配置文件,在选中
CONFIG_MACH_LPC32XX_HSUART1_ENABLE
CONFIG_MACH_LPC32XX_HSUART2_ENABLE
CONFIG_MACH_LPC32XX_HSUART7_ENABLE
中的任何一个,都同时选中CONFIG_SERIAL_HS_LPC32XX,保证高速串口可以玩完全使用。
实际测试
目前还没有仔细配置IO复用情况,高速串口测试如下:
ttyTX0——UART1,能发能收
ttyTX1——UART2,能发不能收
ttyTX2——UART7,不能收发
新版本问题
2009-06-01,新版本的芯片高速串口不能使用,不能进行收发,引脚无信号。后来重新设置了UART_LOOP,禁止了全部串口的loopback功能,引脚有信号了:
文件:arch/arm/mach-lpc32xx/board-smartarm3250.c
601 //ABING
602 __raw_writel(0, io_p2v(0x40054008)); //turn off all uart's loopback
但是波特率不对,程序设置为115200,PC机需要使用128000才能正确接收。
波特率问题解决,drivers/serial/hs_serial_lpc32xx.c文件中计算有BUG,进行了如下修正,注释了73~76的代码:
70 /* Find the closest divider to get the desired clock rate */
71 div = uartclk / rate;
72 hsu_rate = (div / 14) - 1;
73 // if (hsu_rate != 0)
74 // {
75 // hsu_rate--;
76 // }