嵌入式软件架构设计浅谈(短文简述技术拓展)

1.前言

嵌入式软件架构设计的核心是在硬件资源受限(MCU/MPU 的 RAM、Flash、算力有限)的前提下,平衡实时性、可靠性、可维护性与硬件适配性,区别于通用软件架构(如 Web、桌面软件),嵌入式架构必须深度绑定硬件特性(外设、中断、时钟、功耗),同时满足工业级 / 消费级的功能、非功能需求(如实时响应、抗干扰、低功耗)。软件架构设计决定了系统的可靠性、可维护性和可扩展性。优秀的架构能在有限的硬件资源上构建出稳定高效的系统,而糟糕的架构则会导致项目延期、维护困难和性能瓶颈。

2.机制简述

一.前后台架构(含中断机制)

1.核心要点

前台:无限循环的主任务流,顺序执行低优先级常规任务(如传感器采集、数据显示、状态监测);

后台:由中断触发的高优先级任务(如按键、故障、串口数据),仅处理 “最短必要逻辑”(如置标志位、保存关键数据),复杂逻辑交回前台执行。

2.实现要点

中断服务程序(ISR)必须 “短小精悍”(执行时间≤1ms),禁止在 ISR 中做耗时操作(如 Flash 写入、浮点运算);

前台通过 “标志位” 与后台交互(如 ISR 置key_flag=1,前台轮询标志位后执行按键逻辑),避免 ISR 直接调用复杂函数。

二.时间片轮询架构

1.核心思想

将 CPU 时间划分为固定长度的 “时间片”,按顺序为每个任务分配时间片,实现多任务的轮流执行。该架构解决了前后台架构中前台任务顺序执行的阻塞问题,是嵌入式从裸机向 RTOS 过渡的关键架构,也是多任务操作系统的基础调度策略。

2.核心原理

定时器中断触发时间片:配置硬件定时器(如 SysTick、TIM)按固定周期(如 10ms)产生中断,每次中断代表一个时间片结束;

任务列表与时间片分配:定义任务数组,为每个任务分配相同 / 不同的时间片长度,记录任务的 “当前剩余时间片” 和 “运行状态”;

轮询执行任务:在主循环中遍历任务列表,若任务有剩余时间片且处于就绪状态,则执行该任务,直到时间片耗尽或任务主动放弃 CPU。

三.RTOS 多任务架构(时间片轮转 / 抢占式)

1.核心结构

基于实时操作系统(FreeRTOS、uC/OS-II、RT-Thread),将系统拆分为多个独立任务,由 RTOS 调度器按 “优先级 + 时间片” 分配 CPU 资源;

支持 “抢占式调度”(高优先级任务可打断低优先级任务)、“时间片轮转”(同优先级任务公平执行)。

2.实现要点

任务划分:按 “功能 + 优先级” 拆分(如紧急故障>串口通信>数据采集>显示),任务数控制在 8~16 个(过多增加调度开销);

通信机制:任务间通过队列(Queue)、信号量(Semaphore)、事件组(Event Group)通信,禁止全局变量裸奔;

中断与 RTOS 结合:ISR 中通过xSemaphoreGiveFromISR()/xQueueSendFromISR()唤醒任务,不直接处理业务逻辑。

嵌入式软件工程师面试完全指南

面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,3200+订阅,非常适合在找工作面经薄弱的同学,3500+订阅还会涨价到39.9,提前订阅提前享受,持续更新中。

原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务