作为一名在软件领域工程师,在职业生涯的尽头能有幸接触到一部分硬件产品是我莫大的荣幸。秉承我一贯刨根问底,不搞清楚问题本质不罢休的作风和态度,结合基本的计算机知识加一部分FreeRTOS源码,开始了文档标题中的工作,这项工作带来的价值可以指导未来在嵌入式工程领域软件研发工作(人或事),深入而透彻,也能告诉你怎么通过硬件看清软件运行的本质;同时,也作为在嵌入式领域工程实践方面总结与回顾。
文档很枯燥,大部分内容是教科书上那些呈辞滥调的重复引用/解释,可参考的部分应该就剩下那份按部就班实现的工程样板代码。
我尽量用人类容易理解的熟语、类比加上大量的配图等来表达,如果您能坚持阅读下去那么我要恭喜您;如果您能阅读到参考工程的源码部分那么我佩服您;如果您能试着亲手撸一遍那么我要崇拜您;如果您能提出更优雅、跟妥当的实现方法或者能指出实现不恰当、错误的地方那么我要仰慕您;如果您能亲手移植一块芯片那么您对操作系统的调度机制应该已经非常通透了,接下来您要思考在多核心环境下如何实现调度,您也可以开始阅读Linux操作系统芯片部分、调度器部分代码了。
文档中存在描述不恰当或者错误地方,请您以参考实现为准,祝您阅读愉快!
目录
- 名词解释
- 软硬件生态
- 计算机组成
- 存储器
- 外设控制器
- CPU
- 软件是如何运行起来的
- 软件工具链
- CPU如何执行代码
- 多任务调度
- 任务定义
- 任务初始化
- 中断服务程序
- 配置中断
- 启动第一个任务
- 为什么要有多任务机制
- 工作机制
- 漫画
- 时序
- 节拍器
- 时间片
- 优先级
- 关键代码说明
- IPC&SYNC
- 二值信号量&互斥量
- 多值信号量
- 队列
- 软件定时器
- 芯片移植
- RISC-V
- Cortex-M3/4
- 参考实现
名词解释
这部分内容浏览一遍即可,当你往下阅读且无法准确理解的时候再回过来看看。这些名词解释来自维基百科,需要进一步了解请移步维基百科。
完整大作,请(点击左下角阅读原文)移步Rustcc中文社区阅读。
https://rustcc.cn/article?id=0c9de276-952d-4b64-ad01-5fd0aec0b524