痞子衡嵌入式: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). 不知道大家有没有这样的感受 ...
随机推荐
- 第七篇--如何改变vs2017版的背景
改变背景 C:\Users\zsunny\AppData\Local\Microsoft\VisualStudio\15.0_9709afbe\Extensions\o0g0c52k.3od\Imag ...
- 【阿菜用工具】利用 Web3.js 在 ganache 上部署以及调用智能合约
合约部署 要部署的合约 pragma solidity ^0.4.23; contract test { uint256 value; function setValue(uint256 _value ...
- IBM SPSS Statistics 26.0 Mac Windows Linux安装破解教程
IBM SPSS Statistics 26.0是IBM公司推出的一款用于统计学分析运算.数据挖掘.预测分析和决策支持任务的软件产品及相关服务的程序. 下载 windows/mac/linux IBM ...
- 预训练语言模型的前世今生 - 从Word Embedding到BERT
预训练语言模型的前世今生 - 从Word Embedding到BERT 本篇文章共 24619 个词,一个字一个字手码的不容易,转载请标明出处:预训练语言模型的前世今生 - 从Word Embeddi ...
- cs派生msf shell
msf5 > use exploit/multi/handler [*] Using configured payload windows/meterpreter/reverse_http ms ...
- 字节跳动、快手等大厂Android面试刨根问底之内存泄露篇
现在快手字节跳动等公司都在大量招人,薪资优厚,但是想进去却没那么简单,面过的人都知道,这些公司的面试官巴不得把你会的东西都给你挖出来,所以要深入复习知识点,让自己耐问一点.一下是针对内存泄露真实面试过 ...
- ubuntu 权限管理设置
最近工作中涉及文件操作的内容较多,所以会出现各种各样的权限不足问题,导致操作失败.下面就来讲解下我碰到这种问题是通过什么的方法解决的 一.用户和权限 用户 是 Linux 系统工作中重要的一环,用户管 ...
- 代码中如何优化过多的if..else
针对代码中,过多的 if ... else ..,如何优化减少if else呢?(非常重要的优化技巧) 缺点:过多的if else 导致阅读不方便,逻辑过于复杂,代码多长. 解决方法:可以采用多个方 ...
- Redis雪崩和Redis穿透
Redis雪崩:查询时Redis没有数据 本来先从Redis里面查某个数据 但是Redis中这个数据刚好被删除了,还没来得及更新 一瞬间很多请求直接进入了Mysql进行查询 而mysql承受不了太大压 ...
- PHPMailer 远程命令执行漏洞 Writeup
漏洞概述 1.漏洞简介 PHPMailer 小于5.2.18的版本存在远程代码执行漏洞.成功利用该漏洞后,攻击者可以远程任意代码执行.许多知名的 CMS 例如 Wordpress 等都是使用这个组件来 ...