单片机开发过程中,有一个好的调试系统可以极大地提高开发效率。

举个例子,做平衡系统时调节PID参数,你会选择 修改参数–>编译–>烧录–>运行–>修改…,还是做一个功能可以一边运行一边修改参数呢?

调试的方法有多种,在这就来分别谈一下我在开发过程中使用过的几种调试方案。

这里的调试方案也是一种交互方案,但此方案不是为了交互而设计,重在快速地搭建、方便地使用、高效地调试,换句话说长得丑无所谓。

我们做调试工具追求的是什么

做调试系统无非是为了两点:

  • 实时显示一些必要信息。

  • 实时修改,其实也就是可以实时接收指令。

为了提高开发效率,我们进一步希望:

  • 调试系统搭建起来方便快捷,最好可以统一标准,方便移植。我们不希望在调试系统上花费太多工作量,不要太复杂,尽量轻量级。

  • 直观显示,看得清楚。

  • 方便输入,操作快捷。

几种调试方案

1、加入屏和按键

最直接的方法就是在嵌入式系统中加入屏和按键,做出一个界面,显示信息和接收按键指令。

【优点】跟随系统,不需要依赖其他设备,可以随时随地调试。

【缺点】

  • 添加了硬件。硬件的设计和焊接还是需要花费一些精力的。构建界面同样也要花费不少精力。

  • 显示信息有限。加入的屏通常显示内容比较少,会受到一些限制。

  • 按键功能有限。

  • 加入的按键通常也不会太多,并且如果我们考虑到长按、组合键等操作的话构建程序也是比较复杂的。

【总结】

肯定不能算轻量级,功能有限,可移植性差,花费精力多,屏需要额外费用。

唯一的优点就是跟随系统,没有其他依赖。

所以如果不是非要随时调试的话不建议用这种方法,单纯为了调试来说代价还是比较大的。

2、串口+上位机

单片机自己不负责显示,它把数据发送出去,由上位机显示;也不负责按键检测,由上位机负责并接收上位机指令。

单片机和上位机之间需规定好通信协议。

通信方式可以是串口也可以是其他,上位机可以是图形也可以是命令行。

【优点】

  • 对单片机来说做到了一定的轻量级。只需要考虑发送数据和接收指令的协议。

  • 对于比较复杂的功能,好的上位机,尤其是图形化的上位机可以很方便地调试。

【缺点】

  • 需要设计通信协议,双方都要位通信协议写代码。这需要花费一定的精力。

  • 制作上位机需要花费较多的精力,并且上位机不通用。

【总结】

由于上位机在电脑上,有丰富的显示和控制资源,做出一个好的上位机可以极其方便地提高效率。

但制作上位机要花费大量精力。

所以,如果上位机是作为产品发布,是值得花精力去做的;但如果仅仅是为了调试时用一下,不值得这样做。

到这里有没有注意到,其实我们是想找到一个通用的”显示器”,能够方便地把信息显示出来。 显示器是已经做好的,不需要我们再做什么,通信协议尽可能简单,最好能直接输出。 后面我们会找到这么一个好东西。

3、用树莓派

用树莓派进行关键计算,我们关心的数据都在树莓派的程序里。

由于树莓派里运行linux系统,在其连接网络后,我们可以用局域网里电脑的终端登陆树莓派,在树莓派的程序里直接打印接口显示出来。

注:

在命令行下打印数据并不一定是一行一行地输出,也可以控制光标在指定位置输出,构建出一个简单的界面。这里不做介绍,具体可搜索”控制台编程”。

命令行下接收键盘操作也不一定非要输入字符再回车,程序里可以直接监测键盘。

总之在命令行中是可以构建出一个类似于 显示屏+按键 组合的”设备”的。

【优点】

  • 终端就相当于是一个现成的、通用的显示屏,任意可登陆ssh的终端都可使用。

  • 程序里直接打印输出!这真是太方便的,c语言中一个printf即可,相当于是一个极其简单的通信协议。

