目录

  • 概述
  • 实验目的
  • 配置设备树
  • 编译设备树
  • 串口收发测试
  • 移植minicom工具

概述

  • 串口驱动和IIC/SPI驱动不同,它没有什么主机端和设备端之分,就只有一个串口驱动。
  • 官网一般会把串口驱动编写好了,我们真正要做的就是在设备树中添加所要使用的串口节点信息。
  • 当系统启动以后串口驱动和设备匹配成功,相应的串口就会被驱动起来,生成/dev/ttyx节点。
  • 移植minicom串口工具,可以很方便的对串口进行读写操作。
  • 虽然串口驱动不需要我们去写,但是串口驱动框架我们还是需要了解的。

实验目的

  • 配置设备树,使能Atmel SAMA5D34型号CPU的串口USART1;
  • 编译设备树,确认串口驱动编译进入内核,下载运行;
  • 查看串口配置,设置串口配置;
  • 通过命令,测试串口的收发;
  • 移植minicom工具。

配置设备树

在设备树中添加串口的设备树,status为”okey”

usart1: serial@f0020000 {compatible = "atmel,at91sam9260-usart";reg = <0xf0020000 0x100>;interrupts = <13 IRQ_TYPE_LEVEL_HIGH 5>;dmas = <&dma0 2 AT91_DMA_CFG_PER_ID(5)>,<&dma0 2 (AT91_DMA_CFG_PER_ID(6) | AT91_DMA_CFG_FIFOCFG_ASAP)>;dma-names = "tx", "rx";pinctrl-names = "default";pinctrl-0 = <&pinctrl_usart1>;clocks = <&usart1_clk>;clock-names = "usart";status = "okay";
};

compatible="atmel,at91sam9260-usart"用于匹配驱动的名字,在内核的drivers目录下可以搜索到相应的驱动。执行搜索:grep -nR “atmel,at91sam9260-usart*”,串口驱动路径为:/drivers/ tty/serial/atmel_serial.c

串口usart1所使用的引脚可以在pinctrl_usart1子节点中查看。检查一下 USART1_TX 和 USART1_RX 这两个引脚有没有被用作其他功能,如果有的话要将其屏蔽掉,保证这两个 IO 只用作 USART1,切记!!!

pinctrl_usart1: usart1-0 {atmel,pins =<AT91_PIOB 28 AT91_PERIPH_A AT91_PINCTRL_NONE  /* PB28 periph A */AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>; /* PB29 periph A with pullup */
};

编译设备树

在内核的根目录下执行make dtbs,生成.dtb目标文件。
检查串口驱动是否编译进入内核:在/drivers/ tty/serial/Makefile可以看到obj-$(CONFIG_SERIAL_ATMEL) += atmel_serial.o,只要根目录下.config文件中” CONFIG_SERIAL_ATMEL=y”串口驱动就会被编译进入内核。
下载设备树过后,进入设备树目录cd /proc/device-tree/,执行find -name “serial*”,可以查找到对应设备树的配置。

串口收发测试

串口生成的节点为/dev/ttyx。具体是tty什么,可以通过驱动查看,本例程中usart1生成节点名/dev/ttyS2。
输入“stty -F /dev/ttyS2 -a”,可查看串口的信息,比如波特率。

# stty -F /dev/ttyS2 -a
speed 115200 baud;stty: /dev/ttyS2line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

输入” stty -F /dev/ttyS2 ispeed 115200 ospeed 115200 cs8”设置串口波特率,停止校验位等等。
执行echo “test” >/dev/ttyS2,可将test字符通过串口发送出去。
执行cat /dev/ttyS2,可接收串口数据并打印出来。

移植minicom工具

未完待续…

