​01.Debug是什么?

1947年9月9日,美国著名科学家格蕾丝.霍普(Grace Hopper)与其同伴在对Mark II计算机进行研究时发现,导致计算机无法正常工作的罪魁祸首居然是一只粘在继电器上的小飞蛾。格蕾丝用镊子将飞蛾夹出,并用胶带固定到日志中,并在日志最后写了这样一句话:“First actual case of bug being found”。这是历史上第一次出现关于bug的记载,排除故障的过程被称为“Debug”,后被译为调试,并在之后的计算机领域内广为流传。

在75年后的今天,计算机领域的软硬件调试技术经历了不断的发展和演进,对嵌入式领域而言已成为与开发、设计一样重要的存在。尤其在嵌入式系统飞速发展的飞行控制领域,软硬件紧耦合的尴尬处境使得具备优秀调试技术的工程师变得炙手可热:只有快速定位问题并找到问题出现的根本原因,才能最大程度地降低调试成本,缩短开发周期。

02.常规的调试步骤有哪些?

第一步 · 正确重现问题

当问题出现在本地时,工程师通常可以轻松实现问题复现,但当问题出现在设备所在地或远程站点时,调试工作便完全依赖于记录了设备各项参数设置的可靠日志。在实际操作中,此类情况的出现将对最终的调试结果造成直接影响——一旦复现的问题与实际存在出入,一切调试工作都将存在偏差,需要多次迭代才能最终解决问题。

第二步 · 缩小问题所在范围

一旦问题被正确复现,接下来的步骤就是细化问题所在区域。嵌入式系统通常可分为应用层、固件层、硬件层,这一过程便可通过获取这之中的数据流来完成:以应用层与固件层、硬件层的接口为抓手,获取数据流,并根据逻辑将数据流路径划分为更多的子级别。这一过程可独立检查、测试来确定每一层是否存在问题,并缩小问题所在范围。

第三步 · 修复每一个小问题

由于嵌入式系统通常存在高度耦合性,因此问题极有可能不仅仅存在于一处。需要根据设备逻辑纵观数据流完整路径,找到所有需要修改之处,并一一修改对应代码。

第四步 · 充分测试,确保Debug已完成

比与棘手的bug做斗争更为令人沮丧是,在工程师以为Debug完成后,bug还依然存在,且“解决方案”导致了更多bug的出现。解决此类问题的方法便是进行充分测试,但由于高耦合门槛的存在,常规的TypeScript、console.log、VS Code都无法应对当下复杂度极高的嵌入式系统。

03.仿真:飞控Debug的解决方案

对嵌入式系统整体过程进行全数字实时仿真,便可在很大程度上解决上述各种各样的调试问题。由迪捷软件自主研发的天目全数字实时仿真软件SkyEye,可在常见的桌面级操作系统上仿真嵌入式硬件芯片,模拟各类复杂嵌入式系统的被测环境,1:1还原真实硬件芯片内部的行为逻辑,通过运行真实的目标二进制程序,实现从真实硬件到仿真硬件开发、调试、测试验证的无缝过渡。

借助SkyEye,工程师可以在世界上任何地方快速搭建与远程设备相同的硬件仿真环境,轻松实现问题复现,还可实现远程代码开发、调试和测试工作。本地已有的系统环境可被快速发送给组内其他同事,完美解决因被测环境不同导致的现场难复现问题,避免复杂配置等各类环境因素带来的时间与资源的浪费。

对飞控领域而言,因其往往涉及多方资源协作,真实硬件整机系统的搭建往往需要花费大量时间来完成,而除了上述优势外,SkyEye自带的GDB调试工具,不仅支持底层驱动、消息中间件和上层应用软件代码的调试,还支持查看硬件内存、寄存器状态等各项指标,可实现替换昂贵的飞控调试器,且仍满足从硬件、固件代码到应用软件的所有调试工作。

