大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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. 如何在VeryCD中下载资源

    这个方法也是百度来的,记在这里的目的不是为了显摆,主要是担心自己大脑记不住,用的时候又要重新找方法. 操作系统:Linux Mint 17 首先,在VeryCD中看好了某个资源,比如搜索的<哈利 ...

  2. 【系统学习ES6】第一节:新的声明方式

    [系统学习ES6] 本专题旨在对ES6的常用技术点进行系统性梳理,帮助大家对其有更好的掌握.计划每周更新1-2篇,希望大家有所收获. 以前用ES5时,声明变量只能用var.ES6的出现,为我们带来了两 ...

  3. 渗透测试思路 - CTF(番外篇)

    渗透测试思路 ​ Another:影子 (主要记录一下平时渗透的一些小流程和一些小经验) CTF(番外篇) ​ 笔者是一个WEB狗,更多的是做一些WEB类型题目,只能怪笔者太菜,哭~~ 前言 ​ 本篇 ...

  4. cmd MySQL登录

    mysql -uroot -p >Mysql -P 3306 -h 0.0.0.0 -u root -p 可远程访问

  5. AHKManager.ahk AHK管理器 2019年12月15日

    AHKManager.ahk  AHK管理器  2019年12月15日 快捷键   {Alt} + {F1} ///////////////////////////////////////////// ...

  6. 【爬虫系列】1. 无事,Python验证码识别入门

    最近在导入某站数据(正经需求),看到他们的登录需要验证码, 本来并不想折腾的,然而Cookie有效期只有一天. 已经收到了几次夜间报警推送之后,实在忍不住. 得嘞,还是得研究下模拟登录. 于是,秃头了 ...

  7. SpringBoot 如何进行参数校验,老鸟们都这么玩的!

    大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...

  8. (纯js)如何不刷新网页就能链接新的js文件

    如何不刷新网页就能链接新的js文件,其实在HTML语言中已经有相关的函数了,就是再添加一个<script src=.....></script>. 函数叫document.bo ...

  9. Java-Stream流方法学习及总结

    1 前言 Stream是一个来自数据源的元素队列并支持聚合操作,其中具有以下特性: Stream只负责计算,不存储任何元素,元素是特定类型的对象,形成一个队列 数据源可以实集合.数组.I/O chan ...

  10. Distribute SSH Pubkey to Multiple Hosts with Fabric

    Generate ssh keys on source host with ssh-keygen; Disable known_hosts prompt(optional): add "St ...