跳转至

1689325130

嵌入式系统

CS 专业模块-计算机系统

课程学习内容

这门课主要包括如下内容:

  • bootloader,如何控制管理外设,包括设备驱动程序,以及嵌入式文件系统
  • 嵌入式软件模型,包括裸机、RTOS 和嵌入式 Linux
  • 通信与网络,包括有无线自组网、传感网、边缘计算等
  • 嵌入式硬件、架构、平台,如何协同软硬件设计开发嵌入式系统

先修要求

  • 操作系统原理与实践
  • 计算机网络

本门课会用到大量操作系统相关的知识,如果没有学过操作系统将会寸步难行。wk 表示曾经有大一大二没学过操作系统的选课,最后听不懂只能退课 / 弃修。

网络也是本门课的教学内容之一,20 wk 班的大程就是对计网的工程实践,不过计网没学好不会像没学操作系统那样寸步难行,相对会边缘一些。

小实验要求

前期的实验多是嵌入式裸机编程以及 RTOS 编程,使用 C/C++ 在特定平台开发,需要把板子、开关等在面包板上接线进行实验。

后期的实验则会上 python,如 ESP32 板子上的 micropython 编程,以及嵌入式 Linux 上的 python 编程。不过 C/C++ 还是有用的,如嵌入式 Linux 上的字符驱动程序。

大程要求

20 wk 班的大程是将班中 50 人分为 4 个大组,每个大组都开发一套组内的自组网。

  • 对网络分层协议进行了简化,从物理层开始,经过数据链路层,网络层和传输层合一,应用层各组只需要跑通各自设计的一个应用程序即可
  • 分四次验收,分别验收物理层、数据链路层、网络层和应用层,每次构成基本分的 7
  • 各组互相合作,整个开发过程中进行协商,最后如果能实现组间网络互通,可以得到 4 分的加分

19 wk 班的大程为三个方向选一,具体给分细则未知。

  • 无线传感网:能量均衡的传播协议或室内定位
  • 边缘 AI:图像或声音的 AI 计算
  • 编程环境:micropython 的编程、调试、部署环境

20 wzh 班的大程是 4 人一组用 rk3568 板运行神经网络和摄像头做一件事情,比如人脸识别、车牌识别。

  • 其实不是很难,神经网络什么可以直接用开源的,可以直接用 python 跑,其他基本功能写写也很快
  • 难点在于让神经网络转换为 rknn,运行在 rk3568 自带的 NPU 上,环境配置超级麻烦
  • 摄像头驱动和 rknn 环境不兼容,呃,大家各显神通吧
  • 摄像头一直发烫,rk3568 也许什么时候会莫名其妙烧坏,所以写 lab project 和验收要快,免得夜长梦多烧坏

任课教师

从程算、oop 一路到现在,想必大家对永平奖得主翁恺老师已经非常熟悉了。翁恺近年来喜欢在授课内容中掺水,并且逐渐只管授课,实验和作业逐渐下发助教,导致实验和作业体验很多时候要看助教人品。不过一般情况下,你还是可以相信 wk 的给分,20 级的嵌入式给分还是很好的。

如果你不是实在想不开,建议不要选择王总辉的嵌入式系统。王总辉对待课程的态度从计逻应该可见一斑。20 级大部分佬都选择了翁恺班,导致王总辉班全靠 yy 大佬一人支撑。可以说,王总辉班的授课、实验、给分都全面落后于翁恺班。

yy 大佬的描述,wzh 的离谱包括且不限于:

  • 上课纯念 PPT,实验没有指导只有要求,并且有时要求都不清楚
  • 例:lab1 是逐行注释 Linux 开机启动的千行代码,最后报告长达 99
  • 设计实验时不验证可行性,导致出现器材不全、器材不匹配、软硬件不一致等问题无法做出实验

具体描述可以参考评论区的文章。

课程教材

无。参考材料只有 PPT

分数构成

20 级的各部分比例如下,相对 19 级而言期末考试的比例没变,但是平时分内部的比例有所变化。

  • 期末考试(30%)
  • 课内(10%):包括考勤、课内讨论、课后小测,每周归一为 1 分,合计折算为 10
  • 实验(28%):7 次,每次 4
  • 大程(32%):4 次提交,每次各 7 分,共 28 分作为基本分;4 分为加分。

20 级期末给了一个补充题目集,认真做了就能得 100 分,给平时分补 2 分。而除了补充题目集,20 级大程的基本分基本为 27 左右,课内和实验完成得好可以做到少于 1 分,即平时分还是容易满的,只要能够得到大程的加分。20 级大程加分的要求是实现组间网络的通信。

20 级的各部分比例如下 :

  • 期末考试(40%)
  • 课堂表现(5%): 但是不知道怎么统计的
  • 实验(24%): 8 次,每次 3
  • 作业(15%): 15 次,每周 1 次,每次 1-2 道思考题
  • 大程(16%)

参考资料

主要就是 PPT,除此之外可以参考求是潮课程共享计划里的资料:

学习建议

这课的 workload 极大,3 学分学出了 9 学分的感觉,平时的 7 个小实验还是比较密集的,难的实验至少需要一整天 all in,抽不出一整天就只能连着两三天做一个小实验。

20 级大程的大组管理比较困难,对于大组的领导者是一个不小的考验,如何统筹规划、分工设计让能力迥异的组员能够共同努力完成一个自组网系统,还是一个很困难的事情。在这过程中,还要积极进行组间协议的协商与磨合,以求得到 4 分的大程加分。20 级最后是 2 个大组实现了组间通信,另外 2 个大组只能勉强各做各的,总评 - 4

在实际所得上,这门课可以学到的理论知识不是很多(相对 3 学分来说),很多时候可能算是操作系统和计网的进一步工程实践,阻止你做不出实验的往往是能力之外的一些垃圾因素。在具体给分上,20 wk 班的给分还是 nice 的,wzh 班相对会差一些。

如果可以选上 wk 老师的课,还是不建议上 wzh 的课的,课上学不到东西,实验坑也很多,很容易因为找不到教程或者环境原因浪费 2-3 天,所以大家做 lab 需要积极需找教程。project 主要是环境问题,做起来大概需要 2-3 天,和 wk 班的 project 相比会简单很多。lab project 的坑虽然很多,但是验收标准比较低,差不多就可以过。复习主要看 PPT 和历年卷就可以了,基本可以应付考试。wzh 虽然上课和准备实验很不认真,但是他本人还是很好相处的,有任何问题都可以和他及时沟通,都会予以解决的,最后的给分也比较捞,应该都有 4 以上,都达到了大家的预期(不过因为之前的悲惨经历,大家的心理预期普遍不高),但是和 wk 班比可能还是要差一档左右。