大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程在Build配置上与IAR,MDK差异

  恩智浦 SW 团队每个季度都会公布 SDK、Tool 官网下载量,其中 MCUXpresso IDE 下载量一直稳步上升,这个恩智浦自家 IDE 其实在欧美和台湾地区是非常受欢迎的,在中国普及率稍微低一点,主要是国内的嵌入式开发者还是更熟悉 IAR/MDK 这两个经典的 IDE。人嘛,都不愿意轻易离开自己的舒适区。

  今天痞子衡要介绍的是 MCUXpresso IDE 联合官方 SDK 软件包的示例工程 build 配置管理机制,及其与 IAR、MDK 示例工程的对比差异。

一、准备开发环境

  首先需要准备好环境,包含必要的软件,痞子衡的环境如下:

  • 集成开发环境: MCUXpresso IDE_11.4.0_6224,点此下载
  • 软件开发包: SDK_2.10.0_EVK-MIMXRT1170(Toolchain需包含MCUXpresso IDE),点此下载

二、回顾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差异的更多相关文章

  1. 痞子衡嵌入式:MCUXpresso IDE下SDK工程导入与workspace管理机制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下SDK工程导入与workspace管理机制. MCUXpresso IDE是恩智浦软件团队倾注很大心血研发 ...

  2. 痞子衡嵌入式:恩智浦MCUX SDK在GitHub上线了

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是恩智浦MCUX SDK 在GitHub上线一事. 其实在差不多一个月前(2021年1月6日),恩智浦MCUX SDK就在GitHub悄悄上 ...

  3. 痞子衡嵌入式:MCUXpresso IDE下工程链接文件配置管理与自动生成机制

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下工程链接文件配置管理与自动生成机制. 痞子衡在 2018 年初写过一个专题 <嵌入式开发文件系列&g ...

  4. 痞子衡嵌入式:MCUXpresso IDE下添加新路径下源文件进工程编译的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加新路径下源文件进工程编译的方法. 接着上篇文章 <MCUXpresso IDE下SDK工程导入与 ...

  5. 痞子衡嵌入式:MCUXpresso IDE下将应用程序RW段分散链接的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下将应用程序RW段分散链接的几种方法. 早期的 MCU 芯片,一般都会嵌入内部 Flash 和 RAM,并且 ...

  6. 痞子衡嵌入式:MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将关键函数重定向到RAM中执行的几种方法. 前段时间痞子衡写了一篇 <在IAR开发环境下将关键函数重 ...

  7. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在恩智浦MCUXpresso IDE下的使用

    痞子衡主导的"学术"项目 <RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计> v1.0 版发布近 4 个月了,部分客户已经在实际项目开发调试中用上了这个 ...

  8. 痞子衡嵌入式:MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是MCUXpresso IDE下将源码制作成Lib库方法及其与IAR,MDK差异. 程序函数库是一个包含已经编译好代码和数据的函数集合,这 ...

  9. 痞子衡嵌入式:MCUXpresso Config Tools初体验(Pins, Clocks, Peripherals)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso Config Tools三大件(Pins, Clocks, Peripherals). 不知道大家有没有这样的感受 ...

随机推荐

  1. Python自动化测试面试题-接口篇

    目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...

  2. Webstorm 快速补全

    el-row>el-col*3>[:span='7'] 按Tab <el-row> <el-col> <div :span="">& ...

  3. solr(CVE-2019-17558)远程命令执行

    影响版本 Apache Solr 5.x到8.2.0版本 测试 https://github.com/jas502n/CVE-2019-0193

  4. jadx的使用

    使用jadx之前必须安装配置java环境才能正常打开运行 https://www.cnblogs.com/yhoil/p/14808648.html 一.前言 今天介绍一个非常好用的反编译的工具 ja ...

  5. C# 事件与继承

    在窗体编程过程中,常常会封装一个基类,包含未来业务中常用的属性.方法.委托.事件等,但是事件作为一个特殊的委托,只能在声明类中调用,派生类都不可以调用,所以在基类中必须实现一个虚函数,实现事件的调用, ...

  6. Java数组05——Arrays类

    Arrays类讲解  package array; ​ import java.util.Arrays; ​ public class ArrayDemon07 {     public static ...

  7. 掌握JavaScript中的Promise,实现异步编程

    事件循环 基本介绍 JavaScript是一门单线程的编程语言,所以没有真正意义上的并行特性. 为了协调事件处理.页面交互.脚本调用.UI渲染.网络请求等行为对主线程造成的影响,事件循环(event ...

  8. Unsatisfied dependency expressed through field 'rabbitTemplate'错误总结

    1. 在springboot中整合RabbitMq的过程中,遇到如下错误:(截取部分) org.springframework.beans.factory.UnsatisfiedDependencyE ...

  9. SortCompare.time的反射版本

    "Algorithms" by Robert Sedgewick, p256, SortCompare.time(): public static double time(Stri ...

  10. MySQL-20-MySQL优化

    MySQL优化哲学 1 为什么优化? 为了获得成就感? 为了证实比系统设计者更懂数据库? 为了从优化成果来证实优化者更有价值? 但通常事实证实的结果往往会和你期待相反!优化有风险,涉足需谨慎! 2 优 ...