嵌入式开发要学哪些东西
好的,嵌入式开发是一个涵盖硬件和软件的广阔领域,需要掌握的知识体系比较复杂。以下是用中文总结的嵌入式开发需要学习的关键知识和技术,通常可以按层次学习:
核心基础(基石)
-
C/C++语言:
- C语言是重中之重! 嵌入式开发中绝大部分底层驱动、裸机程序、RTOS应用都是用C写的。必须精通指针、内存管理、结构体、位操作、预处理器、函数指针等。
- C++: 随着嵌入式系统复杂度提升,很多应用层程序、中间件、框架(如Qt for Embedded)会用C++开发。需要掌握面向对象特性、模板、RAII、STL(部分受限)等。掌握C++对提升抽象能力和代码复用很有帮助。
-
电子硬件基础:
- 数字电路: 理解与、或、非、异或等逻辑门,组合逻辑与时序逻辑(触发器、寄存器、计数器),了解数字电平(如TTL、CMOS)、总线概念。
- 模拟电路: 基础即可,如二极管、三极管、电阻、电容、电感特性,运放基本原理,ADC/DAC概念。
- 电路分析基础: 理解欧姆定律、基尔霍夫定律,能看懂简单的原理图。
-
计算机组成原理:
- 理解CPU工作原理(冯诺依曼/哈佛结构)、指令集架构、存储体系(ROM/RAM/FLASH)、中断、DMA、总线架构等。
核心嵌入式知识与技术(核心武器库)
-
单片机/微控制器:
- 体系结构: ARM Cortex-M(A7/A9/A53/A72等)、Cortex-A、RISC-V、PIC、AVR等常见内核架构。
- 核心外设编程: GPIO、UART、I2C、SPI、ADC、DAC、TIMER(PWM)、Watchdog、RTC、中断控制器。
- 时钟系统: PLL、系统时钟源配置。
- 内存映射: 理解芯片手册中的内存地址分配。
- 阅读Datasheet和参考手册: 这是嵌入式工程师最重要的能力之一!
-
嵌入式开发平台与工具链:
- 集成开发环境: Keil uVision、IAR Embedded Workbench、STM32CubeIDE、Eclipse(配合CDT和插件)、VSCode(配合插件)、Segger Embedded Studio等。
- 编译器: ARM GCC、Clang、IAR、Keil C/C++ Compiler。
- 调试器/仿真器: J-Link, ST-Link, DAP-Link的使用。掌握单步执行、断点、查看变量/寄存器/内存、调用栈分析。
- 烧录器/编程器: 掌握将程序下载到目标板的工具(通常集成在IDE和调试器中)。
- 交叉编译: 理解在主机(PC)上为不同架构的目标机编译代码的概念。
- 构建系统: Makefile、CMake的基本使用。
-
硬件描述语言 - 可选但加分:
- Verilog/VHDL: 如果需要涉及FPGA/CPLD开发,或者需要更深层次理解数字电路实现(如简单的逻辑模块、接口控制器),需要学习。对于大部分嵌入式应用开发非必需。
-
实时操作系统:
- RTOS基础概念: 任务(线程)、调度(优先级调度、轮转调度)、调度器、任务间通信(信号量、互斥锁、消息队列、事件标志)、任务间同步、内存管理(RTOS提供的方式)、中断处理上下文。
- 主流RTOS:
- FreeRTOS: 开源、轻量、应用广泛,资源占用少,学习曲线较平缓,非常适合入门。
- RT-Thread: 国产开源,社区活跃,生态完善(SAL网络组件、FAT文件系统、GUI等),适合物联网应用开发。
- µC/OS-II、µC/OS-III: 商业/开源混合模式,历史悠久,稳定可靠,但商业应用需授权费(部分版本)。
- Zephyr OS: 由Linux基金会支持,为物联网设备优化,高度模块化,支持多种架构,具有强大的工具链和模拟器。
- 使用RTOS的开发和调试: 理解其带来的复杂性(优先级反转、死锁、栈溢出诊断)和便利性(并发处理)。
-
嵌入式Linux:
- Linux内核基础: 内核架构、模块、设备驱动模型(字符设备、块设备、网络设备)。
- 设备驱动开发: 学习如何为特定硬件外设编写内核驱动(如LED、GPIO、I2C设备、ADC设备等)。
- Bootloader: U-Boot是最常用的引导加载程序,需要了解其启动流程、配置、编译、移植、烧录和基本命令。
- 根文件系统: 了解根文件系统的组成(如BusyBox、libc库)、构建方法(Buildroot、Yocto、Debootstrap)。
- 构建系统:
- Buildroot: 相对简单易用,适合快速构建目标系统。
- Yocto: 高度灵活强大,定制化程度高,适合企业级产品,学习曲线陡峭。
- 系统移植与裁剪: 将Linux移植到新硬件平台,根据需求裁剪内核和根文件系统。
- Shell: 熟悉Linux常用命令行操作(bash)。
- 基础网络知识: TCP/IP, UDP, Socket编程基础(对应用开发重要)。
应用开发与接口技术(上层建筑)
-
外设接口与协议:
- 深入掌握: UART/RS232/RS485、I2C、SPI(重点理解时序图、主从模式)。
- 其他常见:
- CAN: 汽车电子、工业控制领域必备。
- USB: 理解Host/Device/OTG模式,以及常见的通信类(如HID、CDC、MSC)。
- Ethernet: 理解MAC、PHY层基础、MAC驱动、网络协议栈应用。
- SD/MMC/eMMC: 存储接口。
- LCD/Display: RGB、LVDS、MIPI-DSI等显示接口。
- Camera: DVP、MIPI-CSI等摄像头接口。
- 传感器应用: 温湿度、加速度计、陀螺仪、压力、光感等传感器通常通过I2C/SPI接入。
-
网络与通信协议 - 针对联网嵌入式设备:
- 传输层/应用层: MQTT、CoAP、HTTP(S)、WebSocket。
- 物联网协议栈: LwIP (轻量级TCP/IP协议栈)。
- 低功耗无线: WiFi、Bluetooth (Classic/BLE)、Zigbee、LoRa、NB-IoT。
- 安全传输: TLS/DTLS。
-
存储技术:
- 内部FLASH编程、磨损均衡算法。
- 外部存储器: NOR/NAND FLASH、EEPROM、SD卡、eMMC、UFS。
- 文件系统: FAT/FAT32 (通用性好)、SPIFFS/LittleFS/JFFS2/YAFFS (为Flash优化的嵌入式文件系统)、ext系列。
-
图形用户界面:
- 轻量级GUI库/框架: LVGL(开源流行)、QT for Embedded、MicroGUI、emWin、TouchGFX。
- 概念: 帧缓冲、图形渲染、触摸输入处理。
-
调试与优化技能:
- 逻辑分析仪: 抓取分析数字信号时序。
- 示波器: 观察模拟/数字信号波形、测量电压、频率。
- 万用表: 基础测量工具。
- 性能分析工具: CPU利用率、内存泄漏检测、代码执行时间测量工具。
- 代码优化: 大小优化、速度优化、内存使用优化、了解编译优化选项。
- 单元测试: Ceedling、Unity等。
-
版本控制:
- Git: 必不可少的代码管理和协作工具。掌握基本工作流、分支管理、冲突解决。
发展方向扩展(可选深造)
- 低功耗设计: 对电池供电设备至关重要,涉及硬件设计、睡眠模式、唤醒源、功耗测量优化。
- 固件安全: Secure Boot、加密(AES、RSA)、安全存储、防止篡改。
- 自动化测试/HIL测试: 提高软件质量和测试效率。
- 特定领域:
- 汽车电子: AUTOSAR基础、功能安全 (ISO 26262)、CAN、CAN FD、Ethernet Automotive。
- 工业控制: OPC UA、Modbus、EtherCAT、工业总线协议。
- 机器视觉/人工智能: OpenCV移植、轻量级神经网络推理框架(TFLite Micro)。
- 机器人学: ROS 2及其在嵌入式系统中的应用(ROS 2 Embedded)。
学习建议
- 循序渐进: 从最基础的电子、C语言、51/STM32裸机开始,打好硬件基础和编程能力。强烈建议早期以开发板进行裸机外设编程练习。
- 动手实践: 嵌入式开发是工程实践学科! 理论知识必须通过动手做项目来巩固。买一块主流的开发板(如STM32、ESP32、树莓派等)是必不可少的。
- 阅读官方资料: Datasheet、Reference Manual、Programming Manual、App Notes是核心,养成精读的习惯。
- 掌握RTOS或Linux之一: 在掌握裸机后,根据个人兴趣或项目需求,选择深入学习RTOS或嵌入式Linux方向。
- 善用工具: 熟练掌握调试器、逻辑分析仪、版本控制等工具。
- 理解原理而非死记硬背: 理解协议的底层原理、硬件的工作机制比单纯调用API库更重要。
- 关注开源社区: FreeRTOS、RT-Thread、Zephyr、Linux Kernel等都有活跃的社区和丰富资源。
- 英语能力: 虽然资料在增加,但最前沿的技术、核心文档(芯片手册、RTOS/Linux内核文档)仍以英文为主,需要一定的阅读能力。
这个列表看起来很庞大,不要有压力。学习是分阶段、逐步积累的过程。根据自己的目标(如是做8位单片机的小家电,还是做基于Linux的智能设备)来确定学习的优先级和深度。祝你学习顺利!
Linux系统的嵌入式开发是什么
嵌入式开发听起来很高大上,但其实它就在我们身边。 嵌入式开发是指将操作系统、应用程序或数据存储在嵌入式设备中,如手机、平板电脑、智能家
2023-10-12 15:40:39
什么人适合学习嵌入式开发?
到底什么专业的人适合学嵌入式?或从事过自动化相关工作的人员,适合参加嵌入式学习吗?等等系列问题,接下来就问大家一一解答:究竟什么样的人才适合学习
要如何学习嵌入式开发呢?
嵌入式是当下最流行的开发模式,从今天看,不管是从行业应用,还是智能硬件的爆发,物联网时代的来临,大数据等等嵌入式技术都得到了史无前例的发展。
嵌入式学习培训能学会吗?嵌入式开发培训都要学什么?
嵌入式学习培训能学会吗?嵌入式开发培训都要学什么?掌握Linux常用操作命令,与系统管理;理解
资料下载
佚名
2021-11-03 10:06:05
嵌入式开发培训学什么?嵌入式开发板知识讲解
,arm11,powerpc,mips,mipsel等,或加上操作系统也属于嵌入式的开发。嵌入式开发是一项系统工程,要求
资料下载
李娜
2021-11-02 20:21:03
嵌入式开发(一):嵌入式开发新手入门
本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。嵌入式开发流程一般如下,一般是在PC
资料下载
佚名
2021-10-14 10:58:31
究竟嵌入式开发要学什么
学习嵌入式的就业前景广泛,你的职业发展方向有很多,可以说只要跟电子控制相关的工作,你都可以参与,当然嵌入式这个行业也非常利于个人创业,这也是为什么越来越多的人参加
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览