【缺点】

  • 贵!一个小小的智能车都要塞个树莓派,树莓派价格都够好多个智能车了。

  • 树莓派本身是重量级。虽然程序本身是方便了,但使用之前需要配置树莓派,虽然一个树莓派只要配置一次。

  • 树莓派本身硬件功能有限,有些功能树莓派不能直接完成,还是需要借助单片机,并和单片机通信。比如记录车轮旋转的正交编码器,stm32有专门的硬件模块完成,树莓派没有,如果树莓派想要记录车轮旋转的话还是需要借助stm32,并且设计如何获取stm32记录的数据。

【总结】

对于调试这一方面来说,树莓派是非常方便的,输出、输入都是直接完成。

所以如果你的项目值得用树莓派,那调试是非常方便的;如果不需要用树莓派,光是为了调试方便而使用是不建议的,请考虑上面3个缺点。

虽然树莓派本身不一定最合适,但我们找到了方向——终端。

4、串口+通用终端工具

单片机能不能用终端呢?答案是肯定的。

有多种终端工具可以通过串口使用,比如windows自带的超级终端,linux和osx下命令行里的minicom,以及夸三个平台的图形化终端secureCRT。

这些终端工具的功能简单来说就是:1、当某个按键按下立刻发送该按键的键码出去,比如按下p键发送字符’p’。2、接收串口数据并显示出来。

说明:

  • 这些终端工具的协议是相同的,可以认为是通用的显示器和键盘。

  • 单片机可以发送一些特殊字符串完成一些特殊操作,比如清屏、控制光标位置。利用这些功能可以构建出简单的界面。这些操作功能已经封装成了函数,会在本文后面给出。

  • 一般会先在单片机中实现printf功能,实现之后在程序中用printf即可直接在终端工具中显示信息。实现printf功能的方法在这里不介绍,具体可上网查找,工作量并不大。其实就是重定义一个函数,使printf函数通过指定串口输出字符串。

  • 串口通过蓝牙模块可快速实现无线传输。

【优点】

  • 单片机端轻量级,上位机端无工作量。具体来说单片机端要做的事情有:初始化串口,重定向printf,通过特殊字符串控制光标构建界面。

  • 上位机端通用,单片机端显示相关的代码方便移植。本文后文会给出显示相关的库函数。

  • 硬件扩展几乎没有。

【缺点】

对比第1种方案,需要一台电脑。其他方面都具有很大优势。

【总结】

此方案是单片机开发调试的理想选择。

下面会介绍如何在终端工具里构建出界面。

如何构建终端工具里的控制台界面

1、构建界面用到的特殊字符串

2、封装好的库函数

使用这个库函数的前提是:

1、主函数完成了串口初始化,串口功能正常使用。

2、重定向了printf函数,printf函数可通过串口输出字符串。

disp.h文件:

disp.c文件:

本文整合自网络,版权归原作者,如果涉及侵权,请及时联系我们删除!

本文来源于nicekwell

喜欢我,关注我

打开微信点击添加朋友搜索公众号:国人都在关注生活,点击“”关注

搜索公众帐号:mrdsh518

也请你推荐给你身边的朋友,感谢你~

长按↗↗识别二维码 ↖↖加关注

介绍:每天推送生活小常识  精彩内容 小视频  你会看的不要不要的 心动不如行动

点击下方↓↓↓

