打印
[i.MX]

imx6q UART3如何开启DMA功能

[复制链接]
5857|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xhh4u1986|  楼主 | 2014-7-23 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[b]我用的板子自身携带5个UART,我现在已经把内核中UART3的初始化关闭, 自己仿照内核的UART驱动编写了一套针对UART3的驱动程序,装载ko文件之后,收发数据正常,但是没有开启DMA。现在想知道如何开启DMA功能,需要修改 添加哪些变量  和设置,或者有这方面的资料也可以,用户手册中介绍的过于简单了。 还请飞思卡尔的大牛们提供一些帮助,谢谢!   我用的开发板是SABRE-SD,内核都是飞思卡尔的。

相关帖子

沙发
FSL_TICS_ZJJ| | 2014-7-23 14:27 | 只看该作者
楼主,你好!
你的问题已经转给我们的I.MX,他待会有空会回答你,请耐心等待下.

使用特权

评论回复
板凳
FSL_TICS_Rita| | 2014-7-23 14:38 | 只看该作者
楼主你好,请问你使用的是哪个版本的BSP?

使用特权

评论回复
地板
xhh4u1986|  楼主 | 2014-7-24 08:59 | 只看该作者
FSL_TICS_Rita 发表于 2014-7-23 14:38
楼主你好,请问你使用的是哪个版本的BSP?

L3.0.35_4.1.0_130816_source

是不是在UART初始化的这样设置————

static const struct imxuart_platform_data mx6_arm2_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,
};

static inline void mx6_arm2_init_uart(void)
{
imx6q_add_imx_uart(1, &mx6_arm2_uart1_data);
}



如果是还需要其它设置吗  比如管脚定义~

使用特权

评论回复
5
FSL_TICS_Rita| | 2014-7-24 16:54 | 只看该作者
xhh4u1986 发表于 2014-7-24 08:59
L3.0.35_4.1.0_130816_source

是不是在UART初始化的这样设置————

楼主你好,请问你使用的是哪块板子?

使用特权

评论回复
6
xhh4u1986|  楼主 | 2014-7-24 21:03 | 只看该作者
FSL_TICS_Rita 发表于 2014-7-24 16:54
楼主你好,请问你使用的是哪块板子?

imx6q  SABRE-SD

使用特权

评论回复
7
FSL_TICS_Rita| | 2014-7-25 11:39 | 只看该作者
xhh4u1986 发表于 2014-7-24 21:03
imx6q  SABRE-SD

楼主你红啊,开启DMA功能,你需要在内核中enable DMA,默认的是disable的。你需要修改代码的路径为:
linux/arch/arm/mach-mx6下的serial.h文件,你需要做的是enable DMA 以及定义RXBUF的大小。
如下所示,仅供参考:
/* UART 3 configuration */

#define UART3_UCR4_CTSTL        16

-#define UART3_DMA_ENABLE       0

-#define UART3_DMA_RXBUFSIZE     1024

+#define UART3_DMA_ENABLE       1

+#define UART3_DMA_RXBUFSIZE     2048

#define UART3_UFCR_RXTL         16

#define UART3_UFCR_TXTL         16

使用特权

评论回复
8
xhh4u1986|  楼主 | 2014-7-26 22:13 | 只看该作者
FSL_TICS_Rita 发表于 2014-7-25 11:39
楼主你红啊,开启DMA功能,你需要在内核中enable DMA,默认的是disable的。你需要修改代码的路径为:
lin ...

您好, 你上边说的这些参数应该是适用于mx-5的吧,
这是我在内核中搜索的结果:
---- UART3_DMA_ENABLE Matches (5 in 3 files) ----
Clock.c (arch\arm\mach-mx5):#define UART3_DMA_ENABLE        0
Clock.c (arch\arm\mach-mx5):#if UART3_DMA_ENABLE
Clock_mx50.c (arch\arm\mach-mx5):#define UART3_DMA_ENABLE        0
Clock_mx50.c (arch\arm\mach-mx5):#if UART3_DMA_ENABLE
Serial.h (arch\arm\mach-mx6):#define UART3_DMA_ENABLE        0

mach-mx6中根本就没有用到这些宏定义呀~
所以即使以上这些参数改掉之后 应该是不起作用的吧,您帮着再看一下~谢谢~

使用特权

评论回复
9
FSL_TICS_Rita| | 2014-7-28 14:41 | 只看该作者
xhh4u1986 发表于 2014-7-26 22:13
您好, 你上边说的这些参数应该是适用于mx-5的吧,
这是我在内核中搜索的结果:
---- UART3_DMA_ENABLE M ...

楼主你好,mach-mx6目录下的serial.h中是有的啊,首先你是要enable DMA 的。

使用特权

评论回复
10
FSL_TICS_Rita| | 2014-7-28 14:42 | 只看该作者
xhh4u1986 发表于 2014-7-26 22:13
您好, 你上边说的这些参数应该是适用于mx-5的吧,
这是我在内核中搜索的结果:
---- UART3_DMA_ENABLE M ...

楼主你再确认一下,如果你还是没有找到的话,联系我哈~~

使用特权

评论回复
11
xhh4u1986|  楼主 | 2014-7-29 16:26 | 只看该作者
FSL_TICS_Rita 发表于 2014-7-28 14:42
楼主你再确认一下,如果你还是没有找到的话,联系我哈~~

是有您说的这几项  但是这几项是适用于MX51的 没有在MX6中使用。

使用特权

评论回复
12
FSL_TICS_Rita| | 2014-7-30 17:31 | 只看该作者
xhh4u1986 发表于 2014-7-29 16:26
是有您说的这几项  但是这几项是适用于MX51的 没有在MX6中使用。

楼主你好,i.mx6也是一样的。

使用特权

评论回复
13
nccpu| | 2015-7-22 18:34 | 只看该作者
搂主,能不能把你加的uart3的驱动程序例子,贴出来看看呢,谢谢,我刚刚接触imx6

使用特权

评论回复
14
mini1986| | 2015-7-23 08:42 | 只看该作者
关注一下,学习一下DMA这块......

使用特权

评论回复
15
Messi1999| | 2015-7-23 10:39 | 只看该作者
学习一下DMA这块,好好的学

使用特权

评论回复
16
xhh4u1986|  楼主 | 2015-8-24 19:24 | 只看该作者
飞思卡尔官网提供的3.0.35的BSP包关于uart的dma驱动程序是有问题的,我已经修改了bug,但是修改起来比较麻烦,建议大家使用3.10版本以上的BSP包,新的BSP包已修正bug,uart可进行dma收发。

使用特权

评论回复
17
ach_dmatek| | 2015-8-25 10:53 | 只看该作者
升级到3.10到是可以的,就是yocto不好搞。

使用特权

评论回复
18
mleisure| | 2016-3-11 14:43 | 只看该作者
dma

使用特权

评论回复
19
Jolinery| | 2016-10-16 16:45 | 只看该作者
这问题是比较坑爹,对于老版本解决起来比较麻烦

使用特权

评论回复
20
qqwangbalu| | 2018-2-27 12:48 | 只看该作者
xhh4u1986 发表于 2015-8-24 19:24
飞思卡尔官网提供的3.0.35的BSP包关于uart的dma驱动程序是有问题的,我已经修改了bug,但是修改起来比较麻 ...

@xhh4u1986
你好,请问3.0.35BSP包UART的DMA驱动BUG如何修改呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

30

帖子

1

粉丝