第二章 嵌入式系统基础:定义、特点与核心选型

各位同学,大家好。今天我们进入第二章,聊聊嵌入式系统的基础。说实话,这个题目看起来有点“教科书”,但别急着翻页。我做了十几年航空电子,回头再看这些基础,发现很多坑其实都埋在这些“基础”里。

嵌入式系统,说白了就是“藏”在设备里的计算机。它不像你桌上的PC,有键盘鼠标显示器。它可能是一块巴掌大的板子,藏在飞机的航电舱里,一跑就是十几年不关机。

2.1 嵌入式系统的定义与特点

官方定义我就不念了。我个人习惯这样理解:嵌入式系统是“以应用为中心,以计算机技术为基础,软硬件可裁剪”的专用计算机系统。注意“专用”两个字——它只干一件事,但必须干得漂亮。

特点方面,我总结了几条,都是我在项目中踩过的坑:

  • 实时性要求高:航空电台里,你按下PTT键到信号发射出去,延迟必须控制在毫秒级。我曾经遇到过一个项目,因为中断响应慢了0.5毫秒,导致话音断续,被测试部门打回来三次。
  • 资源受限:RAM可能只有几百KB,Flash几MB。你想想看,在这种环境下写代码,每一行都要精打细算。
  • 高可靠性:飞机在天上飞,系统不能死机。我记得有一次做环境试验,温度到85°C时,板子上的DDR数据开始出错——嗯,从那以后我对时序余量再也不敢马虎。
  • 低功耗:航电设备虽然不像手机那样靠电池,但散热问题同样头疼。功耗高了,散热器就得加大,重量就上去了,飞机设计师会找你麻烦的。

核心要点:嵌入式系统的设计哲学是“够用就好”,但“够用”的边界必须清晰。多一分浪费,少一分则可能酿成事故。

2.2 嵌入式处理器选型:ARM / DSP / FPGA

选型这件事,我见过太多人一上来就追“最新最强”。其实在航空电子领域,稳定性和生态成熟度远比性能重要

ARM处理器

ARM是当前嵌入式领域的主流。Cortex-A系列跑Linux,Cortex-M系列跑裸机或RTOS。我个人习惯把ARM比作“瑞士军刀”——什么都能干,但每样都不是最顶尖。

在航空电台里,ARM通常负责:

  • 人机交互(按键、显示)
  • 网络协议栈(TCP/IP、ARINC 429)
  • 系统管理(状态监控、日志记录)

举个例子,我们之前用STM32MP157做了一款控制面板,双核A7跑Linux,M4核做实时控制。这种异构架构在航电里越来越常见。

DSP(数字信号处理器)

DSP是专为信号处理设计的。它的强项是乘加运算——说白了就是做滤波、FFT、编解码这些事。航空电台里,语音编解码、调制解调、噪声抑制,这些活都离不开DSP。

我建议:如果算法里全是乘法和累加,别犹豫,上DSP。用ARM硬算也不是不行,但功耗和实时性会差很多。

常见的DSP选型:

  • TI C6000系列:性能强,适合复杂算法
  • ADI SHARC系列:浮点性能好,航电里用得很多
  • CEVA系列:适合通信基带处理

避坑指南:我曾经在一个项目里用ARM的CMSIS-DSP库做FFT,结果发现实时性不够。后来换成C6748 DSP,同样的算法,处理时间从2ms降到了0.3ms。选对工具,事半功倍。

FPGA(现场可编程门阵列)

FPGA是硬件可编程的。它的优势在于并行处理确定性延迟。你想想看,ARM和DSP都是串行执行指令的,而FPGA可以同时做几百个加法——这在高速数据采集、数字中频处理里是杀手锏。

在航空电台里,FPGA通常负责:

  • 数字中频处理(DDC/DUC)
  • 高速ADC/DAC接口
  • 协议解析(比如ARINC 429、MIL-STD-1553)
  • 加密算法加速

选型时要注意:

  • Xilinx(现在叫AMD)的Kintex系列,性价比高
  • Intel(Altera)的Cyclone系列,适合中低端
  • Microchip的PolarFire,主打低功耗和抗辐射,航电里很受欢迎

注意:FPGA开发周期长,调试困难。我建议“能用ARM/DSP解决的,就别上FPGA”。只有那些对延迟和并行度有极致要求的场景,才值得动用FPGA。

2.3 嵌入式操作系统概述:RTOS vs Linux

操作系统选型,说白了就是“实时性”和“功能丰富度”之间的权衡。

RTOS(实时操作系统)

RTOS的核心特点是确定性。任务切换时间、中断响应时间都是可预测的。在航空电台里,那些对时间敏感的任务——比如话音采样、调制解调——必须跑在RTOS上。

常见的RTOS:

  • FreeRTOS:开源免费,生态好,适合中小型项目
  • VxWorks:商业级,可靠性极高,航电里用得很多
  • RT-Thread:国产的,功能丰富,社区活跃

我记得有一次,用FreeRTOS做话音采集,任务优先级没配好,导致高优先级的中断服务程序把采集任务饿死了。嗯,从那以后我养成了一个习惯:画任务优先级图,标注每个任务的最坏情况执行时间

嵌入式Linux

Linux的优势在于功能强大。文件系统、网络协议栈、图形界面、驱动框架——这些RTOS里需要自己写的东西,Linux都帮你做好了。

但Linux不是实时的。它的调度器追求的是“平均吞吐量”,而不是“最坏情况延迟”。所以,在航空电台里,Linux通常用于:

  • 人机界面(Qt/GTK)
  • 网络通信(TCP/IP、HTTP)
  • 数据存储(SQLite、日志)
  • 系统升级(OTA)

如果你非要在Linux上做实时任务,可以考虑:

  • PREEMPT_RT补丁:把Linux变成软实时
  • Xenomai:双内核方案,实时性更好
  • 单独用一个MCU跑RTOS,Linux只做管理——这是航电里常见的“异构”方案

我的建议:在航空电台里,我倾向于“RTOS + Linux”混合架构。RTOS负责实时控制,Linux负责上层应用。两者通过共享内存或SPI通信。这样既保证了实时性,又享受了Linux的生态。

2.4 小结

这一章我们聊了嵌入式系统的定义、处理器选型和操作系统选型。说白了,就是回答三个问题:

  • 你要干什么?(应用需求)
  • 用什么芯片干?(处理器选型)
  • 用什么软件框架干?(操作系统选型)

这三个问题想清楚了,后面的架构设计才不会跑偏。下一章,我们会深入航空电台的软件架构,看看这些基础到底怎么落地。

好,今天就到这里。有什么问题,欢迎课后交流。


公众号:蓝海资料掘金营,微信 deep3321