Linux 串口驱动与使用
目录
- 概述
- 实验目的
- 配置设备树
- 编译设备树
- 串口收发测试
- 移植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 串口驱动与使用相关推荐
- linux串口驱动分析
linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...
- GPS NMEA 0183 4.10协议/GPS Linux串口驱动
NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式.现在已经成为GPS导航设备统一的RTCM(R ...
- linux 串口驱动 理解,linux 串口驱动 理解
linux 串口 驱动 理解 一.核心数据结构 串口驱动有3个核心数据结构,它们都定义在 1.uart_driver uart_driver包含了串口设备名.串口驱动名.主次设备号.串口控制台(可选) ...
- Linux串口驱动(2) - 线路规程
1. 注册tty的ldisc ldisc全称 line discipline(线路规程),因为历史原因,tty属于一类设备,而串口设备只是其中一种,所以该模块负责将用户操作桥接到不同的tty驱动.从代 ...
- Linux串口驱动(3) - open详解
1. 用户空间open的操作实现 串口设备是被注册为字符设备的,在注册过程中填充了struct file_operations tty_fops结构体,该结构体中的成员open.read.write等 ...
- linux串口驱动分析【转】
转自:http://blog.csdn.net/hanmengaidudu/article/details/11946591 硬件资源及描述 s3c2440A 通用异步接收器和发送器(UART)提供了 ...
- linux 串口驱动(二)初始化 【转】
转自:http://blog.chinaunix.net/uid-27717694-id-3493611.html 8250串口的初始化: (1)定义uart_driver.uart_ops.uart ...
- 正点原子linux串口驱动下载,「正点原子Linux连载」第六十三章Linux RS232/485/GPS驱动实验...
1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南>关注官方微信号公众号,获取更多资料:正点原子 第六十三章Linux RS232/485/ ...
- xilinx linux 串口驱动
串口是常用的外设,串口有很多电平标准,TTL.232.485 等等,它们的驱动程序都是一样的.在嵌入式Linux系统中,串口被看成终端设备(tty),包括 3 个结构体:uart_driver.uar ...
- linux串口驱动及应用程序,基于华邦W90P710处理器的Linux内核应用及串口驱动的实现-嵌入式系统-与非网...
嵌入式Linux是一种很受欢迎的操作系统,具有开放源码.不存在黑箱技术.内核小.功能强大.运行稳定.效率高.易于定制裁减等特点[1],广泛应用于工控产品.很多工控产品需要和外部设备进行信息交换,而串口 ...
最新文章
- echarts前后端交互数据_SpringBoot2.0实战(26)整合SpringSecurity前后端分离JSON交互...
- 【机器学习】libsvm使用的数据格式
- 【C 语言】字符串模型 ( strstr-do…while 模型 )
- AngularJS table 按照表头字段排序功能(升序和降序)
- 水瓶座和什么座最配:天秤座,双子座,狮子座
- The TensorFlow library wasn‘t compiled to use SSE instructions, but these are available on your mach
- Tensorflow-gpu的方式
- tcp通讯一次最多能发送多少数据?_关于TCP/IP,必须知道的十个知识点
- 最美数学公式的150年:麦克斯韦方程组与“无用”的科学
- Fiddler Everywhere全平台抓包调试工具安装和使用(一)
- Leetcode每日一题:面试题17.10.find-majority-element-lcci(主要元素)
- c语言把数字转换为字母,C语言将字符串转数字
- ubuntu录制屏幕傻瓜操作 ubuntu screen capture
- 教您如何查看Win7详细系统版本号
- 华为手机adb connect连接失败解决方案(转)
- Caution: request is not finished yet
- 2022-2028全球与中国工程项目管理软件市场现状及未来发展趋势
- python商务图表_Excel 数据之美:科学图表与商业图表的绘制(全彩)
- sr550服务器配置硬盘,【联想SR550配置】联想SR5502颗服务器配置-ZOL中关村在线
- Linux常用命令简略版
热门文章
- Matlab实现熵权法并计算权重和综合评分——附增完整代码和测试用例
- 青岛宏大FA231梳棉机触摸屏(三菱)程序,也有改造用台达触摸屏(DOP-AS57BSTD
- 【第158期】游戏策划:给@zhang的简历分析
- 音频测试方法(tiny)
- directx修复工具win7_win7蓝屏该怎么解决图文教程
- php openssl 处理pkcs8,openssl生成RSA格式私钥,转换为通用型PKCS8格式
- win7自带桌面便签
- PHP算法学习(5) 位运算
- vue 打印 某块内容成pdf
- 二、Linux 教程-基础命令(1~180未完)