ubuntu 串口调试工具推荐_谈一谈单片机开发的几种调试方案相关推荐

  1. 谈一谈单片机开发的几种调试方案

    原文地址:http://nicekwell.net/blog/20170411/tan-%5B%3F%5D-tan-dan-pian-ji-kai-fa-de-ji-chong-diao-shi-fa ...

  2. ubuntu 串口调试工具推荐_串口调试能有多便捷?——FUR组件的应用

    就是最近忙着做项目,忽然发现有3个项目都需要用到串口调试,这让我感觉到有一个方便快捷的调试工具是非常重要的.虽然类似的功能有很多现成的.功能强大的开源协议,比如MODBUS.但是我看过之后,总觉得不够 ...

  3. ubuntu 串口调试工具推荐_玩客云刷ubuntu系统(不写入emmc)

    写在最前:友情提示刷机有风险,请自己承担.本教程只做分享,不提供技术支持! 部分固件下载地址 刷机有风险,且刷且珍惜 1. 刷机前的准备工作 刷机需要哪些条件 只要玩客云主板没坏都可以刷 需要的硬件 ...

  4. ubuntu 串口调试工具推荐_升级版全系列视频第一个项目电子产品量产测试与烧录工具...

    第一章 前言 温馨提示:本文共10111字,预计阅读时间26分钟. 之前说过要开源100ASK_IMX6ULL批量测试GUI: 100ask_imx6ull批量测试神器即将开源 ,今天说到做到免费开源 ...

  5. UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

    串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式.但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句 ...

  6. windows 串口中断编程_万变不离其宗之单片机串口共性问题

    关注.星标嵌入式客栈,精彩及时送达 [导读] 单片机开发串口是应用最为广泛的通信接口,也是最为简单的通信接口之一,但是其中的一些要点你是否明了呢?来看看本人对串口的一些总结,当然这个总结并不能面面俱到 ...

  7. ubuntu串口调试工具kermit和minicom

    串口终端工具 ①sudo apt-get install ckermit ②配置文件.kermrc  #这是一个隐藏文件,放在主文件夹根目录下 set line /dev/ttyUSB0    #根据 ...

  8. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  9. 单片机学c语言还是python好_单片机开发用哪种语言最好?

    在过去的几十年中,单片机的规格变化不大,但是语言和支持软件的扩展为应用程序开发开辟了许多途径.多年来,对单片机进行编程涉及到两种语言的选择:C语言和汇编语言.但是随着现在可用于微处理器的新语言,用户在 ...

最新文章

  1. typeof,instanceof 和 isProtoTypeof
  2. There is no database available的错误消息
  3. Linux服务器上监控网络带宽与监控性能命令大全
  4. MySQL之——The slave I/O thread stops because master and slave have equal...
  5. 信息学奥赛C++语言:有规律的数列
  6. swift加密_如何使用Swift和Laravel创建加密跟踪应用程序的后端
  7. 超越苹果! 雷军愿望达成:小米,世界第三!
  8. 【Docker】Redis 安装使用教程
  9. 一个数的约数(个数。约数和)
  10. 阿里云刘伟光:核心系统转型之路
  11. Android 读取按键及Touch Panel
  12. 网站IP更换对SEO有影响吗
  13. 【Numpy】1. n维数组,dtype,切片,索引
  14. java基于Springboot+vue的球鞋销售商城网站 elementui
  15. java获取pdf文件首页图片,用来当做封面
  16. Java 创建带有套接字的简单代理服务器示例
  17. FPGA实现UHS的一些资料
  18. 我开发了一个女朋友陪聊系统【全天24小时推送问候,自动回复女友的微信消息】
  19. 2020最新的web前端体系和路线图,想学web前端又不知道从哪开始的快来瞧一瞧呀
  20. Python CSV Reader/Writer

热门文章

  1. 比特币:生于 2009,亡于 2016?
  2. stm32 Flash读写[库函数]
  3. PTA-7-5 打印杨辉三角 (20分)(C语言)
  4. 信息学奥赛一本通(1092:求出e的值)
  5. Dungeon Master(信息学奥赛一本通-T1248)
  6. 高精度减法(洛谷-P2142)
  7. 信息学奥赛一本通C++语言——1109:开关灯
  8. 好玩小游戏来啦,免费拿走,一个赞一个关注就够啦
  9. atxserver运行没有反应_连续生物工艺:灌流生物反应器
  10. 高级语言中的关键字:const用法分析