物联网打工人必备:LiteOS Studio图形化调测能力
摘要:本文会给大家介绍下LiteOS Studio的调测的几个知识点,包括: 调测配置,监视变量,反汇编代码同步展示,数值进制切换,跨平台编译调测,Qemu模拟器调测,多核调测,远程设备调测等。
掌握一款IDE的图形化调测能力的重要性不言而喻,是IT打工人必备的技能,而掌握LiteOS Studio的图形化调测能力,是LiteOS物联网开发的必备技能。本文会给大家介绍下LiteOS Studio的调测的几个知识点,包括: 调测配置,监视变量,反汇编代码同步展示,数值进制切换,跨平台编译调测,Qemu模拟器调测,多核调测,远程设备调测等。
如果没有标明,本文所演示的工程均为LiteOS开源工程,https://gitee.com/LiteOS/LiteOS 。
LiteOS Studio调测配置
HUAWEI LiteOS Studio 调测配置非常简单,对于在LiteOS Studio上编译的STM32开发板工程,支持一键开启图形化单步调试。除了使用默认调测配置,LiteOS Studio提供调测配置界面供用户进行定制。打开LiteOS Studio工程,点击工程配置界面上的调试器,如下图, 支持配置项有调试器、连接方式、连接速率、调试器目录、GDB目录、可执行文件路径、调试模式配置、工程源码是否通过磁盘映射等。选择的调试器不同,配置项会有差异。
- 调试器配置项
根据实际情况选择JLink、OpenOCD或者Simulator。选择什么调测器,取决于开发板支持什么调试器,并安装相应的调试器软件。如果开发板使用JLink仿真器, 则根据情况安装JLink软件, 从 https://www.segger.com/downloads/jlink/ 下载,并按安装向导完成最新版JLink的安装;如果开发板板载St-link仿真器,建议使用 https://www.segger.com/downloads/jlink#STLink_Reflash ST-Link Reflash Utility工具刷成Jlink,使用Jlink仿真器进行调测; 如果是Qemu仿真工程,调试器需要选择为Simulator。
- 连接方式配置
根据需求选择SWD或JTAG, 连接速率可以默认或者自行指定
- 调试器目录配置
需要选择适合开发板工程的调试器软件目录。
如果调试器选择了JLink,需要指定JLink的具体安装目录(默认为C:\Program Files (x86)\SEGGER\JLink),如果与实际安装目录不一致,调试可能失败,端口默认选择USB。
如果调试器选择了OpenOCD,需要指定OpenOCD的具体安装目录。还需要指定Interface、Target文件。
如果调试器选择了Simulator,需要指定Qemu的具体安装目录(默认为C:\Program Files\qemu)。
- GDB目录配置
GDB目录配置为交叉编译工具链的gdb.exe所在的目录,可以配置默认,或者自行指定。
- 可执行文件路径配置项
完成编译后,可填入elf文件所在路径,或点击浏览图标进行手动设置,也可以点击下拉菜单选择自动匹配的可执行文件。
- 调试模式配置
- 复位调试 会自动重启开发板,并停止在main函数
- 附加调试 不重启开发板,附加到当前程序进程
配置好后点击确认按钮进行保存,会根据用户指定的设置自动生成调测配置.vscode\launch.json。
LiteOS Studio调测执行
在调试配置完毕后, 点击绿色三角按钮开始调试。调试时,需要掌握的几个知识点: 包含监视变量、反汇编代码同步展示,数值进制切换。
- 监视器监视变量
在调测时,在Watch监视器查看变量是非常有用的特性,也支持查看结构化的变量,比如监视g_taskCBArray变量,及下一个任务g_taskCBArray+1,如下图:
- 反汇编代码同步展示
对于LiteOS开源工程,在调测时,默认开启了同时显示源代码和反汇编代码。如下图
当前函数执行到源代码的第107行,在反汇编文件中显示当前的源代码行数、源代码及对应的反汇编代码。调测时,提供了便利,不仅仅关注源代码同时关注反汇编代码。
如果不需要关注反汇编代码,也可以手工关闭该选项,打开.vscode\launch.json,设置showDisassemble为false:
"showDisassemble": false,
- 数值进制切换
在调测过程中,变量的数值可能是10进制进行展示的,如果想查看其他进制展示的数值,可以在调测界面的监视器窗口输入变量名称名称+进制代码来切换进制查看,如memStart,x来查看变量memStart的16进制。如图:
详细的进制代码如下,可以分别到切换16进制、有符号数字、无符号、八进制、二进制、地址值等:
除了使用监视器,还可以在调测控制台的输入窗口,输入p/进制代码 变量名来按指定的格式来输出变量数值。
LiteOS Studio跨平台编译调测
有些开发场景是,在Linux环境上开发、编译LiteOS工程,但是想使用LiteOS Studio在Windows环境进行烧录和调测。对于这种跨平台进行编译调测,LiteOS Studio是支持的。我们在Linux上编译成功:
磁盘映射Linux目录/home/z0037XXXX/OSS_LiteOS/Huawei_LiteOS到Windows目录Z:\OSS_LiteOS\Huawei_LiteOS。使用LiteOS Studio打开这个工程,设置烧录器、调试器。烧录成功后,执行调测,如下图,可以看出只显示反汇编文件,看不到源代码。
这是由于编译的目录和工程源码目录不对应导致的,对于这种情况,调测设置里配置下磁盘映射信息即可:
设置完毕磁盘映射,保存,重新调测,即可正常显示源代码:
LiteOS Studio Qemu模拟器调测
关于LiteOS仿真工程,详细的信息请参考 《基于LiteOS Studio零成本学习LiteOS物联网操作系统》,地址为
https://bbs.huaweicloud.com/blogs/222197 。
LiteOS Studio多核调测
对于有些带有多个核的开发板,比如有Application 核、Protocol核、Security核的NB IoT开发板,LiteOS Studio也是支持同时调测多个核的。NB IoT工程已经完成相应的适配,安装相应的扩展即可。
LiteOS Studio远程设备调测
对于Jlink调测设备,LiteOS Studio也支持远程调测这些设备。在两台电脑上,开发板连接在其中一台开发板上,LiteOS Studio安装在另外一台电脑上,两台电脑均需要安装JLink软件,保持最新且版本一致。
- 启动JLink远程服务器
在连接开发板的电脑上,在JLink安装目录下,手动启动JLinkRemoteServer.exe应用程序,进行如下设置,即可等待用户连入:
- 使用HUAWEI LiteOS Studio远程烧录
在无开发板、安装LiteOS Studio的电脑上,等编译生成烧录文件后,打开工程配置->烧录器, 选择JLink烧录方式,选择端口为IP,并填入远程JLink地址,远程JLink地址填写远程服务器IPv4地址:
烧录器界面配置完成后点击确认按钮,再点击工具栏上的烧录按钮即可执行远程烧录任务。
- 使用HUAWEI LiteOS Studio远程调试
同上,打开工程配置->调试器,选择JLink调试方式,选择端口为IP,并填入远程JLink地址,远程JLink地址填写远程服务器IPv4地址。
完成配置并确认后,点击调试按钮执行远程调试任务。调测过程、步骤和开发板在本地一致。
掌握了这些调测的技巧,如果你的开发板支持调测,就试试LiteOS Studio吧。也欢迎大家分享使用LiteOS Studio调测的心得,有任何问题、建议,都可以留言给我们https://gitee.com/LiteOS/LiteOS_Studio/issues 。谢谢。
本文分享自华为云社区《LiteOS Studio图形化调测能力,物联网打工人必备》,原文作者:zhushy 。
物联网打工人必备:LiteOS Studio图形化调测能力的更多相关文章
- Android Studio 图形化设计 UI 界面
我们开发 Android 程序必定是从 UI 开始的 ,使用最新版的 Android Studio 可以在图形化界面下设计软件 UI, Android Studio 默认的布局是 Constraint ...
- [.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit
[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitS ...
- Git各大平台(win/Linux/Mac)图形化界面客户端大汇总
摘要: 介绍各平台下的图形化界面git客户端(本人并没有全部使用过),欢迎大家补充新的软件或者使用感受~ 一.TortoiseGit - The coolest Interface to Git V ...
- 【转】Git图形化界面客户端大汇总
原文网址:http://my.oschina.net/amstrong/blog/159114 目录[-] 一.TortoiseGit - The coolest Interface to Git V ...
- 几款开源的图形化Redis客户端管理软件
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/98.html?1455870209 Redis是一个超精简的基于内存的键值 ...
- java图形化编程
转载 学习Java Swing图形化编程,我们首先要了解三个最基本的概念:顶层容器,控件,布局. 下面就来介绍一下这三个基本概念 1.顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候,图 ...
- MongoDB图形化管理工具
NoSQL的运动不止,MongoDB 作为其中的主力军发展迅猛,也带起了一股开发图形化工具的风潮:气死反过来说,看一个产品是否得到认可,可以侧面看其第三方工具的数量和成熟程度:简单的收集了MongoD ...
- Caffe学习系列(21):caffe图形化操作工具digits的安装与运行
经过前面一系列的学习,我们基本上学会了如何在linux下运行caffe程序,也学会了如何用python接口进行数据及参数的可视化. 如果还没有学会的,请自行细细阅读: caffe学习系列:http:/ ...
- C语言+SDL2 图形化编程
程设大作业小火车第一版本是命令行界面,第二版本是图形化界面,由于egg库对以后工程开发没有用,我不想用egg库,花了很长时间浏览了一下OpenGL的中文教程,觉得好复杂,需要看很多很多才能写出个简单的 ...
随机推荐
- guitar pro 系列教程(十八):Guitar Pro怎么设置吉他谱的局部速度?
关于Guitar Pro的使用功能我们在前面的文章也有讲了不少,对于新手的小伙伴,就小编个人而言,在吉他编曲,演绎方面遇到的困难不是一点两点,我们只有通过学习了解他的全部,才能在以后的吉他创作中得心印 ...
- JUC并发工具包之Semaphore
目录 Semaphore (JDK) Timed Semaphore (Apache Commons) Semaphore vs. Mutex CodeRepo Semaphore (JDK) 我们使 ...
- 【Updating】汇编语言学习记录02
换码指令.字符的输出 前置知识: XLAT 指令:将BX指定的缓冲区中.AL指定的位移处的一个字节数据取出赋给AL,实际相当于(AL) = (DS:(BX+AL)).注意,不是单纯地赋予AL+BX,而 ...
- Java基础教程——正则表达式
正则表达式·Regular Expression 正则表达式就是一个用于匹配字符串的模板,正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 主要用到的对象: java.util.rege ...
- Mybatis【2.3】-- Mybatis一定要使用commit才能成功修改数据么?
代码直接放在Github仓库[https://github.com/Damaer/Mybatis-Learning],mybatis-02可直接运行,就不占篇幅了. 为什么我们有时候不使用commit ...
- 网络篇:朋友面试之TCP/IP,回去等通知吧
前言 最近和一同学聊天,他想换工作,然后去面了一家大厂.当时,他在简历上写着精通TCP/IP,本着对TCP协议稍有了解,面试官也不会深问的想法,就写了精通二字.没想到,大意了 关注公众号,一起交流,微 ...
- 【mq读书笔记】定时消息
mq不支持任意的时间京都,如果要支持,不可避免的需要在Broker层做消息排序,加上持久化方面的考量,将不可避免地带来巨大的性能消耗,所以rocketMQ只支持特定级别的延迟消息. 在Broker短通 ...
- 【mq读书笔记】消费进度管理
从前2节可以看到,一次消费后消息会从ProcessQueue处理队列中移除该批消息,返回ProcessQueue最小偏移量,并存入消息进度表中.那消息进度文件存储在哪合适呢? 广播模式:同一个消费组的 ...
- HTML的基本术语
一.HTML含义1.根据W3C定义,HTML全称Hyper Text Markup Language: 超文本标记语言,用于定义文档的内容结构,该语言书写的代码通常会被浏览器解析执行.二.css含义1 ...
- 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...