嵌入式开发常用工具
好的,嵌入式开发领域庞大且技术栈多样,以下是一些最常用的开发工具,按类别组织并用中文说明:
一、编程语言与编译器
-
C/C++编译器套件: 这是嵌入式开发的绝对核心。
- GCC & G++ (GNU Compiler Collection): 开源标杆,支持极多的处理器架构(如ARM、RISC-V、AVR、MIPS等),通过交叉编译工具链使用。例如:
arm-none-eabi-gcc,riscv-none-embed-gcc。 - Keil MDK-ARM (Microcontroller Development Kit): ARM官方推荐的商业集成开发环境(IDE)之一,内含ARM自家的Armcc/Armclang编译器(ARM Compiler),广泛用于Cortex-M系列MCU开发。
- IAR Embedded Workbench: 另一款强大的商业IDE和编译器提供商(IAR C/C++ Compiler),以其优秀的代码优化和跨平台支持著称,支持多种架构。
- LLVM/Clang: 日益流行的开源编译器前端/框架,性能高,模块化好,在嵌入式领域的应用也在快速增长(常作为GCC的替代或补充)。
- Arm Compiler for Embedded: ARM提供的专业编译器(以前称为DS-5 Development Studio中的部分),提供高性能代码生成。
- Lauterbach TRACE32: 强大的商业开发/调试工具链,也包含其自己的高性能编译器。
- GCC & G++ (GNU Compiler Collection): 开源标杆,支持极多的处理器架构(如ARM、RISC-V、AVR、MIPS等),通过交叉编译工具链使用。例如:
-
汇编器: 用于编写和优化底层代码(启动代码、中断向量表、极致优化等)。通常包含在上述编译器套件中(如GNU
as, Armarmasm)。 -
链接器: 将编译后的目标文件和库文件组合成最终的可执行映像(通常是
.elf,.hex,.bin格式)。通常包含在上述编译器套件中(如GNUld, Armarmlink)。 -
Python: 日益重要的辅助语言,用于编写构建脚本、自动化测试脚本、通信协议模拟、数据处理、调试辅助工具等。
二、集成开发环境
- Keil MDK-ARM: 集成编辑器、编译器、调试器、工程管理、RTOS支持等,界面相对传统,ARM Cortex-M生态最流行之一。
- IAR Embedded Workbench: 功能强大,界面现代,优化出色,支持多种架构(ARM、RISC-V、AVR、MSP430等)。
- Eclipse CDT: 开源、强大的可扩展IDE框架。很多基于Eclipse的发行版广泛用于嵌入式,如:
- STM32CubeIDE: ST官方基于Eclipse,免费,专为STM32设计,集成CubeMX配置工具。
- NXP MCUXpresso IDE: NXP官方基于Eclipse,免费。
- TI Code Composer Studio: TI官方基于Eclipse,免费。
- Visual Studio Code (VSCode): 极其流行的轻量级编辑器。通过丰富的插件(如C/C++扩展、Cortex-Debug、PlatformIO、J-Link插件、RISC-V支持插件等)变身为强大的IDE。跨平台(Windows, Linux, macOS)。
- JetBrains CLion: 商业C/C++ IDE,提供优秀的代码智能提示、重构和调试功能,通过插件支持嵌入式开发(需要配合OpenOCD/J-Link/GDB服务器等调试器)。
- PlatformIO: 开源生态系统,基于VSCode(或Atom、CLion插件),简化跨平台嵌入式开发,支持海量开发板和框架,内置构建工具和库管理。
三、调试器
-
JTAG/SWD调试器: 硬件接口,用于下载代码、单步执行、设置断点、查看/修改变量/寄存器/内存。
- J-Link系列: SEGGER公司的标杆,支持极广的芯片和接口,速度快,功能强大。
- ST-LINK系列: STM32开发板自带或独立调试器,经济实惠(特别是ST板载的),对ST产品支持好。开源克隆版本也多。
- CMSIS-DAP: ARM定义的标准接口协议的开源实现(例如LPC-Link II, ARM的ULINK2等)。
- OpenOCD: 开源的片上调试器软件,驱动多种USB-JTAG适配器硬件(FTDI芯片的、CMSIS-DAP兼容的、J-Link克隆版等)。通常与GDB配合使用。
- DAPLink: 由ARM推动的开放式硬件调试标准,整合了USB MSD(拖拽下载)、CDC(串口)、HID(调试接口,兼容CMSIS-DAP),常见于很多开发板上。
- J-Link OB (On-Board): 类似DAPLink的概念,J-Link授权厂商在开发板上集成精简版的J-Link调试功能。
-
调试代理 (GDB Server):
- GDB: GNU调试器,是命令行调试的标准,也是很多IDE调试功能的底层支撑。
- OpenOCD: 也作为GDB Server运行,连接调试器和目标板,提供GDB调试接口。
- SEGGER J-Link GDB Server: J-Link专属的高性能GDB Server。
- pyOCD: 基于Python的开源调试工具,支持CMSIS-DAP调试器(包括许多DAPLink板载调试器)和部分J-Link,提供GDB Server接口,支持Python脚本化调试。
-
逻辑分析仪: 用于捕获和分析硬件总线(如SPI, I2C, UART, GPIO)上的数字信号,调试时序问题和通信协议问题。
- Saleae Logic: 流行的商业硬件和软件,用户体验好。
- Sigrok / PulseView: 开源项目,支持多种硬件(如Digilent Digital Discovery, Saleae克隆版等)。
-
串口调试工具: 通过UART与目标板通信,输出调试信息(printf调试法)、发送命令。
- PuTTY / Tera Term / Minicom / Screen: 跨平台的串口终端软件。
- RealTerm / Docklight: 提供更高级的串口数据分析功能(如数据包解析、脚本)。
四、版本控制与构建系统
- Git: 绝对主流的分布式版本控制系统(如GitHub, GitLab, Bitbucket)。
- Subversion: 在某些传统嵌入式项目中仍有使用(集中式)。
- Make: GNU Make是最常用的构建自动化工具,通过
Makefile描述构建规则。 - CMake: 跨平台的构建系统生成器,可生成Makefile、Ninja、Visual Studio工程、Keil/IAR工程文件等。在现代嵌入式项目中越来越普遍。
- Ninja: 专注于速度的小型构建系统,常由CMake生成其构建脚本
build.ninja。 - Meson: 新兴的构建系统生成器,语法更现代,集成度高,也常生成Ninja文件。
五、硬件相关工具
- 万用表: 测量电压、电流、电阻等基本参数。
- 示波器: 测量电压随时间变化的波形,调试模拟信号、数字信号时序、电源噪声等。
- 电源供应器: 为开发板和被测电路提供稳定可控的电压。
- 焊接工具: 烙铁、热风枪、焊锡、助焊剂,用于焊接元器件、连接器。
- 开发评估板: 芯片厂商提供的标准开发平台,用于快速评估和原型开发。
六、测试与分析工具
- Wireshark: 强大的网络协议分析器,也支持解析串口、USB、CAN等协议。
- Cantact/PCAN/USBtin: CAN总线分析工具(硬件+软件)。
- FreeRTOS+Trace / Percepio Tracealyzer: 用于可视化和分析RTOS任务行为、调度、资源使用情况。
- SystemView: SEGGER提供的实时系统可视化分析工具。
- Valgrind: Linux主机端强大的内存分析工具(如memcheck, callgrind),常用于开发和初步测试(特别是运行在嵌入式Linux上的应用)。
- 单元测试框架: 如CppUTest, Unity, Google Test (gtest) 用于编写和运行软件模块的单元测试。
七、文档与支持工具
- Doxygen: 根据源代码注释自动生成API参考文档。
- 芯片参考手册: 由半导体厂商提供,深入了解芯片细节。数据手册提供关键电气参数。
- 开发板用户手册/原理图: 了解硬件设计细节。
- 文本编辑器(通用型): Vim, Emacs, Sublime Text, Notepad++,用于查看代码、配置文件等。
关键点总结
- 工具链一体化: Keil, IAR, STM32CubeIDE等提供了编译、调试、烧录一体的环境。
- 开源生态: GNU工具链(GCC, GDB, Make) + VSCode/Python/Eclipse + CMake + Git + OpenOCD 构成了功能极其强大且灵活的开源嵌入式开发环境基石。
- 硬件调试不可或缺: JTAG/SWD调试器和逻辑分析仪是深入理解硬件行为和软件运行的必需品。
- 交叉编译: 大部分工具链都是交叉编译器,在PC上为不同于PC CPU架构的目标板生成可执行代码。
- 按需选择: 具体项目使用的工具组合很大程度取决于目标芯片架构(如ARM Cortex-M vs RISC-V vs AVR)、项目复杂度、团队习惯、操作系统/RTOS选择以及预算(商业工具 vs 开源工具)。
选择工具时,芯片厂商(NXP, ST, TI等)提供的官方工具套件和评估板通常是最容易上手的起点。随着项目深入和技能提升,开发者往往会转向开源或商业的通用强大工具,以获得更灵活高效的工作流。
嵌入式开发(一):嵌入式开发新手入门
本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC
资料下载
佚名
2021-10-14 10:58:31
OpenHarmony常用工具汇总
OpenHarmony 开发过程中我们一定会面对各种开发问题,比如如何看 log,如何看系统状态,如何调试,等等。本章内容就是总结一些常用工具。
2023-01-04 12:02:00
Fibocom 常用工具分享
Fibocom 常用工具分享串口调试器SSCOM,链接如下*附件:串口调试器SSCOM.rarUSB转TTL串口监测工具-CH340驱动,链接如下*附件:CH340驱动(USB串口驱动)_XP_WIN7共用.rarU
嵌入式开发中的几种常用的工具介绍
嵌入式开发中常用的虚拟机与容器 1.本文说明 2.VMware Workstatio 2.Oracle VM VirtualBox 3.window10 中的WSL2 Linux子系统
2021-04-02 10:05:07
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机