openpnp - Smoothieware project debug

news2025/1/13 10:04:23

文章目录

    • openpnp - Smoothieware project debug
    • 概述
    • 笔记
    • 记录一下工程中, 和调试相关的资料
    • 备注
    • END

openpnp - Smoothieware project debug

概述

迁出了Smoothieware工程, 想单步调试学习一下工程.
工程可以编译下载, 但是没有对单步调试方法做说明.
研究了几天, 大概知道咋回事了.

笔记

我只能说这个项目的开源大神的思路比较清奇.

这个工程的调试方式是MRI.
先将工程中加入MRI代码, 然后烧录到MCU中.
然后用串口连接MCU, 用GDB方式调试…

明明用的LPC1769, MCU就有JTAG接口, 为啥要用串口去调试呢? 又不是人家STC只能串口调试…

MRI只支持几种特定的MCU和开发板. 这个MRI工程的作者, 还不断更新工程. 不知道他咋想的.
好像唯一的好处是: 只用串口调试, 不需要额外的调试硬件.
但是, 这年头, 迁出了这个工程的人, 谁还缺个JLINK啊?

用过GDB的人就知道, 这是人用的调试器么? 又不是helloworld, 巨量的代码中, 让这个项目的小白用GDB调试试试?
如果这个世界上只有linux, 那用GDB调试没人吐槽啊.
再说了, 有几个人在windows下用GDB调试呢? 一声叹息啊.

每个MCU官方厂家都提供了专用的IDE(NXP有 MCUXpresso, ST有STM32CubeMX), 如果您不想用原厂提供的IDE, 厂家还提供了MDK, IAR的工程模板和对应的例程/库.

用MCU厂家提供的方式开发不香么?

大神们咋用这么膈应的东西…
如果不是作者或fork工程进行改进的大神, 基本上是不可能用MRI方式进行调试的.
只有是作者本人(或者对工程脉络很清楚的大神), 工程逐步迭代, 每次都调试一部分, 测试提交后, 都是没错误的实现. 这样才有可能用GDB调试要修改的那部分代码.
对于工程的学习者(这个项目的小白), 想随意调试学习想要的代码实现, 基本不可能.

记录一下工程中, 和调试相关的资料

这个工程使用MRI调试, 我是看到了工程中的mri目录, mbed目录, gcc-arm-none-eabi目录, 然后迁出MRI工程, 看说明, 基本可以断定, Smoothieware工程使用MRI调试的.

MRI 工程 https://github.com/adamgreen/mri/
在这里插入图片描述

mri/README.md 中有MRI入门的资料
在这里插入图片描述
mri/notes/mri-getting-started.creole