Linux 串口驱动与使用相关推荐

  1. linux串口驱动分析

    linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...

  2. GPS NMEA 0183 4.10协议/GPS Linux串口驱动

      NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式.现在已经成为GPS导航设备统一的RTCM(R ...

  3. linux 串口驱动 理解,linux 串口驱动 理解

    linux 串口 驱动 理解 一.核心数据结构 串口驱动有3个核心数据结构,它们都定义在 1.uart_driver uart_driver包含了串口设备名.串口驱动名.主次设备号.串口控制台(可选) ...

  4. Linux串口驱动(2) - 线路规程

    1. 注册tty的ldisc ldisc全称 line discipline(线路规程),因为历史原因,tty属于一类设备,而串口设备只是其中一种,所以该模块负责将用户操作桥接到不同的tty驱动.从代 ...

  5. Linux串口驱动(3) - open详解

    1. 用户空间open的操作实现 串口设备是被注册为字符设备的,在注册过程中填充了struct file_operations tty_fops结构体,该结构体中的成员open.read.write等 ...

  6. linux串口驱动分析【转】

    转自:http://blog.csdn.net/hanmengaidudu/article/details/11946591 硬件资源及描述 s3c2440A 通用异步接收器和发送器(UART)提供了 ...

  7. linux 串口驱动(二)初始化 【转】

    转自:http://blog.chinaunix.net/uid-27717694-id-3493611.html 8250串口的初始化: (1)定义uart_driver.uart_ops.uart ...

  8. 正点原子linux串口驱动下载,「正点原子Linux连载」第六十三章Linux RS232/485/GPS驱动实验...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南>关注官方微信号公众号,获取更多资料:正点原子 第六十三章Linux RS232/485/ ...

  9. xilinx linux 串口驱动

    串口是常用的外设,串口有很多电平标准,TTL.232.485 等等,它们的驱动程序都是一样的.在嵌入式Linux系统中,串口被看成终端设备(tty),包括 3 个结构体:uart_driver.uar ...

  10. linux串口驱动及应用程序,基于华邦W90P710处理器的Linux内核应用及串口驱动的实现-嵌入式系统-与非网...

    嵌入式Linux是一种很受欢迎的操作系统,具有开放源码.不存在黑箱技术.内核小.功能强大.运行稳定.效率高.易于定制裁减等特点[1],广泛应用于工控产品.很多工控产品需要和外部设备进行信息交换,而串口 ...

最新文章

  1. echarts前后端交互数据_SpringBoot2.0实战(26)整合SpringSecurity前后端分离JSON交互...
  2. 【机器学习】libsvm使用的数据格式
  3. 【C 语言】字符串模型 ( strstr-do…while 模型 )
  4. AngularJS table 按照表头字段排序功能(升序和降序)
  5. 水瓶座和什么座最配:天秤座,双子座,狮子座
  6. The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
  7. Tensorflow-gpu的方式
  8. tcp通讯一次最多能发送多少数据?_关于TCP/IP,必须知道的十个知识点
  9. 最美数学公式的150年:麦克斯韦方程组与“无用”的科学
  10. Fiddler Everywhere全平台抓包调试工具安装和使用(一)
  11. Leetcode每日一题:面试题17.10.find-majority-element-lcci(主要元素)
  12. c语言把数字转换为字母,C语言将字符串转数字
  13. ubuntu录制屏幕傻瓜操作 ubuntu screen capture
  14. 教您如何查看Win7详细系统版本号
  15. 华为手机adb connect连接失败解决方案(转)
  16. Caution: request is not finished yet
  17. 2022-2028全球与中国工程项目管理软件市场现状及未来发展趋势
  18. python商务图表_Excel 数据之美:科学图表与商业图表的绘制(全彩)
  19. sr550服务器配置硬盘,【联想SR550配置】联想SR5502颗服务器配置-ZOL中关村在线
  20. Linux常用命令简略版

热门文章

  1. Matlab实现熵权法并计算权重和综合评分——附增完整代码和测试用例
  2. 青岛宏大FA231梳棉机触摸屏(三菱)程序,也有改造用台达触摸屏(DOP-AS57BSTD
  3. 【第158期】游戏策划:给@zhang的简历分析
  4. 音频测试方法(tiny)
  5. directx修复工具win7_win7蓝屏该怎么解决图文教程
  6. php openssl 处理pkcs8,openssl生成RSA格式私钥,转换为通用型PKCS8格式
  7. win7自带桌面便签
  8. PHP算法学习(5) 位运算
  9. vue 打印 某块内容成pdf
  10. 二、Linux 教程-基础命令(1~180未完)