第二章 开发环境搭建:工欲善其事,必先利其器
做嵌入式开发,尤其是工业控制这块,环境搭建往往是第一道坎。很多人急着写代码,结果卡在编译、下载、调试上,一卡就是半天。我个人的习惯是,先把工具链理清楚,后面才能跑得顺畅。
这一章,咱们就聊聊 i.MX RT 的开发环境怎么搭。说白了,就是三件事:SDK 装好、IDE 选好、调试器连好。嗯,还有串口终端,这个在调试时特别有用。
2.1 MCUXpresso SDK 安装与配置
MCUXpresso SDK 是 NXP 官方提供的软件开发包。它包含了外设驱动、中间件、RTOS 示例等等。我刚开始用 i.MX RT 时,就是靠 SDK 里的例程上手的。
下载 SDK
去 NXP 官网,找到 MCUXpresso SDK Builder。选择你的芯片型号,比如 MIMXRT1062。然后选择需要的组件,比如 FreeRTOS、LwIP、USB 协议栈。最后生成并下载。
安装 SDK
下载下来的是一个压缩包。解压后,你会看到这样的目录结构:
boards/
evkmimxrt1060/
demo_apps/
hello_world/
driver_examples/
gpio/
uart/
devices/
MIMXRT1062/
drivers/
...
middleware/
freertos/
lwip/
...
我个人习惯把 SDK 放在一个固定的路径下,比如 C:\nxp\SDK_2.x_MIMXRT1062。这样多个项目可以共用,不用重复拷贝。
2.2 IDE 选择:MCUXpresso IDE / IAR / Keil
IDE 的选择,说白了就是看个人习惯和项目需求。我三种都用过,各有千秋。
| IDE | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| MCUXpresso IDE | 免费、与 SDK 集成度高、调试功能强 | 启动慢、插件生态不如 Eclipse | 个人开发、小团队、预算有限 |
| IAR Embedded Workbench | 编译优化好、代码体积小、调试稳定 | 收费贵、许可证管理麻烦 | 工业产品、量产项目、对代码尺寸敏感 |
| Keil MDK | 上手快、教程多、ARM 生态成熟 | 收费、对大工程支持一般 | 初学者、快速原型验证 |
我的建议:
- 如果你是新手,或者做原型验证,用 MCUXpresso IDE 就够了。免费,而且和 NXP 的芯片配合最好。
- 如果你在做量产产品,尤其是对代码尺寸和性能有要求,可以考虑 IAR。它的编译器确实厉害,能把代码压得很小。
- 如果你团队里大家都用 Keil,那就用 Keil。协作起来方便。
我记得有一次,一个项目要求代码必须控制在 128KB 以内。用 MCUXpresso IDE 编译出来 135KB,换成 IAR 后直接降到 112KB。嗯,这就是差距。
2.3 调试工具:J-Link 与 DAP-Link
调试工具,说白了就是连接电脑和开发板的桥梁。没有它,你没法下载程序,也没法单步调试。
J-Link
SEGGER 家的 J-Link 是行业标杆。稳定、速度快、支持芯片多。我手头常备一个 J-Link Plus,用了好几年没出过问题。
连接方式很简单:
- J-Link 的 SWD 接口连到开发板的 SWD 接口。
- J-Link 的 USB 口连到电脑。
- 在 IDE 里选择 J-Link 作为调试器。
配置示例(MCUXpresso IDE):
Debug Configurations -> Debugger -> Debug Probe -> J-Link
Interface -> SWD
Speed -> Auto (或 4000 kHz)
DAP-Link
DAP-Link 是 ARM 官方的开源调试器。很多开发板都板载了 DAP-Link,比如 NXP 的官方评估板。好处是省钱,不用额外买调试器。
但要注意,DAP-Link 的速度和稳定性不如 J-Link。我在项目中遇到过,用 DAP-Link 调试时偶尔会断开连接,尤其是开了高频率的断点。后来换成 J-Link,问题就没了。
2.4 串口终端配置
串口终端,是嵌入式开发中最常用的调试手段。没有显示屏?没关系,串口打印大法好。
硬件连接
i.MX RT 的 UART 引脚,通常通过 USB 转串口芯片(比如 CP2102、FT232)连接到电脑。开发板上一般会有一个 USB 口,插上后电脑会识别出一个虚拟串口。
软件配置
我用的是 PuTTY 或者 MobaXterm。配置参数如下:
| 参数 | 值 |
|---|---|
| 波特率 | 115200 |
| 数据位 | 8 |
| 停止位 | 1 |
| 校验位 | None |
| 流控制 | None |
代码示例
在 SDK 的 hello_world 例程里,串口初始化是这样的:
#include "fsl_debug_console.h"
int main(void) {
BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
PRINTF("Hello World!\r\n");
while(1) {
// 你的代码
}
}
你想想看,只要串口打印出 "Hello World!",就说明环境搭建成功了。这是最直接的验证方式。
2.5 环境验证:跑一个点灯程序
环境搭好了,总得跑个程序验证一下。点灯,是嵌入式界的 "Hello World"。
在 SDK 里找到 gpio_led_output 例程。编译、下载、运行。如果开发板上的 LED 开始闪烁,恭喜你,环境搭建成功了。
我记得第一次用 i.MX RT 时,点灯程序跑起来的那一刻,心里还是挺激动的。虽然只是个灯,但意味着整个工具链都通了。
好了,环境搭建就聊到这儿。下一章,咱们开始讲 GPIO 和中断。这些东西在工业控制里用得特别多。