正版资源【李述铜】从0到1手把手教你用嵌入式操作系统
《【李述铜】从0到1手把手教你用嵌入式操作系统》本课程是 >课程的续篇。【技能收获】学完可掌握:核心实战技能、项目驱动学习。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已
支付成功后自动发货,可在「我的订单」查看网盘链接;链接失效可联系客服免费补链。
这门课的主题很明确:自己动手写一个能在裸机上跑起来的嵌入式操作系统内核。它接在《自己动手从0到1写嵌入式操作系统》之后,属于同一技术脉络的续篇,重点不是讲操作系统理论,而是把任务调度、内存管理、中断处理、设备驱动这些机制落到可编译、可烧录、可调试的代码上。
技术栈与前置基础
课程以 ARM Cortex-M 系列为硬件载体,工具链是 arm-none-eabi-gcc 配合 Makefile,调试走 GDB + OpenOCD 或仿真器。语言层面只用到 C 和少量汇编,C 部分要求能看懂函数指针、结构体嵌套和链表操作,汇编部分要求能理解异常向量表和上下文切换时压栈/出栈的顺序。如果此前写过 STM32 的裸机点灯或串口收发,起步会顺畅很多;如果只写过应用层代码,建议先把启动文件、链接脚本、中断向量表这三块补一补,再进入内核部分。
课程在讲什么
整条主线是从一个极简的调度器出发,逐步把内核的骨架搭起来:先做任务定义与任务切换,让多个任务能轮流占用 CPU;再引入临界区保护和信号量、互斥量,解决共享资源的竞争;接着做基于时间片或优先级的调度策略,把事件驱动和延时机制补上。后半程会涉及内存管理——固定分区、动态堆、内存池这几种方案的取舍,以及中断下半部的处理方式。这些内容不是一个个孤立的知识点,而是被组织成一条能连续运行的内核启动链路,每加一个模块,前面已经跑通的部分依然可用。
可复用的工程结构
资料包里的代码不是单文件堆砌,而是按内核源码、硬件抽象层、应用层、启动代码分目录组织。移植相关的东西集中在 arch 和 bsp 里,换一块板子主要改时钟、串口和中断号,内核核心逻辑基本不动。这种分层对做嵌入式项目的人有直接价值:你可以把内核目录整体搬到自己的工程里,只保留需要的调度和 IPC 模块,裁剪掉暂时用不上的部分。配套笔记按章节整理,适合在改完一处调度逻辑后回头对照,确认压栈顺序、优先级反转、超时唤醒这些容易写错的细节。
按什么节奏学
不要一口气把视频看完再动手,这门课的价值在“跟着敲”。建议每次只看一到两讲,把对应模块独立编译通过,用调试器单步看一次任务切换前后的寄存器状态,确认 SP、PC 和 LR 的变化符合预期。遇到调度死锁或中断进不去,先查栈对齐和优先级分组,这两处是嵌入式内核新手最常踩的坑。每完成两三个模块,把当前内核烧到板子上跑一遍,观察串口输出是否稳定,再继续往下加功能。全部跟完之后,尝试把调度器换成另一种策略,或者给现有内核补一个消息队列,能独立改出可运行的版本,才算真正吃透这套代码。
本课程是 >课程的续篇。
课程推荐
《【李述铜】从0到1手把手教你用嵌入式操作系统》本课程是 >课程的续篇。【技能收获】学完可掌握:核心实战技能、项目驱动学习。课程以实战为导向,覆盖从基础概念到完整项目落地的关键步骤,配套章节笔记便于课后复盘与面试前快速回顾。【学习建议】建议按目录顺序学习,先打基础再进入综合实战章节;每完成 2~3 节可结合笔记整理一份学习小结,最终尝试独立复现一套完整 Demo 写入个人作品集。【就业发展】可面向岗位:Linux 运维工程师、SRE、云计算工程师、DevOps 工程师。云原生与自动化运维仍是企业 IT 刚需方向,认证 + 实战项目组合能显著提升面试通过率,适合向中高级运维或架构岗进阶。 若你已有一定编程或运维基础,本课程可帮助你在现有技能栈上快速叠加热门方向能力,提升求职时的项目说服力与薪资谈判空间。
视频目录(60 节)
* 第1讲—C0.00 课程简介.mp4
* 第2讲—C0.01 下载安装开发软件.mp4
* 第3讲—C0.02 下载并调试第一个工程.mp4
* 第4讲—C1.00 tinyOS工作原理与功能概述.mp4
* 第5讲—C1.01 创建任务并运行起来.mp4
* 第6讲—C2.00 资源共享冲突问题概述.mp4
* 第7讲—C2.01 任务间资源共享问题示例.mp4
* 第8讲—C2.02 关中断解决任务间资源共享问题.mp4
* 第9讲—C2.03 调度锁解决任务间资源共享问题.mp4
* 第10讲—C2.04 二值信号量解决任务间资源共享问题.mp4
* 第11讲—C2.05 事件标志组解决任务间资源共享问题.mp4
* 第12讲—C2.06 邮箱标志组解决任务间资源共享问题.mp4
* 第13讲—C2.07 互斥信号量解决任务间资源共享问题.mp4
* 第14讲—C2.08 死锁问题及解决.mp4
* 第15讲—C2.09 任务间共享资源问题总结.mp4
* 第16讲—C3.00 任务与中断共享资源冲突示例.mp4
* 第17讲—C3.01 关中断解决任务中断共享资源冲突.mp4
* 第18讲—C3.02 关指定中断解决任务中断共享资源冲突.mp4
* 第19讲—C3.03 优化缩短关中断的时间.mp4
* 第20讲—C3.04 请求模式解决任务中断共享资源冲突.mp4
* 第21讲—C3.05 嵌套中断共享资源问题及解决.mp4
* 第22讲—C4.00 任务中断的同步与通信概述.mp4
* 第23讲—C4.01 用信号量实现任务间单向同步.mp4
* 第24讲—C4.02 用邮箱实现多事件的单向同步.mp4
* 第25讲—C4.03 用事件标志组实现多事件单向同步.mp4
* 第26讲—C4.04 用信号量实现简单双向同步.mp4
* 第27讲—C4.05 环状同步造成的死锁问题.mp4
* 第28讲—C4.06 利用全局数据实现数据通信.mp4
* 第29讲—C4.07 利用邮箱或消息队列实现数据通信.mp4
* 第30讲—C5.01 系统时钟节拍设置.mp4
* 第31讲—C5.02 任务延时的配置.mp4
* 第32讲—C5.03 一次性定时事件的处理.mp4
* 第33讲—C5.04 周期性定时事件的处理.mp4
* 第34讲—C5.05 定时器的资源互斥处理.mp4
* 第35讲—C5.06 定时器精度问题.mp4
* 第36讲—C6.00 存储管理方案.mp4
* 第37讲—C6.01 定长内存管理.mp4
* 第38讲—C6.02 变长存储块.mp4
* 第39讲—C6.03 存储管理方案小结.mp4
* 第40讲—C7.00 任务管理模式概述.mp4
* 第41讲—C7.01 使用非常驻任务管理事件.mp4
* 第42讲—C7.02 中断事件分离处理.mp4
* 第43讲—C7.05 任务优先级配置.mp4
* 第44讲—C7.03 合理配置空闲任务.mp4
* 第45讲—C7.04 多任务的协同.mp4
* 第46讲—C8.00 实例:总体功能说明.mp4
* 第47讲—C8.01 实例:按键驱动设计.mp4
* 第48讲—C8.02 实例:串口驱动设计.mp4
* 第49讲—C8.03 实例:外部端口驱动设计.mp4
* 第50讲—C8.04 实例:波形生成设计.mp4
* 第51讲—C8.05 实例:命令解释器设计1.mp4
* 第52讲—C8.06 实例:命令解释器设计2.mp4
* 第53讲—C8.07 实例:命令解释器设计.mp4
* 第54讲—C8.08 实例:外部事件处理1.mp4
* 第55讲—C8.09 实例:外部事件处理2.mp4
* 第56讲—C8.10 实例:监控任务设计1.mp4
* 第57讲—C8.11 实例:监控任务设计2.mp4
* 第58讲—C8.12 监控任务设计3.mp4
* 第59讲—C8.13 性能优化和功能裁剪.mp4
* 第60讲—C8.14 设计回顾.mp4




