痞子衡嵌入式:MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异。
恩智浦 SW 团队每个季度都会公布 SDK、Tool 官网下载量,其中 MCUXpresso IDE 下载量一直稳步上升,这个恩智浦自家 IDE 其实在欧美和台湾地区是非常受欢迎的,在中国普及率稍微低一点,主要是国内的嵌入式开发者还是更熟悉 IAR/MDK 这两个经典的 IDE。人嘛,都不愿意轻易离开自己的舒适区。
今天痞子衡要介绍的是 MCUXpresso IDE 联合官方 SDK 软件包的示例工程 build 配置管理机制,及其与 IAR、MDK 示例工程的对比差异。
一、准备开发环境
首先需要准备好环境,包含必要的软件,痞子衡的环境如下:
二、回顾IAR/MDK上工程Build
首先给大家普及一下工程 build 的概念,我们知道嵌入式工程里输入型文件除了代码源文件之外,还包含工程配置文件以及链接文件(可以看痞子衡写的 《嵌入式开发文件系列》)。一套代码源文件就是一个具体的应用工程,但是这套代码源文件可以搭配多个不同的工程配置文件和链接文件,因此在 IDE 里每个具体的工程配置文件和链接文件组合都是一个 build。
我们以 SDK\boards\evkmimxrt1170\demo_apps\hello_world\cm7 这个最基础的例程为例来具体介绍。先来看 IAR 工程 hello_world_demo_cm7.eww,这个 workspace 下包含了 6 * 2 个 build。如果把 xx_debug 和 xx_release 算成一种的话,那实际就是 6 种不同的 build:
1. debug/release build 对应链接文件 MIMXRT1176xxxxx_cm7_ram.icf, ro 段链接在 ITCM 起始地址,rw 段链接在 DTCM 里
2. flexspi_nor_debug/release build 对应链接文件 MIMXRT1176xxxxx_cm7_flexspi_nor.icf, ro 段链接在 Flash 起始地址,rw 段链接在 DTCM 里
3. sdram_debug/release build 对应链接文件 MIMXRT1176xxxxx_cm7_sdram.icf, ro 段链接在 ITCM 起始地址,rw 段链接在 SDRAM 里
4. flexspi_nor_sdram_debug/release build 对应链接文件 MIMXRT1176xxxxx_cm7_flexspi_nor_sdram.icf, ro 段链接在 Flash 起始地址,rw 段链接在 SDRAM 里
5. sdram_txt_debug/release build 对应链接文件 MIMXRT1176xxxxx_cm7_sdram_txt.icf, ro 段链接在 SDRAM 起始地址,rw 段链接在 OCRAM 里
6. ram_0x1400_debug/release build 对应链接文件 MIMXRT1176xxxxx_cm7_ram_0x1400.icf, ro 段链接在 ITCM 偏移 0x1400 地址,rw 段链接在 DTCM 里
在实际开发时,可以轻松切换不同 build 做调试,每个 build 对应的工程设置也可以按需调整(预编译宏,优化选项等)。此外,在菜单栏 Project / Edit Configurations 里也可以增删 build。
再来看 MDK 工程 hello_world_demo_cm7.uvprojx,这个 workspace 下同样包含了 6 * 2 个 build,跟 IAR 下体验是完全一致的。此外,在菜单栏 Project / Manage / Project Items 里也可以增删 build。
三、MCUXpresso IDE上工程Build
现在来到了我们的主角 MCUXpresso IDE 工程,SDK 包里默认没有放其工程文件,需要按照 《MCUXpresso IDE下SDK工程导入与workspace管理机制》 一文步骤导入生成。
工程导入成功后,会在 \MCUXpressoIDE_11.4.0_6224\workspace\evkmimxrt1170_hello_world_demo_cm7 下看到 .project 工程文件,在这个 workspace 下默认仅包含了 2 个 build(Debug/Release),这里的体验就跟 IAR/MDK 下不一致了。虽然我们在菜单栏 Project / Build Configurations / Manage 里也可以增删 build。
默认 MCUXpresso IDE 工程仅两个 build 主要跟其链接文件管理机制有关,在 IAR/MDK 下不同 build 的链接文件都是事先准备好的,而 MCUXpresso IDE 下是可以自动实时生成符合要求的链接文件的(下图 Manage linker script 选项默认是勾选的,即可根据 IDE 设置生成链接文件 \MCUXpressoIDE_11.4.0_6224\workspace\evkmimxrt1170_hello_world_demo_cm7\Debug\evkmimxrt1170_hello_world_demo_cm7_Debug_memory.ld)。
基于这种链接文件管理机制,我们确实没有必要创建多个 build,切换 build 实际上就是更改链接文件设定即可(这里假定工程其他设定不需要更改)。当然如果你有一些定制化的链接文件,也可以去掉 Manage linker script 选项的勾选,在路径里指向事先准备好的 .ld 文件也行。关于 IDE 里这部分链接设计,痞子衡后面会再写文章深入介绍。
至此,MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异痞子衡便介绍完毕了,掌声在哪里~~~
欢迎订阅
文章会同时发布到我的 博客园主页、CSDN主页、知乎主页、微信公众号 平台上。
微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异的更多相关文章
- 痞子衡嵌入式:MCUXpresso IDE下SDK工程导入与workspace管理机制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程导入与workspace管理机制. MCUXpresso IDE是恩智浦软件团队倾注很大心血研发 ...
- 痞子衡嵌入式:恩智浦MCUX SDK在GitHub上线了
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦MCUX SDK 在GitHub上线一事. 其实在差不多一个月前(2021年1月6日),恩智浦MCUX SDK就在GitHub悄悄上 ...
- 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下工程链接文件配置管理与自动生成机制. 痞子衡在 2018 年初写过一个专题 <嵌入式开发文件系列&g ...
- 痞子衡嵌入式:MCUXpresso IDE下添加新路径下源文件进工程编译的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加新路径下源文件进工程编译的方法. 接着上篇文章 <MCUXpresso IDE下SDK工程导入与 ...
- 痞子衡嵌入式:MCUXpresso IDE下将应用程序RW段分散链接的几种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下将应用程序RW段分散链接的几种方法. 早期的 MCU 芯片,一般都会嵌入内部 Flash 和 RAM,并且 ...
- 痞子衡嵌入式:MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法. 前段时间痞子衡写了一篇 <在IAR开发环境下将关键函数重 ...
- 痞子衡嵌入式:超级下载算法RT-UFL v1.0在恩智浦MCUXpresso IDE下的使用
痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...
- 痞子衡嵌入式:MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异. 程序函数库是一个包含已经编译好代码和数据的函数集合,这 ...
- 痞子衡嵌入式:MCUXpresso Config Tools初体验(Pins, Clocks, Peripherals)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso Config Tools三大件(Pins, Clocks, Peripherals). 不知道大家有没有这样的感受 ...
随机推荐
- vue3.0使用ant-design-vue进行按需加载原来这么简单
下载 ui库 yarn add ant-design-vue 默认是全局引入,打包后体积很大, 非常影响首屏加载速度, 按需加载 下载按需加载的插件;推荐使用cnpm cnpm install bab ...
- 7.29考试总结(NOIP模拟27)[牛半仙的妹子图·Tree·序列]
前言 从思路上来讲是比较成功的,从分数上就比较令人失望了. 考场上是想到了前两个题的正解思路,其实最后一个题是半个原题,只可惜是我看不懂题... 这波呀,这波又是 语文素养限制OI水平.. 改题的时候 ...
- intouch 10.1出现暂停读取PLC数据问题及其解决
问题描述 雨水泵站经过3年运行,突发dasmbtcp驱动与施耐德M580系列PLC时断时连问题 原因分析 在经过现场软件重装修复,授权重装,网络通讯状态监视(一直ping PLC IP地址方式)重装d ...
- ECShop 2.x/3.x SQL注入/任意代码执行漏洞
poc地址:https://github.com/vulhub/vulhub/blob/master/ecshop/xianzhi-2017-02-82239600/README.zh-cn.md 生 ...
- 用 区间判断(if)来猜价格的高低
1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5 int price = 150; 6 int gue ...
- Android面试官:说说你对 Binder 驱动的了解?
面试官提了一个问题:说说你对 binder 驱动的了解.这个问题虽有些 "面试造火箭" 的无奈,可难点就是亮点.价值所在,是筛选面试者的有效手段.如果让你回答,你能说出多少呢?我们 ...
- 物理机安装ESXi并优化部署虚拟机
物理机配置 CPU,BIOS中启用虚拟化(VT-X) 内存和硬盘,内存尽量大.硬盘最好SSD,内存的大小和硬盘的速度直接决定了虚拟机运行的快慢 网络,至少一块千兆网卡(vSphere7.0版本以后支持 ...
- Map的putAll方法验证
下面的程序验证了Map的putAll方法的行为特性,代码如下: import java.util.HashMap; public class Map_putAllTest { public stati ...
- 一篇文章搞懂密码学基础及SSL/TLS协议
SSL协议是现代网络通信中重要的一环,它提供了传输层上的数据安全.为了方便大家的理解,本文将先从加密学的基础知识入手,然后展开对SSL协议原理.流程以及一些重要的特性的详解,最后会扩展介绍一下国密SS ...
- FTP三种访问模式
FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露. vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数 ...