Публикации по теме 'osdev'


Как работают карты памяти
С чего начать К сожалению, не так много ресурсов, чтобы рассказать об этом без тонны технических подробностей (даже в вики osdev.org нет страницы для MMC на 7 декабря 2019 года), поэтому я решил создать такую ​​статью на мой собственный. Я надеюсь, что это поможет вам реализовать свою собственную подсистему MMC или какой-нибудь драйвер MMC (или просто лучше познакомиться с подсистемой MMC). Все написанное здесь основано на моем опыте работы с Embox RTOS , где я реализовал пару..

Вопросы по теме 'osdev'

Как загрузить ядро ​​с диска с BIOS int 13h в сборке NASM?
Я застрял в этом на несколько недель и понятия не имею, где я ошибаюсь, потому что NASM не выдал мне никаких ошибок. Код довольно понятен из-за комментариев. это код, который загружается из BIOS ;--------------------------------------------...
7148 просмотров
schedule 06.04.2023

Как создать операционную систему с помощью C#
Я читал о Singularity , и он частично был разработан на C#, но как я могу разработать операционную систему частично с помощью С#? (потому что загрузчик должен быть на ассемблере, насколько я знаю) я хочу знать, с чего начать (учебник,...
2988 просмотров
schedule 16.07.2022

Как правильно подтвердить прерывание ATA / IDE?
В настоящее время я работаю над операционной системой для хобби, в частности над драйвером ATA. У меня проблемы с командами ввода данных PIO с прерываниями. Я пытаюсь выполнить команду READ MULTIPLE, чтобы прочитать несколько секторов с диска, блок...
1000 просмотров
schedule 22.08.2022

CPUID на нескольких ядрах/NUMA
Я работаю над обнаружением процессора и общим кодом обнаружения среды для своей хобби-ОС. Есть ли когда-нибудь случай, когда CPUID нужно вызывать несколько раз? То есть, если система имеет несколько ядер, должна ли ОС вызывать CPUID для каждого...
1297 просмотров
schedule 12.09.2023

entry () попасть на другой адрес из точки входа, которую я установил в Elf
Недавно узнал про ОС. И я хочу написать простой загрузчик, который изменяет реальный режим на защищенный режим, а затем загружает простое ядро. Но я не могу понять проблему адреса входа. Сначала я поместил загрузчик в первый сектор OS.img (qemu),...
467 просмотров
schedule 05.07.2022

Сборка регистров sp и bp
Мне нужна помощь в понимании того, как регистры стека работают в ассемблере x86. Фрагменты кода ниже взяты из загрузчика, который я изучаю. Функция печати принимает три «аргумента». Поскольку я помещаю все три в стек, я ожидаю, что sp будет...
2839 просмотров
schedule 10.10.2022

