标签: bootloader

汇编代码说明

我已经开始学习装配.我遇到过这些问题.

;*************************************************;
;   OEM Parameter block / BIOS Parameter Block
;*************************************************;

TIMES 0Bh-$+start DB 0

bpbBytesPerSector:      DW 512
bpbSectorsPerCluster:   DB 1
bpbReservedSectors:     DW 1
Run Code Online (Sandbox Code Playgroud)

我对第一行声明"bpbBytesPerSector:DW 512"感到困惑.在这里我认为DW是定义单词.因此DW 512意味着定义512个字意味着1024个字节.现在标签是"bpbBytesPerSector".每个扇区的字节数应为512(这是我的想法).同样,我无法理解接下来的两行.我对这完全感到困惑.任何人都可以解释一下.谢谢.

x86 assembly floppy bootloader

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

运行linux可执行文件的过程

有没有关于在Linux中运行某些可执行文件时会发生什么的良好文档.例如:我开始./a.out,所以可能运行一些引导加载程序程序集(带有c运行时?),它在程序中找到起始符号,进行动态重定位,最后调用main.

我知道上面的内容不正确,但是要查找有关此过程如何发生的详细文档.你能解释一下,还是指出那些链接或书籍?

c linux bootloader

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

在bootloader中启动前的cli

我在网上冲浪时发现了512字节的os竞赛.

一切都安装在bootsector中.

在阅读了一些源文件后,

我发现cli在开始例程之前总会有指令.(在组装中)

use16
org 7c00h
jmp 0:start
start:
  cli
  do something here..(this section sometimes include int 10h)
Run Code Online (Sandbox Code Playgroud)

我想知道的是

  1. 为什么cli在开始常规之前是必要的

  2. 之后cli,有时候,他们会使用中断!就像int 10h我想知道为什么他们cli会在正常情况下使用中断?

x86 assembly bootloader

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

操作系统存储在磁盘上的位置以及引导加载程序如何定位?

这可能是操作系统特定的我不确定(我在Linux上工作).当BIOS将引导加载程序带入内存并且CPU开始执行它时,它如何定位操作系统?它是存储在特殊的磁盘分区/知名扇区等吗?如果它存储在文件系统上,则引导加载程序需要与存储在OS中的文件系统代码交互.这个鸡蛋问题怎么解决了?

linux operating-system bootloader

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

为Grub 2引导加载程序增加触摸灵敏度?

我想知道Ubuntu 13.04中存在哪些库允许与Grub2集成以及它的更多细节(即语言,开发阶段,开发人员等),或者如果不能这样做,为什么?

我还认为可以在Surface Pro架构中使用本机设备代码,但是没有如何开始的经验.如果有可能请告诉我!


编辑: 2013年3月14日@太平洋标准时间下午5:40

我一直在努力寻找并在Ubuntu 13.04下找到以下软件包:

ubuntu integrate touch bootloader

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

ARM Bootloader:禁用MMU和缓存

根据一些教程,我们将在bootlaoder的开头禁用MMU和I/D-Caches.如果我理解正确,它的目的是直接在程序中使用物理地址,所以如果我错了请纠正我.谢谢!

其次,我们这样做是为了禁用MMU和缓存:

mrc P15,0,R0,C1,C0,0

bic R0,R0,#0x00002300 @ clear bits 13,9:8

bic R0,R0,#0x00000087 @清除位7,2:0

orr R0,R0,#0x00000002 @ set bit 2(A)对齐

orr R0,R0,#0x00001000 @设置位12(I)I-Cache

mcr P15,0,R0,C1,C0,0

D-Cache,MMU和数据地址对齐故障检查已被清除位2:0禁用,但为什么我们在下列仪器中立即启用位2?要确保此操作有效?

最后一个问题是为什么D-cache被禁用但是I-caches能够?加快仪器加工?

arm bootloader mmu

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

以块(1024字节)擦除闪存

