明远智睿技术论坛

标题: imx6 uart开启DMA [打印本页]

作者: luogf    时间: 2020-2-18 15:19
标题: imx6 uart开启DMA
核心板:MY-IMX6-EK200
linux:Linux-3.0.35
内核代码:linux-3.0.35-svn42-Release.20181126.tar
请问如何开启5个串口的DMA?

作者: luogf    时间: 2020-2-19 13:53
static const struct imxuart_platform_data uart0_data __initconst = {
        .flags      = IMXUART_HAVE_RTSCTS | IMXUART_USE_DCEDTE | IMXUART_SDMA,
        .dma_req_rx = MX6Q_DMA_REQ_UART1_RX,
        .dma_req_tx = MX6Q_DMA_REQ_UART1_TX,
        .dir_set=mxc_rs485_dir_set,
};

static const struct imxuart_platform_data uart1_data __initconst = {
        .flags      = IMXUART_HAVE_RTSCTS | IMXUART_USE_DCEDTE | IMXUART_SDMA,
        .dma_req_rx = MX6Q_DMA_REQ_UART2_RX,
        .dma_req_tx = MX6Q_DMA_REQ_UART2_TX,
        .dir_set=mxc_rs485_dir_set,

};

static const struct imxuart_platform_data uart2_data __initconst = {
        .flags      = IMXUART_HAVE_RTSCTS | IMXUART_USE_DCEDTE | IMXUART_SDMA,
        .dma_req_rx = MX6Q_DMA_REQ_UART3_RX,
        .dma_req_tx = MX6Q_DMA_REQ_UART3_TX,
        .dir_set=mxc_rs485_dir_set,
};
       
static const struct imxuart_platform_data uart3_data __initconst = {
        .flags      = IMXUART_HAVE_RTSCTS | IMXUART_USE_DCEDTE | IMXUART_SDMA,
        .dma_req_rx = MX6Q_DMA_REQ_UART4_RX,
        .dma_req_tx = MX6Q_DMA_REQ_UART4_TX,
        .dir_set=mxc_rs485_dir_set,

};
static const struct imxuart_platform_data uart4_data __initconst = {
        .flags      = IMXUART_HAVE_RTSCTS | IMXUART_USE_DCEDTE | IMXUART_SDMA,
        .dma_req_rx = MX6Q_DMA_REQ_UART5_RX,
        .dma_req_tx = MX6Q_DMA_REQ_UART5_TX,
        .dir_set=mxc_rs485_dir_set,

};


static inline void mx6q_sabresd_init_uart(void)
{
        imx6q_add_imx_uart(0, &uart0_data);
        imx6q_add_imx_uart(1, &uart1_data);
        imx6q_add_imx_uart(2, &uart2_data);
        imx6q_add_imx_uart(3, &uart3_data);
        imx6q_add_imx_uart(4, &uart4_data);
}

我是这么加的,但是内核在初始化串口的时候卡住了
作者: luogf    时间: 2020-2-19 14:47
求回复。。
作者: 软件01    时间: 2020-2-19 15:12
luogf 发表于 2020-2-19 14:47
求回复。。

你全部都用RS485嘛?
建议用高版本3.14或4.1的
作者: luogf    时间: 2020-2-19 15:24
软件01 发表于 2020-2-19 15:12
你全部都用RS485嘛?
建议用高版本3.14或4.1的

是的,项目需要使用5个485. 3.0的内核一直在用,换的话还要改很多其他的东西。您这边有例子可以用来参考吗
作者: 软件01    时间: 2020-2-19 15:49
luogf 发表于 2020-2-19 15:24
是的,项目需要使用5个485. 3.0的内核一直在用,换的话还要改很多其他的东西。您这边有例子可以用来参考 ...

https://community.nxp.com/message/886247
arch/arm/mach-mx6/serial.h里面有DMA控制的,但是没用到
版本太老,不支持
作者: luogf    时间: 2020-2-19 17:57
软件01 发表于 2020-2-19 15:49
https://community.nxp.com/message/886247
arch/arm/mach-mx6/serial.h里面有DMA控制的,但是没用到
版 ...

感谢回复,那3.14版本的怎么加呢?直接在设备树里改就行吗
作者: 软件01    时间: 2020-2-21 13:43
luogf 发表于 2020-2-19 17:57
感谢回复,那3.14版本的怎么加呢?直接在设备树里改就行吗

默认支持




欢迎光临 明远智睿技术论坛 (http://bbs.myzr.com.cn/) Powered by Discuz! X3.2