Счетчик секторов гибкого диска
Я пытаюсь понять, почему lseek() используется в этом создателе изображений. Почему 5 байт от начала файла? Если я изменю этот номер, ОС не загрузится. Создатель образа создает файл .img с bootloader.bin внутри. /* modify the sector count...
243 просмотров
schedule 27.05.2022

Как скомпилировать простую операционную систему и сделать ее загрузочной?
Меня интересуют концепции операционных систем, поэтому я скачал Hello world OS . Я хотел бы знать, как скомпилировать и связать код и сделать загрузочный образ. Я использую старую версию Cygwin для Windows (Cygwin-b20) 1999 года. Мой код для...
979 просмотров
schedule 02.12.2023

Адресные пространства PCI
У меня вопрос по поводу PCI. PCI имеет три адресных пространства; PCI I/O, память PCI и пространство конфигурации PCI. Где они физически расположены? В PCI-контроллере? Или в устройствах? Является ли какой-либо из них частью системной...
620 просмотров
schedule 07.05.2023

Странное поведение указателей C с вводом-выводом с отображением памяти
В настоящее время я работаю над написанием базовой операционной системы в качестве учебного проекта. Для этой цели я использую кросс-компилятор gcc 4.9.2. При попытке использовать ввод-вывод с отображением памяти я наткнулся на поведение указателей...
206 просмотров
schedule 12.05.2022

Ограничение Nd встроенной сборки GCC
Я разрабатываю маленькое игрушечное ядро ​​на C. Я подошел к моменту, когда мне нужно получить пользовательский ввод с клавиатуры. До сих пор я реализовал inb , используя следующий код: static inline uint8_t inb(uint16_t port) { uint8_t...
732 просмотров
schedule 26.05.2023

Курсор текстового режима не отображается в эмуляторе qemu vga
У меня проблема с функцией, которая обновляет позицию курсора в текстовом режиме, определение и объявление функции #include <sys/io.h> signed int VGAx = 0,VGAy=0; void setcursor() { uint16_t position = VGAx+VGAy*COLS;...
1194 просмотров
schedule 12.06.2022

Как обрабатывать 15-ю запись в таблице дескрипторов прерываний
РЕДАКТИРОВАТЬ : исходный код можно найти в моем репо на Github: https://github.com/tuhdo/os-study . Я сопоставил IRQ 2 PIC (x86) с 32-й записью и далее в IDT. Чтобы проверить прерывания PIC, я назначил первую 31 подпрограмму той же функции....
394 просмотров
schedule 07.05.2023

INT 0x13 / AH = 0x02 работает с образом дискеты, но не при записи на флешку
Я пытаюсь создать простую систему команд в сборке x86. Система команд - это второй этап, который загружается в 0x1000: 0000. Чтобы увидеть мой загрузчик, щелкните в этом вопросе о stackoverflow . Вот система команд второго этапа: [BITS...
395 просмотров
schedule 26.02.2024

Ошибка чтения диска при загрузке секторов в память
Я попытался разработать загрузчик, используя это , но при запуске показывает: disk read error! Если я проигнорирую это, в более поздней части это покажет мне неправильное отображение памяти. Я также следил за некоторыми другими...
1793 просмотров
schedule 05.11.2022

Как я могу JMP переместить код в мою MBR?
Я пытаюсь написать чрезвычайно простой MBR, чтобы начать учиться писать MBR / ядро. Это то, что у меня есть (созданное из частей других MBR). Бинарный файл, который я получаю при использовании nasm, а затем ld для связывания, немного отличается от...
1014 просмотров
schedule 24.05.2023

Тройные ошибки QEMU при включении пейджинга
Я внедряю свое собственное ядро, и я застрял. Я пытаюсь загрузить свое ядро ​​​​в виртуальные адреса старшей половины. Я решил проблему идентификационных адресов, сопоставив идентификаторы с низким 1M ОЗУ. Я создал раздел init , который...
1056 просмотров
schedule 21.05.2023

Где разместить стек и загрузить ядро
Я новичок в разработке операционных систем, и мне любопытна проблема, с которой я столкнулся при разработке собственного загрузчика. Моя операционная система будет написана на ассемблере и будет работать в 16-битном реальном режиме. Я знаю, что...
305 просмотров
schedule 12.06.2022

Ошибка при создании загрузочной дискеты, содержащей загрузчик и ядро
Я пытаюсь создать загрузочную дискету для файлов boot.bin и kernel.bin. Мой код boot.asm: bits 16 section .text start: JMP MAIN WAIT_FOR_KEY: MOV AH, 00H INT 16H RET CLEAR: MOV AH, 0H ;CHANGING THE VIDEO MODE TO...
299 просмотров
schedule 13.07.2023

Диск BIOS — блокировка чтения секторов в память (int 0x13, ah=0x02)
Я пишу MBR и использую QEMU для тестирования. При использовании чтения секторов в память ( int 0x13, ah=0x02 ) инструкция int блокирует выполнение моей программы, и она продолжает зависать. Я протестировал это с помощью различных операторов...
1807 просмотров
schedule 07.03.2023