There are a few things that you need to download and install before using MRI:
* Follow the instructions at [[https://github.com/adamgreen/gcc4mbed#quick-start]] to install the latest version of the GCC4MBED project which includes the MRI debug monitor.
* MRI doesn't work if the JTAG debug interface is actively being used on the device.  Any such JTAG usage will need to be disabled before you can use MRI.  What needs to be done will differ depending on your device:

...


===Connect GDB to mbed
We are now going to connect GDB to your mbed device over the USB virtual serial port.  The command you use to start GDB is similar across different operating systems and machines but the serial port identification portion at the end of the command line will depend on your particular machine.  Just replace that portion of the command line examples shown next with what you found in the first step of this Getting Started guide:
* **Windows:** {{{arm-none-eabi-gdb FileTest.elf --baud 460800 -ex "set target-charset ASCII" -ex "set print pretty on" -ex "set remotelogfile mri.log" -ex "target remote com3"}}}

...

===Let's do some debugging
GDB is now waiting for us to give it some debugging commands so let's start out by looking at the code around the line we are currently halted at to get a feel for where we are in the sample code.  We can do this by issuing the **list** command:
{{{
(gdb) list
32
33	    if (MRI_ENABLE)
34	    {
35	        mriInit(MRI_INIT_PARAMETERS);
36	        if (MRI_BREAK_ON_INIT)
37	            __debugbreak();
38	    }
39
40	    __libc_init_array();
41	    mainReturnValue = main();
}}}
So line 37 is actually a {{{__debugbreak()}}} instruction that was issued because the MRI_BREAK_ON_INIT variable was set in our debug build.  We can also see that {{{__libc_init_array()}}} and main() will actually be called after we start up the application again.

在这里插入图片描述
通过工程目录中出现的相关目录, 脚本, 基本可以断定, Smoothieware工程就是用MRI调试的.
但是我没有去实验, 毕竟一看就反胃, 提不起兴趣.

备注

我的想法: 将Smoothieware实现迁移到MCUXpresso或者MDK/IAR的工程上, 然后再学习这个工程.
这个迁移不难啊.

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/501747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring/SpringBoot常用注解总结

为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数)。所以,自…

第三章 图像的低通与高通滤波

文章目录 前言一、卷积操作二、低通滤波1. 方盒滤波与均值滤波2. 中值滤波3.高斯滤波3.1 高斯分布3.2 滤波流程3.2 OpenCV代码及手动实现 4. 双边滤波4.1 原理4.2 OpenCV代码实现 二、高通滤波1. Sobel算子2. Schar算子3.拉普拉斯算子4. Canny边缘检测4.1 算法流程4.1.2 图像降…

垃圾回收小程序开发功能与优势有哪些?

垃圾回收、二手资源回收、废旧物品回收是最近几年社会提倡也越来越受到人们重视的,所以市面上也产生了一系列二手资源回收软件助力再生资源得到更好的利用,同时对环境保护也有很积极的作用。 垃圾资源回收小程序借助微信平台强大的用户群体&#…

CCF-202209-2-何以包邮?01背包

目录 1、题目描述: 2、思路1:动态规划 2.1、确定dp数组及下标含义 2.2、递推公式 2.3、初始化dp数组 2.4、确定遍历顺序 2.5、C实现如下 3、思路2:暴力法-空间换时间 1、题目描述: 新学期伊始,适逢顿顿书城有…

OpenGL(八)——图像逆透视算法IPM

目录 一、前言 二、相机模型 2.1 针孔模型 2.2 相机外参 三、逆透视模型 四、算法总结 一、前言 透视变换(Perspective Transformation)是指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线…

Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题

Cesium 实战-解决 The browser supports WebGL, but initialization failed 问题 系统环境版本试错过程解决问题 在公司内网服务器部署 Cesium 项目的时候,发现提示浏览器不支持 WebGL 错误,经尝试,确认 Cesium 1.101.0 以及之前的版本是可以…

职场小白如何快速成为房地产策划专家?全覆盖解密

如果你是刚入行的地产策划新手小白: 1、首先要会房地产的基础知识,相关的政策法规等,因为这些都是制定策略的最基本的依据,如果这些你都不熟,制定出来的策划就会有错误。建议你多买几本地产基础知识的书看看。 2、把…

14.网络编程基础

1.网络编程入门 1.1 网络编程概述【理解】 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计…

Axios概述

一、Json-server 获得零编码的完整伪造 REST API zero coding 在不到 30 秒的时间内 &#xff08;认真&#xff09;。 使用 <3 创建&#xff0c;适用于需要快速后端进行原型设计和模拟的前端开发人员&#xff0c;模拟后端发送过来json数据。 1.安装 npm install -g jso…

OPNET Modeler 例程——停等协议的建模和仿真

文章目录 一、概述二、链路模型和包格式创建三、进程模型1.src 进程模型2.sink 进程模型 四、节点模型五、网络模型六、仿真结果 一、概述 本例程是在 OPNET Modeler 中对停等协议的建模和仿真&#xff0c;其中停等协议的操作过程如下&#xff1a; &#xff08;1&#xff09;发…

【Spring Cloud Alibaba】Nacos config的使用和高阶用法

文章目录 &#x1f40d;第一步&#xff0c;创建配置文件到nacos中&#x1f40d;第二步&#xff0c;在项目中配置nacos的地址和指定文件&#x1f40d;第三步&#xff0c;读取配置文件&#x1f426;高阶用法&#x1f426;高阶用法一&#xff1a;使用yaml文件&#x1f426;第一步&…

5年功能测试,薪资定格8K迷茫了....我该如何破局?

前言 来自一位粉丝的投稿&#xff0c;从毕业开始就一直在从事软件测试的工作&#xff0c;到目前已经是第5个年头了&#xff0c;从4k涨到了8K&#xff0c;显而易见我们这位粉丝并不满足现状&#xff0c;于是问我怎么破局&#xff0c;他当下应该干什么事情,或者应该学习什么技术…

从零开始学习Linux运维,成为IT领域翘楚(十)

文章目录 &#x1f525;Linux网络防火墙&#x1f525;Linux内核机制 &#x1f525;Linux网络防火墙 防火墙管理工具 firewalld概述 Centos 系统中集成了多款防火墙管理工具&#xff0c;其中 firewalld服务是默认的防火墙配置管理工具&#xff0c;它拥有基于 CLI&#xff08;…

Aha! Adaptive History-driven Attack for Decision-based Black-box Models

AHA!基于决策的黑盒模型的自适应历史驱动攻击 Aha! Adaptive History-driven Attack for Decision-based Black-box Models ABSTRACT 基于决策的黑盒攻击指的是只使用受害者模型的前1个标签来制作对抗示例。一种常见的做法是从一个大的扰动开始&#xff0c;然后用一个确定的方…

【Nacos源码分析】

Nacos源码分析 Nacos源码分析1.下载Nacos源码并运行1.1.下载Nacos源码1.2.导入Demo工程1.3.导入Nacos源码1.4.proto编译1.4.1.什么是protobuf1.4.2.安装protoc1.4.3.编译proto 1.5.运行 2.服务注册2.1.服务注册接口2.2.客户端2.2.1.NacosServiceRegistryAutoConfiguration2.2.2…

【软件测试】| 软件测试 - 答疑篇

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;软件测试 &#x1f397;️ 如何优雅的活着&#xff0c;是我找寻的方向 目录 一、什么是软件测试二、测试和调试的区别三、软件测试和开发的区别 一、什么是软件测试 最常见的理解是&#xff1a;软…

使用J-Link的J-Scope功能查看数据实时波形

使用串口打印波形的不便之处 对于要查看的实时变量&#xff0c;一般可以用串口打印到可以查看波形的上位机上。但是这种办法有几个不方便的地方&#xff1a; 需要根据配套上位机的通讯协议&#xff0c;在单片机上编写上传数据的代码 单片机CPU需要浪费部分时间在串口数据上传上…

Makefile基础教程(变量的介绍和使用)

文章目录 前言一、Makefile变量概念介绍二、Makefile中变量的赋值方式1.简单赋值2.递归赋值3.条件赋值4.追加赋值 三、Makefile赋值在工程中的应用总结 前言 在C语言等语言中存在变量这个概念那么在Makefile中也是存在变量这个概念的&#xff0c;现在就让我们来学习一下什么是…

Solr(5):Solr控制台说明-主面板

1 Dashboard(仪表盘) 访问 http://ip:8983/solr时&#xff0c;出现该主页面&#xff0c;可查看到solr运行时间、solr版本&#xff0c;系统内存、虚拟机内存的使用情况 这里的图片描述 2 Logging(日志) 显示solr运行出现的异常或错误 3 Core Admin (core管理) 主要有Add Cor…

Java--io流知识总结

什么是输入/输出流 Java 程序通过流来完成输入/输出&#xff0c;所有的输入/输出以流的形式处理。因此要了解 I/O 系统&#xff0c;首先要理解输入/输出流的概念。 输入就是将数据从各种输入设备&#xff08;包括文件、键盘等&#xff09;中读取到内存中&#xff0c;输出则正好…