南京大学 操作系统 (JYY) 学习笔记:硬件视角、固件与启动的奥秘 (Hardware  Firmware)
写在前面这是本系列的第三篇。俗话说“三天不练手生”复习一下上节课的核心程序 状态机。用 GDB 单步执行其实就是看着状态机一步步发生状态迁移。而系统调用 (Syscall)则是软件与操作系统之间唯一的接口。今天我们将继续往下挖看看在操作系统还没有醒来之前那个“无情的指令执行机器”硬件是如何被唤醒并把世界交给操作系统的。成为 Power UserGDB 调试与 AI 提问的艺术南大也接入了 DeepSeek。在这个时代把 AI 当成一个不厌其烦教你的专业人士是拉开差距的关键。如果你想和其他人拉开差距不要一味去卷 GPA。熟练使用 Prompt“我在做…。如果你是一位…专业人士有更好的方法和建议吗尽可能全面。”你的学习效率会极大提高。留给人类的时间不多了Prompt 实战我在命令行中使用 gdb 调试。如果你是一位专业人士有更好的方法和建议吗尽可能全面。AI 给出的专业 GDB 进阶指南使用 TUI 模式gdb -tui或CtrlXA启用文本用户界面边看源代码边看调试信息绝杀技巧。设置断点break function在函数入口设置断点。break file:line在指定文件的某行设置断点。条件断点break location if condition仅在满足特定条件时才中断找 Bug 神器。查看变量print variable查看单次变量值。display variable每次停止时自动显示变量值。多线程调试info threads查看所有线程。thread id切换到指定线程。回溯调用栈bt查看当前调用栈frame number切换到指定栈帧。反汇编disassemble查看当前函数的汇编代码。使用 GDB 脚本将常用命令写入.gdbinit文件启动时自动加载配置。优化调试体验set pagination off禁用满屏后的分页暂停。set logging on记录调试输出到文件。硬件视角的操作系统以开源的 RISC-V 处理器为例基于精简指令集计算 RISC 原则。硬件根本不知道操作系统的存在它只是一个无情的指令执行机器。CS 的终极抽象计算机科学的精髓在于抽象下层不需要知道上面怎么用它只管**“无情地提供服务”**。计算机系统的状态机模型状态内存、寄存器的数值。初始状态由系统硬件设计者硬性规定。状态迁移硬件从 PC (Program Counter) 寄存器指向的内存地址取指令译码执行。除了内存和寄存器还有外部世界Memory-mapped I/O (内存映射 I/O)把外部设备的寄存器映射到内存地址上。Interrupt Line (中断线)保证了系统不会陷入死循环随时可以响应外部事件。Reset Line (复位线)保证系统可以在任何混乱状态下瞬间恢复到初始状态。计算机系统初始状态 (CPU Reset)当你按下机箱上的 Reset 按钮时会发生什么x86-64 的 CPU Reset 状态是怎样的在过去你需要去 Intel 的《The Friendly Manual》里大海捞针Volume 3A 差不多 400 多页那是老师年代学习《操作系统》的圣经。今天地球人都不再需要自己翻厚重的手册了你可以让 AI 帮你去茫茫文档中捞针。RISC-V 的哲学RISC-V 的设计原则是极度节省电路。软件能做的事情硬件坚决不管。所以它的 Reset 状态极其简单。总结一句话硬件根本不知道有没有操作系统操作系统在硬件眼里就是一个普通的二进制程序。固件 (Firmware)硬件和 OS 之间的桥梁遗漏的细节第一条指令从哪来CPU Reset 开始执行。从Mem[PC]取指令。译码、执行、往复…问题来了这个初始的PC指向的内存位置必须有一段合法的代码否则 CPU 直接死机。这段代码是谁放进去的Firmware (固件) 的登场这段代码叫引导程序 (Bootloader)来自系统主板厂商。硬件会把一个特殊的只读存储器 (ROM) 映射到 CPU Reset 后的初始地址上。这段代码“出生”就拥有机器的绝对控制权。它负责初始化硬件设备、设置内存、最后加载操作系统。早期的固件写死在 ROM 芯片里更新固件必须拔换芯片。现代的固件 (如 UEFI)存在闪存里可以通过软件更新。也就是 Legacy BIOS 到 UEFI 的进化。固件安全与防篡改既然固件也是代码而且还能被软件更新那黑客岂不是可以随便改早期的写保护很容易被破解。现在的防御机制只允许写入“受信任”的固件更新。这依赖于数字签名机制和公钥加密Diffie-Hellman/RSA。感谢今天的 SSL/TLS (HTTPS) 奠定的密码学基础。这也是为什么现在电脑底层的病毒越来越少的原因更安全的操作系统、AppStore 机制、云端备份。加载操作系统从硬件到操作系统的接力赛以经典的 IBM PC 为例MBR (主引导记录)磁盘的第一个扇区。计算机从 CPU Reset 开始此时0x7c00内存处啥也没有。固件代码扫描了磁盘把 MBR 加载到了0x7c00。Grub 登场这是固件和系统程序员的第一个接口。Grub 会扫描磁盘找到附近的 ELF 文件头将其加载到内存然后弹出选择操作系统的窗口。加载 Linux Kernel将接力棒彻底交给操作系统内核。硬核实操RISC-V 固件与 OpenSBI 编译遇到不懂的底层机制只需要向 AI 提问 追问就行了Q: RISC-V 系统是如何复位、加载操作系统的A: 复位后系统依次执行 ZSBL、FSBL、OpenSBI 等固件阶段最终加载并启动操作系统内核。Q: OpenSBI 的入口位于什么地方A: 通常位于0x80000000由 FSBL 加载并跳转执行。Q:_start开始的_try_lottery是做什么的A: 在多核系统中选择一个“主核”并进行核心同步确保系统启动的有序性。编译 OpenSBI (Everything is a State Machine)Makefile 也是程序它也是状态机如果构建程序不好读我们可以调试它。记住计算机系统的公理“你能想到的就一定有人做到总有人会去发明轮子。”OpenSBI (Open Source Supervisor Binary Interface)是 RISC-V 架构中极其重要的组件。第一步安装交叉编译工具链本来以为要源码克隆、配置构建搞一堆复杂的文件夹……结果发现其实只需要一行命令aptinstallbinutils-riscv64-linux-gnu第二步编译进入 OpenSBI 源码目录执行makePLATFORMgenericFW_TYPEFW_DYNAMIC最终生成的二进制固件文件位于build/platform/generic/firmware/fw_payload.bin。第三步使用 QEMU 启动注QEMU 是一个强大的开源模拟器能够用纯软件模拟出 RISC-V 硬件的运行环境。rootLAPTOP-GT06V0GS:/mnt/d/CSLab/osCourse/lec3/opensbi# qemu-system-riscv64 -machine virt -kernel build/platform/generic/firmware/fw_payload.bin -nographic激动人心的启动日志 (带 AI 辅助注释)# 显示当前运行的 OpenSBI 版本1.3。OpenSBI v1.3 ____ _____ ____ _____ / __\/ ____|_\_ _|||||_ __ ___ _ __|(___||_)|||||||_ \ / _ \ _\\___\|_||||__|||_)|__/|||____)||_)|||_\____/|.__/\___|_||_|_____/|___/_____||||_|# 平台名称riscv-virtio,qemu表示这是一个在 QEMU 上运行的虚拟 RISC-V 平台。Platform Name:riscv-virtio,qemu# 平台特性medeleg表示支持将机器模式的异常委托给监督模式。Platform Features:medeleg# HART 计数1表示只有一个硬件线程Core。Platform HART Count:1# IPI / 定时器 / 控制台设备初始化Platform IPI Device:aclint-mswi Platform Timer Device:aclint-mtimer 10000000Hz Platform Console Device:uart8250# 固件内存布局信息Firmware Base:0x80000000 Firmware Size:322KB Firmware RW Offset:0x40000 Firmware RW Size:66KB Firmware Heap Offset:0x48000 Firmware Heap Size:34KB(total),2KB(reserved),9KB(used),22KB(free)Firmware Scratch Size:4096B(total),760B(used),3336B(free)Runtime SBI Version:1.0# 域信息与启动 HART 信息Domain0 Name:root Domain0 Boot HART:0Domain0 Next Address:0x0000000080200000 Domain0 Next Mode:S-mode Boot HART ID:0Boot HART Priv Version:v1.12 Boot HART Base ISA:rv64imafdch为什么我们要折腾编译固件(拒绝功利)中间多次想放弃编译 OpenSBI但还是听老师的话坚持下来了主要靠 AI 辅助排雷。最终成功看到了 QEMU 跑起.bin的瞬间成就感拉满这绝不是没好处的事理解 RISC-V 架构了解 M 模式 (Machine) 和 S 模式 (Supervisor) 的通信。直击启动过程亲眼见证 OpenSBI 初始化硬件并准备加载 OS。理解硬件抽象层 (HAL)固件抹平了底层硬件差异让 OS 可以平台无关地运行。掌握隔离与虚拟化理解同一硬件如何跑多 OS以及底层的特权级委托机制。尾声配置自己的极客 AG (AI Agent)今天我有我自己的舞台我一直认为我很独特我一定会有自己的天地的部署本地大模型Deepseek-r1-7b笔记本性能有限跑不了满血版本但部署一个 7B 的蒸馏版本足以作为一个专属的、断网可用的极客交流助手。在命令行里敲下大模型启动命令的那一刻才是真正属于赛博时代 Power User 的浪漫。

