Re: [问题] BIOS Interrupt

楼主: sj1973 (史考特)   2020-03-25 03:24:09
看你要写的bootloader用途
以x86为例, 我的观念至少已经22年前的事了,现在可能不一样了.
底下是以legacy mode 为主
从 bios 开始 POST 会直接 mapping interrupt table . 这些资料应该google都找得到
反正最主要还是透过 int19h 去 load storage 的 mbr 取得第一个boot device的
first sector 到 memory, 最后 jump 0000:7C00, 另外一种就是利用 Boot ROM 方式
你的boot loader 起始点就从这边开始,之后你就要开始做你的用途
通常os在这边就会开始挂上driver 自己写的driver
最主要利用
int13h 去架构 file system
int10h (graphics card support), 画画面
用你写的中断取代原本的某些中断,最主要是HW 会利用IRQ 产生对应的 int
例如 LAN card
所以认真来说你只要知道 int3h, int8h int9h int10h, int13h, int16h int19h
其实就够了 这些关键字应该都可以查到
如果你是x86则要切到protection mode, 在做这件,没经验的很容易就crash了
至于规格书我认真没看过,intel写的白皮书还是黄皮书(忘了)上面有提到
但这些都是看 BIOS source code 才知道他们怎么干的
有一些老书都有介绍一些,但后来觉得那些书都是骗钱(当时15岁 asm都是自学的)
你提到的embeded BIOS user's Manual 我看的一下,
前面部分是BIOS standard interrupt, 但后面指令集应该是他那套eBIOS loader
透过console 做debug用, 感觉很像VIA写的那一套
※ 引述《adsl9527 (申装adsl的小为)》之铭言:
: 最近想自己写看看 bootloader
: 想请问 bios interrupt table
: 是有规格书的吗
: 网络上是有查到一个 pdf
: Embedded BIOS User's Manual
: 但我不知道这是不是所有 BIOS 的规格书
: (类似C99规格书)
: 我不熟悉这个领域 如果这问题不清楚请再说个 感谢
作者: adsl9527 (申装adsl的小为)   2020-05-02 14:06:00
谢谢回文 很有帮助

Links booklink

Contact Us: admin [ a t ] ucptt.com