标签: bios

如果默认情况下禁用 A20 线,如何在 0xFFFFFFF0 处访问 BIOS ROM?

我正在阅读有关 A20 线的信息http://wiki.osdev.org/A20_Line,这似乎表明 A20 线默认情况下处于禁用状态。在Pentium上,如果硬复位后立即输出的地址为0xFFFFFFF0,是否意味着A20线默认启用?

boot x86 bios rom

4
推荐指数
1
解决办法
412
查看次数

PCI ROM 如何被阴影化?

在几个资源中我发现: ROM 映像必须复制到 RAM 到 000C0000h 到 000DFFFFh。如果类代码表明这是 VGA 设备 ROM,则必须将其代码复制到从位置 000C0000h 开始的内存中。

1:如果我有PCI饥饿河马卡,ROM大于128KB怎么办?

2:如果我有 ROM 64KB 的常规 PCI 设备,但我有 4 个怎么办?它们是否按顺序加载到该内存范围中?如果是这样(尽管我对此表示怀疑),在 init 和 boot 阶段之间如何保存代码映像?

3:如果 BIOS 决定不遵循规范并指定不同的内存位置,会发生什么情况?为什么使用这个范围很重要?

4:普通机箱与VGA接口到底有什么不同?难道仅仅是限制造成了差异吗?

hardware boot bios pci-bus pci

4
推荐指数
1
解决办法
2174
查看次数

STARTUP IPI 对应用程序处理器有什么影响?

我现在正在尝试了解启动过程以及处理器如何初始化。我已阅读了多处理器规范部分B.4.2但我不明白什么INIT IPISTARTUP IPI做的BSPAP

operating-system intel bios

4
推荐指数
1
解决办法
1255
查看次数

ihah, ohah 和 int86 是什么?

我试图理解一个程序来获取箭头键。这是代码:

int getkeys( )
{
       union REGS i,o;
       while(!kbhit( ));
            i.h.ah=0;
       int86(22,&i,&o);
            return(o.h.ah);
 } 
Run Code Online (Sandbox Code Playgroud)

有人可以解释我这个代码。这是为了获得箭头键,但我没有得到这个代码。

assembly dos bios turbo-c++ x86-16

4
推荐指数
1
解决办法
1447
查看次数

UEFI 启动模式启动流程如何​​?

这个问题的表达方式和什么是 UEFI 的启动顺序一样?,但似乎不是我想要的。我想从指令的角度了解 UEFI 序列。

例如,在 BIOS 引导模式的情况下,以简化的方式,

  • 计算机电源已打开。
  • 连接到主板的 BIOS 芯片的内容执行 POST(开机自检)过程。
  • BIOS 搜索 MBR(主引导记录),它具有按预设引导设备顺序的引导签名。
  • 如果找到带有引导签名的 MBR,则将设备的第一个扇区(512 字节)加载到 DRAM,地址 0x7C00。这个加载的扇区(512 字节)成为“第一阶段引导加载程序”。
  • BIOS 将控制权转移到此第一阶段引导加载程序。换句话说,位于 DRAM 中物理内存地址 0x7C00 的操作码被执行。

图片

相关文章:https : //neosmart.net/wiki/mbr-boot-process/

但,

在 UEFI 的情况下,我很难掌握这个顺序。

我已经浏览了 UEFI 规范文档和 OS Dev UEFI 部分。

UEFI:https : //uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf

操作系统开发:https : //wiki.osdev.org/UEFI

似乎这个 efi_main() 函数在 BIOS 模式下相当于 0x7C00 的点。但是如何?

UEFI固件是否在做类似的事情

jmp efi_main

在完成一系列工作之后?

一季度。UEFI 启动模式的流程如何?

Q2。是否有一个很好的 UEFI 示例或教程,例如基于 BIOS 的 Brokenthorn?

聚苯乙烯

我已经看到了英特尔在 2020 年取消 BIOS 支持的消息(这些年已经过去了)。

https://www.anandtech.com/show/12068/intel-to-remove-bios-support-from-uefi-by-2020

它说 …

boot assembly bios sequence uefi

4
推荐指数
1
解决办法
5721
查看次数

QEMU gdb 不显示固件说明

我正在尝试调试 QEMU 模拟器附带的 bios.bin。我按如下方式启动 QEMU:

qemu-system-x86_64 -bios bios.bin -s -S
Run Code Online (Sandbox Code Playgroud)

然后我开始调试:

gdb
target remote localhost:1234
Run Code Online (Sandbox Code Playgroud)

GDB 处于 Intel 切换状态 0xffffffff0 现在固件/BIOS 应该在的位置。但是,内存中此位置没有任何内容。即使通过更多指令单步执行,nexti它也会解码为全零。

我做错了什么还是我误解了什么?我基本上想获得 cpu 调用的第一条指令并从那里继续调试。

debugging x86 gdb qemu bios

4
推荐指数
1
解决办法
506
查看次数

为什么引导加载程序的开头需要 ORG 0x7c00?

在我见过的每个引导加载程序代码中,文件开头都有这一行“ORG 0x7c00”。据我所知,BIOS会将这段代码放在地址0x7c00处。

那么执行“org 0x7c00”的原因是什么?是不是如果第一条指令加载到0x7c00,计数器就会自动从那里开始?每条指令的地址不都是0x7c00 + 偏移量吗?

assembly operating-system bios nasm bootloader

4
推荐指数
1
解决办法
1689
查看次数

如何使用java获取BIOS信息?

如果我能使用java程序获取BIOS设置信息,请告诉我.我使用的是windows7作为操作系统.

java bios

3
推荐指数
1
解决办法
1468
查看次数

没有在BIOS设置中启用Hyper-V的选项

我是Windows Phone 8应用程序开发的新手.我安装了SDK 8.0.当我运行我的应用程序时,它显示一个错误告诉我启用Hyper-V.在搜索时,我发现这个MSDN文档 在BIOS中有一个解决方案.但是当进入我的BIOS设置时,则没有可用的选项.

有什么建议?

c# virtualization hyper-v bios windows-phone-7

3
推荐指数
1
解决办法
1万
查看次数

试图从软盘驱动器读取扇区时,INT 13、2挂在x86实模式下

我正在为学校项目编写DOS克隆,并尝试使用BIOS INT 13、2从软盘驱动器(主要是FAT12文件系统的根目录,扇区19)读取某些扇区。我将参数设置正确-或至少我认为是这样做的-然后用AH = 2调用INT 0x13。然后,系统挂起。我不知道为什么。

我正在使用以下代码来调用中断:

mov ah, 0x2   ;Read sectors function
mov al, 1     ;I want to read one sector
mov ch, 0     ;From track 0
mov cl, 2     ;Sector 2
mov dh, 1     ;Head 1
mov dl, [device_number] ;Obtained from BIOS during boot
mov bx, 0x7C0 ;Buffer located at 0x7C00:0x0000*
mov es, bx
mov bx, 0
stc           ;Set carry for older BIOSes that just unset it.
int 0x13      ;Call BIOS INT 0x13
jc .error     ;If there's an …
Run Code Online (Sandbox Code Playgroud)

x86 assembly bios osdev x86-16

3
推荐指数
1
解决办法
528
查看次数