实用指南:NXP - 用MCUXpresso IDE v25.6.136的工具链编译Smoothieware固件工程

news/2025/10/15 19:53:34/文章来源:https://www.cnblogs.com/wzzkaifa/p/19144133

文章目录

    • NXP - 用MCUXpresso IDE v25.6.136的工具链编译Smoothieware固件工程
    • 概述
    • 笔记
    • Smoothieware固件工程编译器的版本
    • 查看MCUXpresso IDE v25.6.136的工具链版本
    • 替换冰沙的工具链为MCUXpresso IDE的,然后尝试重新编译
    • 用完整的MCUXpresso IDE v25.6.136命令行来编译官方冰沙工程
    • 备注
    • END

NXP - 用MCUXpresso IDE v25.6.136的工具链编译Smoothieware固件工程

概述

上次做了一个实验NXP - 查看Smoothieware固件工程命令行编译时的具体编译命令行,还有些要确认的地方。

Smoothieware固件工程使用的编译器是古早的版本,且是作者指定的。
如果我要将Smoothieware固件工程移植到MCUXpresso IDE,是否会因为编译器的不同,导致编译不过?或者编译后的elf体积增加,导致无法下载到LPC1769内?

想确认一下这些细节问题。即使真的没问题,确认一下,心里有底总是好的。

笔记

Smoothieware固件工程编译器的版本

双击 D:\3rd\openpnp_prj\Smoothieware\Smoothieware\BuildShell.cmd

D:\3rd\openpnp_prj\Smoothieware\Smoothieware>arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.8.3 20140228 (release) [ARM/embedded-4_8-branch revision 208322]
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
D:\3rd\openpnp_prj\Smoothieware\Smoothieware>arm-none-eabi-g++ --version
arm-none-eabi-g++ (GNU Tools for ARM Embedded Processors) 4.8.3 20140228 (release) [ARM/embedded-4_8-branch revision 208322]
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
D:\3rd\openpnp_prj\Smoothieware\Smoothieware>where arm-none-eabi-gcc
D:\3rd\openpnp_prj\Smoothieware\Smoothieware\gcc-arm-none-eabi\bin\arm-none-eabi-gcc.exe

可知,冰沙工程官方版本的工具链为arm-gcc-4.8.3

查看MCUXpresso IDE v25.6.136的工具链版本

打开MCUXpresso IDE, 新建c++工程,MCU为LPC1769, 不加任何库(LpcOpen或者CMSIS), 选择工具链(gun++11, gun11), 不使能CRP.
初始的工程代码是能编译过的。
打开匹配工程环境的命令行
在这里插入图片描述

