嵌入式系统观

嵌入式的精髓:从外设基集成到系统构建

核心观点

嵌入式的精髓,并不在于如何编写单个外设的驱动,而在于如何解决多个外设在集成过程中产生的冲突。这项能力,必须通过实际项目才能获得。

一、基础认知

嵌入式系统,本质上是基于某款单片机,通过集成各类外设,构建成一个具备特定功能的完整系统。

因此,嵌入式开发的基础在于单片机 ,核心在于外设

外设是我们要重点掌握的,而单片机作为开发平台,讲究**"在精不在多"**。

二、嵌入式的精髓

做项目的关键,从来不是掌握多少外设驱动的写法,而是能否将它们有机整合,形成一个稳定、可用的系统。

厂商提供的例程已经足够我们学习,不必什么都从头"手搓" ,但前提是------必须真正看懂、理解、吃透。积累到位后,自然也能自己实现。否则,几年下来也很难完成一个完整的项目。

三、服务框架

进一步地,我们可以围绕嵌入式系统展开完整的服务框架:

纵向延伸:采集到呈现

  • 向下采集数据:嵌入式系统向下采集数据,经过内部处理,最终向上呈现给用户。

  • 数据采集更精准 :升级硬件成本太高,实际方案是优化传感器驱动。这要求我们具备扎实的编程基础 ,掌握常用的数据结构和算法,善于学习和借鉴优秀的例程。

  • 系统高效处理数据 :让系统更高效地处理数据,底层逻辑亦然。这部分属于下位机开发

  • 向上呈现数据:为了提供良好的用户交互,需要图形化界面:

    • QT:基于C++,性能强大

    • LVGL:基于C语言,相对轻量

这两者构成了上位机开发

横向扩展:服务与交互

  • 后端开发:为支持数据长期保存,可以在系统与用户之间引入服务器。

  • 前端开发:为进一步提升用户体验,还可开发Web端。

系统升级:引入操作系统

当业务规模扩大,裸机开发难以兼顾效率与稳定性时,就需要引入操作系统------RTOS、Linux

操作系统的作用,是向下高效管理软硬件资源向上为用户提供稳定、可靠的运行环境

从裸机到前端:嵌入式开发者的技术栈导航

核心观点

在嵌入式应用开发中,系统的典型工作流是:向下采集数据,经过内部处理,最终向上呈现给用户。

一、系统与硬件载体

因此,我们首先要理解承载系统的载体:

  • 系统层级 :从裸机开发RTOSLinux,它们代表了不同复杂度的"大脑"。

  • 硬件载体 :例如C51STM32ESP32树莓派等。它们的区别在于:我们需要面对的问题越复杂,所需系统的复杂度就越高,而更复杂的系统必然需要更强的硬件资源(算力、内存、存储)来承载。

二、编程核心

系统如何高效处理采集到的数据?这引出了编程的核心:

  1. 基础语言 :需要学习C语言,因为它最贴近硬件,是嵌入式领域的基石。

  2. 核心内功 :为了更精准、更快速地处理数据,必须深入研究数据结构与算法

三、数据流动与沉淀

系统处理后,数据需要流动和沉淀:

  • 通信 :将处理结果发送到服务器或数据库的过程,称为通信。必须学习UART、I2C、SPI、CAN、以太网、Wi-Fi/蓝牙、MQTT/HTTP等多种通信方式,以应对不同场景。

  • 存储

    • 为进行长期的整体分析,需要学习关系型数据库如 MySQL

    • 为解决高并发、快速读写问题,需要学习内存数据库如 Redis

四、交互界面

数据需要被直观地理解,这指向了交互界面:

  • 设备界面(上位机/嵌入式GUI) :在设备本身(如屏幕)上显示,需要学习 LVGLQT(需C++基础)

  • 远程界面(Web前端) :在用户的电脑或手机浏览器中显示,需要学习 Vue 等前端框架。

  • 【关键补充】 :设备与前端之间,通常需要一个后端服务(可用Go/Java/Python等编写)来承上启下,处理业务逻辑并提供API。

五、工程化工具

为保证整个开发流程的稳健与高效,还需一系列工程化工具:

  • 项目构建 :嵌入式开发常脱离IDE,因此必须掌握 MakefileCMake 来管理复杂的编译过程。

  • 效率工具

    • Docker :用于将后端服务、数据库等封装和部署,保障环境一致,简化运维。

    • ProtoBuf :是一种高效的数据序列化协议,常用于设备与后端、后端微服务之间的通信,提升传输效率。

六、扩展领域

此外,若想迈向更广阔的领域:

  • 测试 :为保证质量,可以学习使用 Python 进行接口或GUI自动化测试。

  • 机器人 :这将是软硬件的终极集成,还需要补充机械结构、运动控制等知识。

相关推荐
深蓝轨迹2 小时前
Redis+Lua实现秒杀优化
数据库·redis·lua
Yao.Li2 小时前
Dify 本地运行实操笔记
人工智能·笔记·python
小年糕是糕手2 小时前
【35天从0开始备战蓝桥杯 -- Day7】
开发语言·jvm·数据库·c++·蓝桥杯
优化控制仿真模型2 小时前
【26年最新】新大纲普通话考试真题题库50套~PDF电子版
经验分享·pdf
色空大师2 小时前
网站搭建实操(二)后台管理(1)登录
java·linux·数据库·搭建网站·论坛
i-阿松!2 小时前
PCB板子+ flutter前端 + go后端
物联网·flutter·pcb工艺·go1.19
ShineWinsu2 小时前
MySQL安全加固十大硬核操作:硬核防护指南
数据库·mysql·安全
骑龙赶鸭2 小时前
mysql binlog中QUERY_EVENT的status_var结构
数据库·mysql
Skilce8 小时前
ZrLog 高可用部署
运维·服务器·数据库·阿里云·maven