圣光机嵌入式系统课堂笔记

学习笔记

Posted by BY CGH on April 13, 2026

前言

由于嵌入式是我主要学习的方向,因此本课程的笔记会非常精简,仅提供入门知识导引和我觉得重要的部分。 Still,水平有限,若有谬误,多多指教

第一节课

主要介绍嵌入式系统的实时性。和普通操作系统不同,RTOS需求系统绝对实时性。 实时性分为软件实时性,硬件实时性,完全不实时性。 其使用的是 重要的关键词有:Parallelism, threads, interrupts, critical sections, semaphores 并行、线程、中断、关键部分、信号量
中断部分,我应该在浅谈Cortex-M内核这部分讲很清楚了。
然后是一些只可能出现在test的抽象概念:CPS,“cyber-physical systems”,中文名就是网络物理系统,这个概念是2006 年由美国国家科学基金会的 Helen Gill 提出来的。虽然我们有时会把 CPS 和 “cyberspace”(网络空间)联系起来,但这两者不是一种从另一种直接演变出来的关系。
也就是说这概念是来自于控制论。
之后的PPT很夸张地高估了一下嵌入式开发(如果完全不依赖第三方库)需要的技术栈(笑)

复杂性

这部分PPT讲述了嵌入式开发的复杂性
软件开发”不等同于“写程序”。
真正的软件工程包含更多工作,尤其是:
可用性
可维护性
文档
安装与部署
支持与升级
连接数变多了 之后,引入了分布式系统的复杂性概念。 分布式系统不仅有更多节点,还多了更多“链接”(网络连接、通信通道、依赖关系)。
这些链接会引入很多隐含的问题,开发者往往看不见、想不到,导致开发和调试变得非常困难。

分布式系统包含一些传统单机程序没有的概念,比如:网络延迟、部分失败、时钟不同步、一致性、分区容忍性等。 如果开发者对这些概念理解不足,就可能“重新发明”一种解决方式。
这种自创的方案通常是非正式的、难以预测的,反而造成更多问题。

总而言之,这段看起来像是软件开发的内容,不知道为什么会在嵌入式里讲。但是很有用,其中的KISS - (keep it simple, stupid) 原则,我一直都很推崇:简单,有效就行

计算模型(Models of Computation)

最顶层是 MoCs(Models of Computation)。 它分成几类常见的风格:

  • Functional(函数式)
  • Sequential(顺序式)
  • Concurrent(并发式)

这些大类下面又衍生出更具体的模型:
顺序式比如 Event Graphs、State Machines
并发式又可以是 Untimed(无时间概念)或 Timed(有时间概念)
Untimed 下有 Threads、Process Networks、Dataflow 等
Timed 下有 Synchronous Reactive、Continuous Time、Discrete Events 等
PPT中举例的是Process Network,PN。它的意思主要是把系统看做节点,节点之间通信使用arc,数据通道(有点像cpp的概念)1 后面还有FSM,很重要的有限状态机,简单理解为switch和case就可以了
据AI所说,这个和面向对象,函数式,过程式等编程范式还不一样,更抽象化,描述的是系统类别。(我是拎不清反正)

结构

一种简化系统工作原理的抽象概念。
还有一个概念是“平台”:指的是已经准备好的组件,包含可复用的软件/硬件工具组(很像BSP+RTOS)。
关于这个有个平台导向设计方法,主要内容就是设计从高层抽象开始,用抽象模型来反映那些关键约束,比如性能、通信、时间、并行性等。

用人话说就是,你先选用什么硬件,然后分个BSP,MOUDLE,APP,之类的根据功能产生的层,然后再细化到具体实现。这是嵌入式很常见的思想(如果你认真搞嵌软的话)

这个的末页PPT也有总结

至此这节课结束,最后放了个硬件板子的视频。

第二节课

(我去怎么还有限时测验!) 主要讲中断和消抖。

第三节课

主要讲了各种通信。还是值得一学的,后面再展开。

第四节课

讲的定时器。PWM原理就很简单: 有个计数寄存器。时钟信号发一次就递增1, 然后有个对比寄存器,就是你占空比的主要设置对象。这个对比寄存器和计数寄存器对比,如果计数寄存器大于这个对比寄存器的值,则输出1,否则输出2.由于计数不断增加重复,因此会产生0101间隔的方波,也就所谓PWM。
..

这里顺便展开讲下密度。经常有人讨论PWM细粒度,分辨率之类的问题,这里想理清楚还是比较麻烦的:

后续课程知识点

后面旷课比较多。因此就提炼一下PPT以及课堂快问快答的常见要点吧: