任何了解 POST 以及如何设计和编写代码的好地方?我是一名 C++ 程序员,对这个词感到很困惑。
谢谢
您可能想查看coreboot的代码,这是一个在许多不同类型的硬件上运行的免费软件(开源)BIOS 项目。
您可以签出OpenBIOS项目。
他们有关于大量开源 BIOS/固件实现的信息。作为开源,您可以从 svn 获取代码或在线阅读所有代码。
BIOS?这在嵌入式世界中并不常见,人们仍然在这个地方写 POST。通常,它们发生在操作系统本身启动之前,或者在操作系统启动时发生。
目标是确定设备是否可以运行、在降级模式下运行,或者是否应该发出故障信号。一个典型的顺序是测试 CPU 和 XIP 闪存,然后是内存,固定硬件,然后是可选硬件。您定义了一系列测试。测试具有启动功能和检查功能。启动功能启动测试;检查轮询以查看结果是否已经可用。测试具有依赖关系,并且测试控制器启动那些依赖关系已通过的测试(CPU 和 RAM 是特殊情况,如果它们被破坏,那么拥有一个好的测试控制器是不可行的)。
正如您可以从 CPU 和 RAM 测试中推断的那样,您没有 C++ 的奢侈。你甚至不能假设你可以使用所有的 C。在 POST 的第一部分,你甚至可能没有堆栈(!)
开源 EFI BIOS,带有文档和规范(学习的好方法):
背景 2004 年 6 月,英特尔宣布将在当年晚些时候根据开源许可证发布其下一代固件技术的“基础代码”——PC BIOS 的继任者。由英特尔开发的作为名为 Tiano 的项目代码的一部分的基础代码是英特尔对可扩展固件接口 (EFI) 规范的“首选实施”。即将发布的代码包括基础代码的核心以及驱动开发工具包。为了实现将代码作为开源发布的意图,英特尔与提供工具和服务以支持开源计划的行业领导者 Collabnet 合作,为这项工作创建了一个社区。这种合作的结果就是这个开源网站。
由于有更多基于 EFI 的项目与基础代码并行工作,因此决定向开源社区发布 EFI Shell 应用程序和 EFI 自我认证测试 (SCT) 项目。
POST(开机自检)是 Bios 的一部分,编写 POST,而不是 BIOS 的其他部分,似乎确实是一项奇怪的任务。处理器制造商网站的文档部分将是 BIOS 编程的良好开端。我记得很久以前写过 80186 BIOS 和 POST,我专门使用英特尔规格。
顺便说一句,您将在汇编程序中执行此操作,而不是 C++。