最近这几天准备用串口实现DMA的传输数据,刚开始研究三天DMA,结果是一脸懵逼,无奈之下,只能跑去研究串口,结果发现Linux系统串口和DMA是真的难(小白,而且没人一起研究!),芯片手册对应的页数可以让人放弃,最后还是放弃看芯片手册,从网上百度开始,看看前人的总结,最终写下以下总结笔记(以下仅为笔记,实际上我并没有实现用DMA实现串口传输数据)。
系统:linux3.0.15
cpu:imxdl

一、DMA

首先阅读前人的参考文献:
1、这是有关i.MX51的SDMA内核的简短教程:
乔纳的博客
ELI的博客
要是你基础扎实,按照上面大牛的教程,基本就可以实现SDMA传输了。
2、这是恩智浦上的一个帖子,里面又许多大牛对DMA的见解与资料
通过以上外文博客再加上自己百度的东西,基本就明白DMA的基本操作了。

二、串口波特率设置与SDMA传输

首先阅读前人的参考文献:
1、jkan2001的博客:IMX6增加UART口的操作步骤
2、 恩智浦技术社区 :imx6平台串口通信问题
3、漫不经心博客:
tty初探—uart驱动框架分析(一)
uart驱动框架分析(二)
4、嘉明的博客: IMX6DL 串口驱动分析
主要有以下4篇文章

5、o777788的博客:imx6 UART 驱动分析
6、明远智睿技术论坛:imx6 uart开启DMA
7、苏西守护者的博客:imx6的uart小结(1)
8、美丽的时光机器的博客:uart&tty驱动
参照以上文献,足以将串口修改为DMA传输。

三、串口DMA及波特率的设置

虽然我没有实现用DMA传输数据,但如果用在应用层实现数据传输的话,我觉得我就差最后一部了(验证是否可以DMA传输),为了以后再进一步研究,把串口的SDMA配置过程记录下来。
与串口相关的函数及头文件如下所示:

1、首先配置好io口,具体配置参考上面的博客。 其实串口的DMA设置非常简单在board-mx6q_sabresd.c中有

static inline void mx6q_sabresd_init_uart(void)
{imx6q_add_imx_uart(2, NULL);imx6q_add_imx_uart(0, NULL);
}

上面两句就是配置串口1和串口3.

在board-mx6q_arm2.c有

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(3, NULL);imx6q_add_imx_uart(1, &mx6_arm2_uart1_data);
}

从上面可以看到串口2通过.flag或上了SDMA,这就是配置SDMA了,也就是说系统自带的串口2是打开了SDMA,要打开其他串口的SDMA的话只需下一个imxuart_platform_data 函数,照葫芦画瓢就行了,最后在应用层调用串口就可以了。(以上是我的个人见解,若那位网友验证了该想法的可行性,麻烦请评论留言,大家相互借鉴)

2、串口波特率的修改,若直接用应用层调用串口的话一句话即可实现,然而,要是不调用函数怎么修改串口控制默认值呢?
首先,我们要清楚串口的驱动虽然写在内核,但它和uboot与跟文件系统都是有关的,具体参考 :linux console驱动详解

打开uboot,找到相关的config,如们708dl.h

上面定义的就是115200波特率。

一般而言,串口在哪里初始化的就修改那个.h文件。

修改完成后,发现开机时出现卡死,这是因为rc_mxc.S的设置和uboot的设置不一样,


打开根文件的rc_mxc.S如下,将自己所要修改的串口默认波特率修改就可以了。

