Страница 1 из 1
ARM
Добавлено: 06.10.20 20:45
БудДен
Тут был человек по имени "Гость". Он интересовался наработками под ARM.
Поскольку "Гость" не особо отвечает, выложу здесь ссылку на документацию по A2 на ARM. Не уверен в том, как данная A2 соотносится с "A2 вообще", но информация в этом документе скорее всего интересна даже тем, кто не собирается заниматься ARM-ом.
https://gitlab.com/budden/jaos/-/blob/7 ... 2onArm.tex
В текущей версии ЯОС этого документа нет (я недавно выпилил ARM), но теперь я думаю, что, может быть, стоит пересмотреть это решение. Как минимум, для этого нужно найти любой эмулятор, на котором можно проводить тестирование. Пока что этот вопрос открыт.
Re: ARM
Добавлено: 06.10.20 21:43
Павиа
ARM'ов куча всяких и все они не совместимы между собой.
для этого нужно найти любой эмулятор, на котором можно проводить тестирование. Пока что этот вопрос открыт.
Есть только qemu он эмулирует только систему команд без периферии и внутренней кухни. Поэтому в качестве эмулятора для ОС это очень плохой вариант. Ядро Линукс специально было заточено под qemu, чтобы была возможность использовать в качестве гостевой ОС. А по хорошему должны были наоборот qemu затачивать до Линукса.
Как говориться на безрыбье и рак рыба.
Re: ARM
Добавлено: 06.10.20 22:21
БудДен
Ну там упоминается rPi.
Re: ARM
Добавлено: 06.10.20 23:10
Павиа
Ну там упоминается rPi.
Там много чего упоминается А я вам говорю как там все обстоит на самом деле. Достаточно открыть исходник qemu и сравнить с документаций на туже малинку.
https://github.com/qemu/qemu/commit/e3e ... bec2ad5d32
Код контролера прерывания основан на pl190.c что не имеет ничего общего с тем что bcm2835
Не говоря о том что одна лишь документация на контроллер прерываний занимает больше 300 страниц, а тут весь код менее 200 строк!
И так по всем основным аппаратным вещам. За последние пару месяц немного исправили. Но там капля в море.
Загрузка делается при помощи хуков. Эмуляция носителя данных сделана не до конца, что-то пишется а что-то и нет.
Re: ARM
Добавлено: 07.10.20 08:58
БудДен
Тогда задача сводится к поиску точки в таблице MxN, где M - число версий A2, а N - число версий малины (которые нужно покупать до тех пор, пока она не заработает). Если команда A2 укажет эту точку, будет намного легче, а пока я не понимаю, имеет ли смысл браться за это дело. Т.к. впилить сборку ARM я могу, а вот протестировать - нет.
Re: ARM
Добавлено: 07.10.20 22:51
БудДен
Выяснилось, что под малину компилируется только ядро - 25 файлов из 1000. Т.е. там не будет графики. В окрестности обнаружил две малины - при возможности попробую залить.
700 файлов (с графикой и периферией) собирается под Zynq-7000. Как я понял - это какое-то ядро, на нём есть семейство плат, в основном они стоят весьма ощутимо. И вот дальнейший план действий не совсем ясен. Конечно, интересно бы запустить компьютер не только под ARM, но и с FPGA, где можно поиграть в ихние Active Cells. С другой, не уверен, что игра стоит свеч.
Re: ARM
Добавлено: 22.02.21 19:57
Гость
А где можно доки почитать про ЯОС именно последней версии? Как она работает и как стыкуется с BIOS/БСВВ компьютера? Какие стандартные прерывания БСВВ и/или свои драйвера периферии компьютера, ПДП/КП? Как она вообще работает? Хотя бы краткий обзор-путеводитель-справочник?
Re: ARM
Добавлено: 22.02.21 23:21
БудДен
Я этого не описывал (да и почти ничего не знаю), т.е. только в исходниках. Интересует вариант для x86? Начинать ознакомление, наверное, стоит с файла ЯОС.фок, в котором хотя бы написано, сборка под какую платформу из чего состоит.
Re: ARM
Добавлено: 22.02.21 23:25
БудДен
Например, пакет Kernel:
Код: Выделить всё
License.Text
OBEMBR.BIN # MBR
BootManagerMBR.Bin BootManagerTail.Bin # Boot manager
BootManager.Bin BootManager.Text
OBL.Bin OBL.Text # Boot loader
Setup.Text # Documentation
# Active Oberon run-time
# Runtime support for SIGNED64 and strings
I386 { I386.Builtins.Mod }
AMD64 { AMD64.Builtins.Mod }
ARM { ARM.FPE64.Mod ARM.Builtins.Mod }
I386 и COOP { CPU.Mod }
AMD64 и COOP { CPU.Mod }
RPI и COOP { RPI.CPU.Mod }
ZYNQ и COOP { Zynq.CPU.Mod }
ARM и ~COOP { ARM.Initializer.Mod }
ZYNQ и ~COOP { Zynq.ARM.Platform.Mod }
UCS32.Mod
ПереводыЭлементовКода.Mod
UCS2.Mod
# Low-level trace output
Trace.Mod
ARM и ~COOP { ARM.BootConfig.Mod }
WIN и ~COOP { Windows.Kernel32.Mod }
LINUX { Linux.Glue.Mod Linux.Unix.Mod }
# cooperative runtime system
COOP { Counters.Mod }
BIOS и I386 и COOP { I386.APIC.Mod APIC.Processors.Mod BIOS.ACPI.Mod ACPI.Timer.Mod }
UNIX и COOP { Unix.Processors.Mod Unix.Timer.Mod }
RPI и COOP { RPI.Processors.Mod RPI.Timer.Mod }
ZYNQ и COOP { Zynq.Processors.Mod Zynq.Timer.Mod }
COOP { Queues.Mod BaseTypes.Mod Activities.Mod ExclusiveBlocks.Mod Interrupts.Mod Runtime.Mod }
NATIVE и COOP { HeapManager.Mod }
BIOS и COOP { BIOS.Environment.Mod }
RPI и COOP { RPI.Environment.Mod }
ZYNQ и COOP { Zynq.Environment.Mod }
UNIX и COOP { Unix.Environment.Mod }
BIOS и I386 и ~COOP { BIOS.I386.Machine.Mod }
BIOS и AMD64 и ~COOP { BIOS.AMD64.Machine.Mod }
WIN и ~COOP { Windows.Machine.Mod }
COOP и ~ARM { Mutexes.Mod Coop.Machine.Mod }
COOP и ARM { Mutexes.Mod Coop.ARM.Machine.Mod }
UNIX и ~COOP { Unix.Machine.Mod }
ZYNQ и ~COOP { Zynq.PsUartMin.Mod Zynq.TraceDevice.Mod Zynq.PrivateWatchdog.Mod ARM.Machine.Mod }
~COOP { Heaps.Mod }
COOP { GarbageCollector.Mod Coop.Heaps.Mod }
Modules.Mod
BIOS и ~COOP { BIOS.Objects.Mod Kernel.Mod }
WIN и ~COOP { Windows.Objects.Mod Windows.Kernel.Mod }
UNIX и ~COOP { Unix.Objects.Mod Unix.Kernel.Mod }
COOP { Coop.Objects.Mod Coop.Kernel.Mod }
ARM и ~COOP { ARM.Objects.Mod ARM.Kernel.Mod }
КН
Структура этого файла довольно подробно описана мной вот тут:
https://gitlab.com/budden/ja-o-s/-/blob ... гураций.md
Сборка под железо x86 называется BIOS32
Re: ARM
Добавлено: 22.02.21 23:31
БудДен
Дальше спрашивайте, хотя мои возможности довольно ограничены. Единственное, что файлы bin - это блобы, а файлы *.Text, содержат описания. Но открыть и прочитать их можно только запустив ЯОС (как приложение под Windows, к примеру, или на вирт. машине).
При том, самое смешное, что есть файлы .Asm, например, BootManager.Asm и OBL.Asm, к-рые в сборке не участвуют, т.к. они собираются NASM-ом. В общем, я не скажу, что я тут разобрался.
Дальше идут файлы .Mod - они уже написаны на ОБероне, но могут содержать и ассемблерные вставки. Например, файл BIOS.Keyboard.Mod - Это драйвер клавиатуры, а использеут он BIOS.I386.Machine.Mod , в котором изрядное количество ассемблера.
Попробуйте также позадавать вопросы в телеграм - чате, там есть люди куда как компетентнее меня в этих вопросах.