STM32高级开发(13)-Ubuntu下的串口助手minicom

在这么长时间里我们在Ubuntu上调试stm32,大家在使用串口的时候是不是一直都是在宿主机上的串口助手中查看串口信息呢?来回切换是不是很麻烦?那么在这篇中我们就来介绍一下在Ubuntu下的串口助手,或者准确点说应该叫串口终端,它就是minicom。


终端与串口助手的区别

在我们正式介绍minicom之前,我们首先来关注一个问题即:终端与串口助手有什么区别?(注意这里的终端不是指Ubuntu的shell指令终端,而是说串口软件终端)

其实如果大家接触过Linux嵌入式开发应该就很明白这其中的差别了,不过鉴于大家可能之前没有接触过Linux嵌入式开发,我们这里就为大家详细的讲解一下他们。

在Linux嵌入式开发中,很多时候我们在一开始的时候网口等外围接口没有办法使用,设备内只安装了uboot等简单的引导程序时,或是不方便使用网口的情况下,我们一般会选择串口作为前期控制嵌入式设备的接口,通过它能控制设备实现很多的功能:如下载新的固件、检查修复NAND FLASH坏块亦或是点亮一个LED指示灯等等。很明显在如此复杂的操作下,我们就希望在串口上实现一个像DOS窗口或是shell一样的指令界面,那么显然的类似于串口助手这样的软件只能在点击发送时发送指令且会在窗口显示发送出去的指令的串口调试软件就不适用了。

所以在windows下,我们会使用系统自带的超级终端或是securityCRT等调试软件来调试串口。

这里写图片描述

与串口助手不同的是:

  • 这类软件没有发送文本的输入窗口,也没有发送按键。而是只要我们在窗口激活的情况下,只要按动键盘就软件会实时的通过串口发送键盘按键的标准ASCII码。

  • 第二在窗口上只会以ASCII码形式显示从设备发送来的数据而不会显示发送出的数据。

也许看起来麻烦,但这样的形式却给我们在串口上实现类似shell的指令行功能提供了基础。由于不会回显,就可以通过嵌入式设备发送不同的ASCII码来改变窗口上的显示,甚至还能够实现光标左右移动,回删等操作,以此我们在嵌入式设备上,编写合理的回显及对回车键实时处理的功能,就能够实现指令行的操作了。

这里写图片描述


安装与配置minicom

使用指令安装minicom

$ sudo apt-get install minicom

随后使用指令启动minicom,这里一定注意以sudo管理员身份执行,Ubuntu下操作串口需要管理员权限

$ sudo minicom

这样软件就被启动了。由于minicom是在终端下运行的软件,但是别觉得它鬼畜,其实他的使用和我们的超级终端等软件的使用是基本一样的,而且在指令行下的界面简洁又炫酷,相信我你会爱上它的。

这里写图片描述

接下来我们介绍一下minicom的基本用法。首先在启动软件后,在软件界面上就会提示你使用Ctrl+a键。对于minicom我们在基本界面下输入的任何单个按键都会被minicom解析为发送数据而从串口中发出,那么我们要怎么设置它选择他的一些功能呢?(就比如发送文件、清屏、退出或是显示帮助)万能的Ctrl+a键就来了,对于minicom它所有的菜单功能都需要使用Ctrl+a来召唤。在按动Ctrl+a后,minicom就进入了菜单指令输入模式,此时除了再按ESC或是其他没有功能的按键退出指令模式外,都被解析为操作指令而不是需要发送的数据。在指令模式下,窗口下方会这样显示:

这里写图片描述

  • Ctrl+a ,z。在指令模式下按z,会显示指令模式下的菜单及按键说明。

    这里写图片描述

  • Ctrl+a,c。就如说明中的功能显示,用于清屏操作。

  • Ctrl+a,x。退出软件

  • Ctrl+a,o。最重要的,用于设置串口参数。在serial port setup中我们设置,串口设备号和波特率及奇欧校验位等参数,然后选中save setup as dfl后重启minicom,就完成串口的设置了。

    这里写图片描述

    这里写图片描述


一些需要注意的问题

  • 回车换行的定义

    在Linux、windows、mac下,要实现我们通常认为的换行操作的ASCII是不同的,也就是回车键产生的ASCII码是不同的。

    在windows下,是0x0a,0x0d两个字节数据即\r,\n,前者意为换行,但光标仍处于下一行的同样的列位置,这点与老式的机械打字机是一样的,而只有再使用回车的功能将光标放到该行最初位置才能实现完整的“回车”操作。

    但在Unix系统之下,回车操作只有 0x0d,即\n。而在mac中则是\r

    由于这样的差别很多时候在windows和Linux互相读取文档的时候会造成显示上的错误,如通篇不换行或是多个字符^等现象。同时一样的错误也会发射在串口调试软件中,这点要尤其注意。

    比如在原子开发板串口教程中,在接收中断处理函数中用于分割指令的检测回车的代码就是要顺序检测 \r\n才会生效,而这样的代码到了Linux中,就需要进行更改了。当然现在的终端软件一般也支持修改回车键的定义标准,这个大家可以自己去找找设置看。

  • USB串口驱动

    在Ubuntu的内核中一般是集成有主流的TTL转RS232驱动程序的,也就意味着大家只要插上设备就可以使用了。我们可以使用指令

    $ lsusb

    来查看系统的USB设备情况。

    这里写图片描述

  • 查看串口编号

    在Ubuntu中不像windows,一般USB串口的标号都是按照顺讯摆列的,如:ttyUSB0、ttyUSB1这样。当然我们也可以去文件路径 /dev 下去看看设备的编号,Linux在所有都是文件的核心理念设计下,当外围的设备连接后,就会在根目录下的 /dev 文件夹下创建一个设备文件,通过读写这个文件,来操作通信接口。而这个文件的名字也就是上面我们在minicom中设置串口时,需要在第一行 Serial Device处填写的内容。

    这里写图片描述

    这里写图片描述


总结

对于minicom的介绍我们到此就说完了,在设置和其他配置及功能的讲述上,我们没有过多的文字,如果大家没有理解他的使用方式或是还想看看minicom更多的功能,可以自己去检索下相关的资料学习,这里我们就不过多的说了。总之需要大家理解一点的是,只有像minicom或是超级终端这样的不带有发送指令回显功能的调试软件才能实现串口界面的指令行。关于这点大家可以编译运行一下样例工程中Usart-Stdio的工程,并用分别串口调试助手和SecurityCRT来打卡它操作一下就明白了。

猜你喜欢

转载自blog.csdn.net/zhengyangliu123/article/details/54968098
今日推荐