Microsoft Windows [版本 10.0.19045.5487]
(c) Microsoft Corporation。保留所有权利。
D:\my_tmp\nxp_dev\ws\testOnly1>arm-none-eabi-gcc --version
arm-none-eabi-gcc (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
D:\my_tmp\nxp_dev\ws\testOnly1>arm-none-eabi-g++ --version
arm-none-eabi-g++ (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
D:\my_tmp\nxp_dev\ws\testOnly1>where arm-none-eabi-g++
C:\nxp\MCUXpressoIDE_25.6.136\ide\plugins\com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204\tools\bin\arm-none-eabi-g++.exe
D:\my_tmp\nxp_dev\ws\testOnly1>where arm-none-eabi-gcc
C:\nxp\MCUXpressoIDE_25.6.136\ide\plugins\com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204\tools\bin\arm-none-eabi-gcc.exe

可知,在MCUXpresso IDE v25.6.136中新建的固件工程,用的工具链为arm-gcc-14.52

替换冰沙的工具链为MCUXpresso IDE的,然后尝试重新编译

C:\nxp\MCUXpressoIDE_25.6.136\ide\plugins\com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204\tools\bin\中的所有东西,都拷贝到D:\3rd\openpnp_prj\Smoothieware\Smoothieware\gcc-arm-none-eabi\bin\
可以看到未被替换的文件如下
在这里插入图片描述
在这里插入图片描述
重新编译官方版的冰沙工程
双击 D:\3rd\openpnp_prj\Smoothieware\Smoothieware\BuildShell.cmd

make clean
make

在这里插入图片描述
MCUXpresso IDE版的工具链还需要cc1.exe.
找一下
在这里插入图片描述
在这里插入图片描述
C:\nxp\LPCXpresso_8.2.2_650\lpcxpresso\tools\lib\gcc\arm-none-eabi\5.4.1下面的所有东西都复制到D:\3rd\openpnp_prj\Smoothieware\Smoothieware\gcc-arm-none-eabi\bin\

再尝试编译
在这里插入图片描述
编译不过
看来必须要用完整的MCUXpresso IDE v25.6.136命令行来试试。

用完整的MCUXpresso IDE v25.6.136命令行来编译官方冰沙工程

在这里插入图片描述

# 命令行打开时,工作目录是在MCUXpresso IDE中新建工程的目录
# 需要切到冰沙官方工程的目录
D:\my_tmp\nxp_dev\ws\testOnly1>cd /d D:\3rd\openpnp_prj\Smoothieware\Smoothieware
# 确认一下gcc是否还是MCUXpresso IDE自带的
D:\3rd\openpnp_prj\Smoothieware\Smoothieware>arm-none-eabi-gcc --version
arm-none-eabi-gcc (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 现在工具链还是MCUXpresso IDE自带的
# 开始编译冰沙官方工程
make clean
make all

编译不过,看来工具链还是有区别。不过问题不大,都是标准头文件缺失,补上就行。

在这里插入图片描述
按照编译报错的提示,用SI4载入工程所有文件,修正后,再编译
在SI4中,设置工程源码目录为D:\3rd\openpnp_prj\Smoothieware\Smoothieware,只需要将包含源码的4个目录加入即可。
LPC1768也是临时目录,make clean之后就没有了。这个目录不加入SI4.
在这里插入图片描述
报错时,看最上面一行来修正错误。
在这里插入图片描述
在这里插入图片描述
现在知道,换了编译器,工程中始终缺cstdint的头文件,这个错误就不记录了。
又编译了一下,还是有.h少这个头文件。
在SI4中,在过滤器中输入*.h, 然后点开每个.h, 在头上补充 *#include <cstdint>,不过数量比较多,挨个补充后,再编译
怪不得官方要指定编译器,原来冰沙官方工程,在这个编译器下的测试是通过的。
在这里插入图片描述
工程中的drop目录是临时的,里面有拷贝过来的头文件,将这个临时目录删掉,再补充头文件内容。
在这里插入图片描述
加到一半,发现有些.h是不需要加的。有点担心了,不过是系统头文件,加了也不会有啥副作用。
算了,都加完,如果有副作用,git恢复,再一个一个按需添加(尽量加到上层的.h中)。

在这里插入图片描述
说copy没找到,尝试将C:\nxp\MCUXpressoIDE_25.6.136\ide\plugins\com.nxp.mcuxpresso.tools.win32_25.6.0.202501151204\buildtools\bin\中的cp.exe复制为copy.exe试试,不行。

# 手工新建 .\mbed\src\drop目录后,下面的cp命令成功
cp .\mbed\src\cpp\AnalogIn.h .\mbed\src\drop\AnalogIn.h

那需要将makefile中的copy命令改为cp命令才行了。
修改 D:\3rd\openpnp_prj\Smoothieware\Smoothieware\mbed\src\arm-common.mk
在这里插入图片描述
修改 D:\3rd\openpnp_prj\Smoothieware\Smoothieware\mbed\src\Makefile
在这里插入图片描述

再尝试编译,报错。
是路径符号要换成’/‘才行,不能是windows下的’\’
在这里插入图片描述
修改 D:\3rd\openpnp_prj\Smoothieware\Smoothieware\mbed\src\Makefile
在这里插入图片描述
再尝试编译,报错
在这里插入图片描述
cstdint不能随便加,因为这个工程是c和C++混合编程,如果.c包含了头文件,是无法找到c++的头文件的。
看来图省事,乱搞是不行的。
那我将.h中加入的cstdint都恢复,然后按照编译提示去加,尽量加在上层的.h中(如果没有上级.h, 只能加在本.h中),这样工作量小一些。
加的东西如下

#ifdef __cplusplus
#include <cstdint>#include <cstddef>#include <string>#else// #include <stdint.h>#endif

再重新编译一遍

make clean
make all

编译过了,且生成的elf的flash占用空间,并不比官方指定的旧工具链编译出来的大。O了。
在这里插入图片描述

备注

这个实验达到目的了。
已经将官方的原版Smoothieware固件工程,更换了工具链(MCUXpresso IDE v25.6.136自带的arm-gcc), 成功编译出了文件。
这个实验保证了,只要移植到MCUXpresso IDE编译环境,一定是可以正常编译调试的。需要注意: 添加进MCUXpresso IDE要指定好原版的编译参数(e.g. 预编译宏), 保证编译的效果和命令行环境下一致就行,这从MCUXpresso IDE编译过程的日志中,是能看出来的。

END

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

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

相关文章

Erlang 的英文数字验证码识别系统设计与实现

一、引言 验证码(CAPTCHA)作为互联网中抵御自动化攻击的重要安全机制,被广泛用于登录验证、注册防刷、评论防机器人等场景。 传统验证码识别常用 Python 或 C++ 实现,而本文将介绍如何用 Erlang 来构建一个基础的英…

使用Django从零开始构建一个个人博客系统 - 实践

使用Django从零开始构建一个个人博客系统 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

2025年磨床厂家TOP企业品牌推荐排行榜,平面磨床,外圆磨床,数控平面磨床,数控外圆磨床,7163平面磨床推荐这十家公司!

当前磨床市场竞争愈发激烈,产品质量参差不齐,不少企业在选购磨床时面临诸多难题。部分厂家缺乏严格的质量管控体系,生产的磨床精度不足、稳定性差,难以满足汽车摩托车、工程机械、军工等行业对加工精度的高要求;还…

cifar10

import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms from multiprocessing import freeze_support import sys 1. 加载和预处理数据 d…

[LangChain] 02. 模型接口

LangChain 支持两类主流语言模型:文本补全模型 对话模型文本补全模型 Text Completion Models 这类模型以一段纯文本作为输入,输出结果是一段连续生成的文字(这里的输出文本其实就是对前面输入文本的一个补全),不…

摄像头调试

camera调试经验分享 收藏 一 关于Sensor预览时有条纹: 1。电源不稳定,CMOS sensor对电源的稳定度蛮高的。 2。同步信号受干扰,彩色条纹显然是每行数据中有信号丢失造成。 3。检查mclk和pclk以及他们的ratio,软件…

软件工程作业-报告1 - 实践

软件工程作业-报告1 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

C语言学习——字符串数据类型

字符串的数据类型只有char来进行定义,相对之前的来讲较少同样打印的内容需要用引号来进行标注,同时也可以用与整数和小数的方法来进行测量字节 接下来我们对以上三种数据类型进行一个总结和概括: > 所有整数,小…

感知节点@4@ ESP32+arduino+ 第二个程序 LED灯显示

1、查看电路图,那个ESP32的引脚连接LED灯 图中看到是IO2 2、查找和打开例程Blink 3、按照电路图,定义引脚编号 4)编译下载固件 点击“上传”按钮,同时一直按住电路板上的BOOT(IO0)按钮,直到开始下载固件…

WebGL学习及项目实战(第02期:绘制一个点)

@目录目标WebGL原理示意图着色器顶点着色器:片元着色器:着色器代码如下web端(js)js代码代码结构梳理流程图完整代码(可直接在浏览器中查看)运行效果 目标使用WebgL绘制一个点 了解整个绘制的编写流程并进行梳理和…

2025 年 10 月国内加工中心制造商最新推荐排行榜:涵盖立式、卧式、龙门及多规格型号!

当前加工中心市场厂商数量繁杂,产品质量、技术实力与服务水平差异显著,汽车摩托车、工程机械、军工等行业采购方在挑选设备时,常面临不知如何辨别优质厂商、耗费大量时间调研却难觅适配产品的困境。部分厂商存在技术…

display ip routing-table protocol ospf 概念及题目 - 详解

display ip routing-table protocol ospf 概念及题目 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

C语言学习——小数数据类型

> 小数的数据类型分为:float、double > 不同的数据类型所表示的范围和内存大小都不一样可以用,由编译器来决定,可以用sizeof来决定 > 小数的取值范围比整数的大 > c语言的的小数默认double联系的…

高敏感人应对焦虑

2️⃣ 注意力外投法:从内心的泥潭中抽身 烦躁和无法学习,往往是因为注意力被困在了内心的思虑中。我们需要强行把它拉出来,投向外部世界。5-4-3-2-1感官法:具体操作:无论在何处,立刻(在心里或小声地)说出:5 个…

kali构建PHP_MYSQL

kali构建PHP_MYSQL配置Mysql sudo mysql -u root //第一次可以直接进入 alter user root@localhost identified by 123456; create database usr;配置PHP 进入目录:cd /etc/php/8.2/apache2 执行:sudo vim +904 php.in…

Palantir本体论以及对智能体建设的价值与意义

Palantir本体论以及对智能体建设的价值与意义 赋能智能体:Palantir Foundry本体工程如何构建企业级AI的“可编程数字孪生”摘要: 随着大语言模型(LLM)驱动的智能体(AI Agent)成为企业数字化的核心驱动力,传统的…

2025 年执业兽医资格证备考服务机构推荐榜,执业兽医资格证培训机构/执兽考试机构/考试辅导机构获得行业推荐

随着养殖业规模化发展与行业规范化推进,执业兽医资格证已成为从业人员开展专业工作的核心凭证,对应的备考需求逐年增长。但当前市场上,执业兽医资格证备考服务机构在课程适配性、师资专业性、服务响应效率等方面存在…

[LangChain] 基本介绍

在大模型时代,LangChain 是一个帮助开发者快速构建“智能应用” 的工具框架。它像是你搭建 AI 应用时的“万能胶水”——把大模型(如 OpenAI、LLM API)、工具(如搜索引擎、数据库)、记忆能力、链式调用等模块统统…

题解:P6755 [BalticOI 2013] Pipes (Day1)

P6755:构造、图论、拓扑排序、线性代数。题目等价于:给定一个无向图和所有点的点权,给每条边确定一个边权,使得每个点的点权等于与其相连所有边的边权和除以二。特别地,如果无解或有无数解,只需输出 \(0\) 即可。…

深度学习调试记录 - 详解

深度学习调试记录 - 详解2025-10-15 19:18 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fo…