跳至主要內容
老李教你写操作系统 0x03 - 显卡驱动

今天的目标:写个“显卡驱动”,实际上就是实现一个printf函数。在平时的开发中,我们可以使用标准库给我们提供的printf进行打印输出,不得不说,这个函数应该是最简洁有力的调试工具。但是我们现在要开发操作系统,完全从零开始,这就意味着,我们必须自己实现一个printf函数,方便我们查看各种信息和状态。

在上一篇文章中我们已经抽取出了一个cprintf函数用于打印输出,但这还是太简陋了,今天我们给它加点功能,以满足我们的需求。

要实现的功能有两点:


未央大约 8 分钟操作系统操作系统显卡驱动
老李教你写操作系统 0x02 - Hello World v2

目标

今天的目标:规范化开发流程。

上一篇文章中,出于简洁的考虑只使用了一个.c文件来做说明。后续的开发中代码会越来越多,一个文件肯定是不够的,今天我们将代码做一下简单的拆分,以便更好的扩展。

代码拆分

先把之前的源文件kernel.c贴出来:


未央大约 2 分钟操作系统操作系统QEMUGRUBmultiboot
老李教你写操作系统 0x01 - Hello World

前言

这还得从一只蝙蝠说起。

讲道理这篇文章的题目很不合理。作为一个计算机人,第一篇文章起码应该是0x00吧?这是对计算机最起码的尊重。原本打算在这篇文章之前写一篇关于汇编和硬件基础知识的介绍(以后补上)。虽然汇编和硬件很简单,但是一上来就讲这些简单的知识难免会让人觉得枯燥,因而影响学习的积极性是得不偿失的。索性先写个操作系统找找感觉,以此建立学习的兴趣,未尝不是一件好事。

搞计算机这一行,万事离不了个Hello World。现在开始就带领大家实现一个操作系统版的Hello World


未央大约 7 分钟操作系统操作系统QEMUGRUBmultiboot
老李教你写操作系统 0x00 - bootloader

今天开始,我们来学习操作系统的开发。

前置知识

你需要一点汇编语言的知识,老李为此专门写了一个系列文章,算是要用到的基础知识。按逻辑上来讲,本文是接着汇编语言系列的最后一篇文章来写的,那篇文章已经实现了一个操作系统的bootloader,本文只是对其做了规范化


未央大约 10 分钟操作系统操作系统QEMUGRUBmultiboot