linux 串口波特率的修改与sdma的设置相关推荐

  1. Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

    转载请注明: Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 | 学步园 + 转载自 http://www.xuebuyuan.com/282373.html 在串口编程模式 ...

  2. linux 串口波特率失败,串口上不常见的波特率 - Linux

    我正在尝试制作一个程序来读取串口.在这个端口上,我收到波特率为875000的数据.这种情况并不常见,我没有成功修改它.我做了一个小C程序来做到这一点,但它不适用于875000 ...这里的代码的一部分 ...

  3. linux 串口 vmin vtime ,Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

    在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下. c_cc[VTIME]和c_cc[VMIN]映像read函数的返回. VTIME定义等待的时间,单位是百毫秒(通常是一 ...

  4. linux 查看端口波特率,linux串口波特率和传输方式设置

    /*PPSIX终端控制定义*/ #include     /*错误号定义*/ /***@brief  设置串口通信速率 *@param  fd     类型 int  打开串口的文件句柄 *@para ...

  5. rt_thread 如何修改单个串口波特率

    rt_thread 如何修改单个串口波特率 在rt_thread实时操作系统中,串口波特率是115200.网上有教程讲解如何修改默认的串口波特率,如: https://blog.csdn.net/we ...

  6. ZYNQ开发系列——双串口打印以及串口波特率设置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--双串口打印以及串口波特率设置 前言 双串口打印 串口波特率的修改 前言 上一篇,我们遗留了这两个问题: 1. 如果 ...

  7. linux系统怎么查看权限设置密码,linux系统怎么查看及修改文件读写权限设置

    在linux中查看与修改文件权限我们都必须使用命令来操作,不能像windows一样点几下就好了,那么linux系统怎么查看及修改文件读写权限设置?接下来大家跟着学习啦小编一起来了解一下linux系统查 ...

  8. linux命令设置波特率,Linux设置串口波特率等参数

    stty查看串口参数 stty -F /dev/ttyS0 -a 1 1 查看串口1(/dev/ttyS0)当前的参数,包括波特率.数据位等. stty设置串口参数 stty -F /dev/ttyS ...

  9. 香蕉派,修改 uboot 和 kernel 串口波特率

    环境 硬件:bananapi m1 软件:buildroot(uboot-2018.07 + linux-4.18.12) 默认波特率 编译 $ make bananapi_m1_defconfig ...

最新文章

  1. php5.6.30环境报错Call to undefined function ImageCreate() 编译安装 gd库
  2. Linux Shell实例精讲学习笔记
  3. ASP.NET Core loves JavaScript
  4. opencv 常见细碎问题解决
  5. Xilinx FPGA差分时钟转单端时钟设计
  6. 【编辑器】VSCode+PHPstudy环境配置,PHP简易开发环境搭建
  7. MongoDB Shell工具:mongosh的使用
  8. adb 黑域app_黑域app怎么用?新版黑域app使用图文教程
  9. 使用winserver2003配置DNS服务器
  10. 服务都微了,编排怎么整?
  11. chrome谷歌浏览器安装插件
  12. Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸
  13. Quick BI企业报表制作——个人笔记
  14. 趣图:菜鸟多线程 vs 老鸟多线程
  15. 计算机网络入门之TCP/IP模型
  16. 圆弧防线用计算机怎么算,一种圆弧形放线工具的制作方法
  17. textblob 情感分析_使用TextBlob进行远程学习的推文中的情感分析
  18. idea输出中文乱码
  19. ipad1无法安装应用程序_如何在iPad上的应用程序之间拖放
  20. 原始股的封闭期是多久 没有具体的时间规定

热门文章

  1. 《Kotin 极简教程》第8章 函数式编程(FP)(1)
  2. Android 抽奖 GridView 只显示周围一圈的item 纯算法实现
  3. 【安全加密技术】非对称加密
  4. dedecms怎么改php版本_一键建站系列教程(宝塔面板+DeDeCMS)
  5. SpringCloud微服务架构实战库存管理与分布式文件系统
  6. I2C中功能覆盖率的定义
  7. 2023年场外个股期权研究报告
  8. 构建幼儿Steam教育实施策略
  9. laravel-admin微信网页授权获取用户信息过程
  10. 计算机技能大赛主持人串词,护理技能大赛主持人串词