我正在制作一个bootloader.在向该块中的那些寄存器写入任何内容之前,我必须擦除1024字节的内存.即使我想写2个字节,我也不得不擦除1024个字节.我的问题是我不知道每个块的起始位置.例如,假设我想将以下字节写入此地址.

地址: 0x198F0

字节:C80E00010001616FDFECD6F08C8C92EC

当我尝试从地址开始擦除1024个字节时,0x198F0我注意到它开始从中删除0x19800.

我怎么知道每个块从哪里开始,所以我可以在软件中计算它?

我想知道这个的原因是我可以在擦除它之前将整个块复制到ram中,然后修改它,然后将它写回到同一个块中.我正在使用PIC18f87J11和MPLAB XC8编译器.我希望清楚我想要做什么,否则请在评论中告诉我.

谢谢!

embedded microcontroller microchip pic bootloader

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

STM32F303上的Bootloader:从工厂内置或外部编程?

我有一些关于ATMEL和ATMEL引导程序的背景知识,我们正在转向ARM进行一个新项目.特别是我们将使用STM32F303RET6.这基本上是具有更多模拟输入引脚的Cortex M4.

我一直在阅读有关引导程序的文档,我非常困惑:

在" 入门文档"的第19页上,它说明了以下内容:

"嵌入式引导加载程序位于系统内存中,由ST在生产期间编程 "

此外,应用笔记AN2606,第81页提到这种内置的引导加载程序不支持通过USB编程.(仅限UART,I2C或CAN)

但是在Internet上的其他地方(例如这个,虽然对于F103)我已经读到了使用ST-link V2(ISP)编程引导加载程序的必要性.

在这一切中我很困惑所以这里是我的问题:

  • STM32芯片实际上是否带有从工厂编程的引导加载程序?
  • 工厂嵌入式引导加载程序是否有某种形式的故障保护,"始终存在"编程接口?意思是我以后可以编程第二个引导加载程序?
  • 上一个问题分到另一个问题:如果我使用ST-linkV2编程器,我会覆盖工厂编程的bootloader吗?
  • 关于BOOT1选择位,我完全失去了.如果它是处理器的逻辑功能,我该怎么设置呢?这似乎是鸡和蛋的问题.
  • 最后我可以通过USB重新刷新这个芯片吗?看起来我可以,但STM32文档1说ST编程的嵌入式dbootloader不能.我需要一个不同的引导程序吗?

我知道我很困惑,我真的很感谢你的帮助.

谢谢佩德罗

stm32 bootloader

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

扩展的ASCII字符在int 10h中不起作用

我有一个简单的操作系统(实模式),用NASM(只有bootloader)编写,大多数用C编写.

我想打印这个字符:ñ,我使用这个函数使用int 10h将字符打印到屏幕:

void putch(char chr)
{
    __asm__ __volatile__ ("int $0x10"
                          :
                          : "a" ((0x0e<<8) | chr),
                            "b" (0x0000));
}

void println(char *str)
{
    while (*str)
        putch(*str++);
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试打印ñ:

println("ñ\r\n");
Run Code Online (Sandbox Code Playgroud)

但是当我编译并执行时(在qemu和VB框中),字符"ñ"被忽略.我用CP-437编码保存了源代码,但问题仍然存在.这也会影响所有扩展的ASCII字符.

c x86 bios nasm bootloader

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

在纯UEFI中启动时,谁启用A20线路?

这是由UEFI固件还是由GRUB grubx64.efi引导加载程序处理?

我看着https://wiki.osdev.org/UEFI声称:

UEFI固件...还准备了具有平面分段的保护模式环境,并为x86-64 CPU准备了具有身份映射分页的长模式环境。A20门也被启用。

但找不到任何官方资源来备份此信息。UEFI规范没有提及这一点。

linux内核提供了一个efi-stub,可以用作引导加载程序,但是在检查了其源之后,我看不到它是否启用了A20。因此,我仍然不知道它是UEFI固件的工作还是Bootloader的工作。

(我想为UEFI编写自己的引导程序,并想了解UEFI固件提供了“开箱即用”的设置以及我必须实现的部分)

x86 grub x86-64 bootloader uefi

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