大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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. windows10激活方法

    原文转自:http://www.ylmfwin100.com/ylmf/8643.html 现在市面上大致有两种主流激活方法,一种是通过激活码来激活,另外一种是通过激活工具来激活.但是激活工具有个弊端 ...

  2. 一文读懂Spring动态配置多数据源---源码详细分析

    Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 ​ 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批改中间件这块抽象出来, 但这块主要使用的是mq消息的方式 ...

  3. Redis 实战篇:巧用数据类型实现亿级数据统计

    在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序. 常见的场景如下: 给一个 userId ,判断用户登陆状态: 两亿用户最近 7 ...

  4. 我说AOP(面向切面编程)--藏在苹果里的五角星

    这只是一篇入门理解! 一直听说AOP的名字,却从未使用过,因为我不会.但--那只是曾经-- 先看官方解释:AOP(Aspect-Oriented Programming,面向切面的编程),它是可以通过 ...

  5. RHCSA_DAY05

    计算机硬件组成部分 输入设备:键盘.鼠标.触控屏等 主机设备:主板.中央处理器(CPU).主存储器(内存).网卡.声卡.显示卡等 输出设备:屏幕.耳机.打印机.投影仪等 外部存储设备:硬盘.软盘.光盘 ...

  6. 一专属SRC - XSS - Bypass长亭Waf

    bypass是预言表哥绕的,擦,我这篮子玩xss什么都绕不过 https://www.cnblogs.com/yuyan-sec 这博客我直接倒背如流 主要记录下这次挖掘的过程 先说下 bypass姿 ...

  7. Android开发没有一技之长就废了吗?

    写在前面的话 不知你发现没有,人到中年之后,时间流逝的速度仿佛越来越快? 还记得毕业那会儿,我们怀着新鲜和好奇踏进了职场,那个时候每天都是满满的挑战和需要学习的东西,感觉时间过得真慢啊: 不知道从什么 ...

  8. Android开发三年,面了八家公司终于腾讯上岸,含泪整理面经

    在下2017年毕业,目前从事android开发工作已经3年多了,前段时间刚完成一次跳槽,面试了几家公司,将一些面试经验分享给大家,希望对大家有所帮助. 写在前面 这次跳槽总共是面了8家,(2小,4中, ...

  9. 一次关于shiro反序列化漏洞的思考

    0x01前言 之前在我反序列化的那篇文章中(https://www.cnblogs.com/lcxblogs/p/13539535.html),简单说了一下反序列化漏洞,也提了一嘴常见的几种Java框 ...

  10. 联合迭代器与生成器,enumerate() 内置函数真香!

    花下猫语:Python 中很多内置函数的作用都非常大,比如说 enumerate() 和 zip(),它们使得我们在作迭代操作时极为顺手.这是一篇很多年前的 PEP,提议在 Python 2.3 版本 ...