SkyEye助力飞控软件Debug相关推荐

  1. SkyEye(一种软件模拟的系统开发平台)

    一.SkyEye介绍 1.SkyEye的起源和发展 2002年11月,一个偶然的机会,一群操作系统的爱好者在网上进行聊天,成立了一个TM-Linux兴趣小组,希望要做一些感兴趣的事情.当时在清华大学计 ...

  2. keil中使用软件debug功能查看printf输出结果

    这是一条用处不大,但可能会用到的记录 参考连接:Keil Debug(printf) Viewer的使用 在纯软件仿真中,要想看到打印的debug信息,可以使用printf函数,但是需要用到函数重定向 ...

  3. 六、MSP432飞控软件框架分析

    飞控整个软件代码运行在定时器调度模式,同时对各个外设模块中断优先级进行了合理设计,确保程序运行的实时性和稳健性.其中对实时性.周期性要求高的比如:传感器数据采集.姿态解算.惯性导航.控制等任务,采用定 ...

  4. 记录一次GoLang软件debug模式F7和F8失效问题

    说明 软件版本:2021.1 问题描述:在debug模式下,F7和F8失效了,点一次就丢失了信息.需要重启才行. 核心问题 dlv的版本问题 之前试过很多方法,这个链接提到的命令可以试试.我虽然通过这 ...

  5. 泛泰A800S移植A850天气软件debug流程

    前几天听 syhost 说850自带的天气软件天气软件还不错,看了一下的确还行,想想既然820上可用,弄到800上来应该也是顺理成章的事情,于是动手干吧. 结果弄到800上安装好,一运行马上报错,意料 ...

  6. 四轴飞控软件开发计划

    学习stm32f3discovery有一段时间了,感觉可以尝试一下飞控的开发,制定以下简要计划开展,即便不成功也能学到不少东西 1.usart驱动开发,用户和上位机通讯等 2.pwm输入开发,用于接收 ...

  7. APM飞控软件在环SITL仿真

    APM飞控本身已经做的很完善了,但是如果要做某些个性化的应用,我们就需要修改其源代码来满足自己的需求.相应的地面站程序也可以自行修改.但是改动过后的代码是不能直接用到飞机上飞的,不然铁定会炸机.所以我 ...

  8. 四条建议助力APP软件开发者直击幼教蓝海

    据相关资料显示,中国目前0-6岁幼儿约有1.8亿,全国共有20万所幼儿园,预计到2020年,我国在校幼儿园人数将达4000万人.佛山APP开发公司英趣科技了解到,如果每个孩子每年幼儿园平均交纳1000 ...

  9. 系统仿真平台SkyEye可替代国外Matlab/Sumlink等同类软件

    传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的扩充和版本的迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天.卫星系统. ...

最新文章

  1. 从零开始学ASP.NET
  2. 1.6 Number类
  3. python骚操作之——判断整数
  4. TP的URL设计和SEO支持
  5. MySQL流浪记(三)—— Linux安装MySQL数据库5.7.30(亲测有效3分钟即可)
  6. [转载] 弄懂JDK、JRE和JVM到底是什么
  7. Vue-cli 项目打包布署(简单清晰)
  8. 学习Spring Boot:(十九)Shiro 中使用缓存
  9. 临界区设计太大或太小有何缺点_冷库风冷冷凝器和水冷冷凝器区别及优缺点比较...
  10. .sql文件_自己动手写SQL查询引擎
  11. 如何观察JS的事件队列的执行划分
  12. python下载手机版-python
  13. 程序员用C/C++打造车牌识别系统!同学眼中只有膜拜!
  14. C语言正交表测试用例,正交表设计用例(简单+实用) - Jackc的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  15. 微信公众号小程序怎么做 微信公众号小程序制作教程
  16. 一次Nginx 502问题解决
  17. android沉浸式状态理解
  18. Binary_Search(二叉树搜索---------二分)
  19. 从顺丰到菜鸟,洋女婿“爆改”俄罗斯邮政
  20. 动态vlan和静态vlan

热门文章

  1. 文本处理工具简单介绍
  2. 九成企业没有招聘数字化,智联招聘、前程无忧们还能如何掘金?
  3. STL-reverse_iterator 反向迭代器
  4. 案例分享,Appium+Python实现APP启动页跳转到首页!
  5. 51单片机控制继电器的设计及源代码
  6. centos和ubuntu命令区别总结列表
  7. 02324 离散数学 知识点
  8. PAT Basic 1065. 单身狗(25)(C语言实现)
  9. LR性能测试框架学习总结
  10. U盘格式化里面的文件还能找回来吗