This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

davinci dm6446 UART1 485的问题



大家好,我在davinci dm6446的linux-2.6.18_pro500上使用UART1来做485的收发,我的修改有:

1,增加

static struct uart_port serial_platform_data[] = {
{
        .membase  = (unsigned char __iomem *)IO_ADDRESS(DAVINCI_UART0_BASE),
        .mapbase  = (unsigned long)DAVINCI_UART0_BASE,
        .iotype   = UPIO_MEM,
        .irq      = IRQ_UARTINT0,
        .uartclk  = 27000000,
        .regshift = 2,
        .type     = PORT_16550A,
        .line  = 0,
        .flags = ASYNC_SKIP_TEST,
},
{
    .membase  = (unsigned char __iomem *)IO_ADDRESS(DAVINCI_UART1_BASE),
    .mapbase  = (unsigned long)DAVINCI_UART1_BASE,
    .iotype   = UPIO_MEM,
    .irq      = IRQ_UARTINT1,
    .uartclk  = 27000000,
    .regshift = 2,
    .type    = PORT_16550A,
    .line = 1,
    .flags = ASYNC_SKIP_TEST,
}
};
2,在函数
static void board_init(void)中增加
 board_setup_psc(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_UART1, 1);
3,在arch/arm/mach-davinci/mux_cfg.c里
#if 1  //ATA功能不用
MUX_CFG("HDIREN",        0,   16,    1,      0, 1)
MUX_CFG("ATAEN",          0,   17,    1,      0, 1)
#else
MUX_CFG("HDIREN",        0,   16,    1,      1, 1)
MUX_CFG("ATAEN",          0,   17,    1,      1, 1)
#endif
MUX_CFG("UART1",          1,   2,    1,      1, 1)
这样修改后,再调用WRITE向uart1写数据时,还是不能发送出去,清问是什么原因导致啊?我跟踪数据已经到了打开发送中断了, 
port->ops->start_tx(port); --->   serial8250_start_tx(); --->   up->ier |= UART_IER_THRI;但是数据就是没有发送出来。
请教大家,这可能是什么原因导致?还是有什么地方还没有考虑到吗?