相关新闻

快手数据采集工具:5大核心功能帮你快速批量下载无水印视频

快手数据采集工具:5大核心功能帮你快速批量下载无水印视频

快手数据采集工具:5大核心功能帮你快速批量下载无水印视频 【免费下载链接】kuaishou-crawler As you can see, a kuaishou crawler 项目地址: https://gitcode.com/gh_mirrors/ku/kuaishou-crawler 想要高效获取快手平台的内容资源?kuaishou-cra…

2026/7/25 18:34:25阅读更多 →
利用 Taotoken 解决 Claude Code 访问不稳定与 token 不足的痛点

利用 Taotoken 解决 Claude Code 访问不稳定与 token 不足的痛点

利用 Taotoken 解决 Claude Code 访问不稳定与 token 不足的痛点 对于依赖 Claude Code 作为日常编程助手的开发者而言,服务中断或额度耗尽是最令人头疼的体验。你可能正在调试一段关键代码,或是与 AI 进行深度设计讨论,突然的连接失败或配额…

2026/7/25 18:32:25阅读更多 →
8.4V锂电池充电芯片升压降压升降压全覆盖,每款都带电路图BOM和适用场景

8.4V锂电池充电芯片升压降压升降压全覆盖,每款都带电路图BOM和适用场景

8.4V锂电池充电芯片6款方案全解析 升压/降压/升降压全覆盖,从1A到3A充电电流随你选,电路图BOM全公开 8.4V是两节串联锂电池的满充电压,做两节锂电池产品必然要选一颗充电芯片扒8.4V充电电路。但输入电压不同、充电电流不同、产品对效率和成本…

2026/7/25 18:32:25阅读更多 →
Unity UI骨骼动画实战:SkeletonGraphic实现血条跟随与动态图标

Unity UI骨骼动画实战:SkeletonGraphic实现血条跟随与动态图标

1. 项目概述:当骨骼动画遇见UI界面在Unity里做UI,你是不是也受够了静态图片的呆板?想给血条加个受伤时的震颤效果,给技能图标做个冷却完毕的闪光动画,或者让一个角色小头像做出生动的表情?如果还在用序列帧…

2026/7/26 1:41:45阅读更多 →
TI CC26x0/CC13x0无线MCU架构解析:从Cortex-M3内核到低功耗射频设计

TI CC26x0/CC13x0无线MCU架构解析:从Cortex-M3内核到低功耗射频设计

1. 项目概述与核心价值如果你正在为下一个物联网或无线传感节点项目选型,或者已经拿到了德州仪器(TI)的CC26x0/CC13x0系列芯片,却对那一千多页的技术参考手册感到无从下手,那么这篇文章就是为你准备的。我花了相当长的…

2026/7/26 1:41:45阅读更多 →
UG运动仿真在发动机进气排气系统动态干涉分析中的应用

UG运动仿真在发动机进气排气系统动态干涉分析中的应用

那天下午,我正对着屏幕上一套复杂的发动机三维模型发愁。客户要求验证进气排气系统的运动干涉,这不是简单的静态装配检查,而是要模拟凸轮轴驱动下气门的真实开闭时序。如果沿用老方法——手动旋转部件、逐帧检查——不仅效率低下,…

2026/7/26 1:41:45阅读更多 →
深入解析TI AM261x IEP硬件定时器:工业以太网精准同步的核心

深入解析TI AM261x IEP硬件定时器:工业以太网精准同步的核心

1. 项目概述:为什么工业以太网需要硬件定时器?在工业自动化车间里,你可能会看到几十台伺服电机、机械臂和传感器正在协同工作,它们之间的动作衔接需要精确到微秒级。如果其中一个设备的动作慢了哪怕几毫秒,轻则导致产品…

2026/7/26 1:41:45阅读更多 →
Unity动态加载GLTF/GLB模型:GLTFUtility插件实战指南

Unity动态加载GLTF/GLB模型:GLTFUtility插件实战指南

1. 项目概述:为什么GLTFUtility是Unity开发者的必备工具 如果你正在Unity里捣鼓3D模型,尤其是从Blender、Maya或者各种在线资源库下载的模型,那你一定遇到过格式兼容这个老大难问题。FBX虽然通用,但文件大、解析慢,而…

2026/7/26 1:41:45阅读更多 →
重庆AI应用案例解析:工业与城市治理实战

重庆AI应用案例解析:工业与城市治理实战

1. 项目背景与核心价值2025年度重庆市人工智能应用场景典型案例集是由重庆科协牵头组织的重要行业实践汇编。这份案例集不同于普通的学术论文或技术报告,它的独特价值在于真实记录了重庆地区人工智能技术在各产业中的落地实践。作为长期关注AI产业化的从业者&#x…

2026/7/26 1:39:45阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →