ARM

Операционная система, написанная на языке Оберон и проект её перевода на русский язык. Только технические вопросы.
Ответить
БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

ARM

Сообщение БудДен » 06.10.20 20:45

Тут был человек по имени "Гость". Он интересовался наработками под ARM.

Поскольку "Гость" не особо отвечает, выложу здесь ссылку на документацию по A2 на ARM. Не уверен в том, как данная A2 соотносится с "A2 вообще", но информация в этом документе скорее всего интересна даже тем, кто не собирается заниматься ARM-ом.

https://gitlab.com/budden/jaos/-/blob/7 ... 2onArm.tex

В текущей версии ЯОС этого документа нет (я недавно выпилил ARM), но теперь я думаю, что, может быть, стоит пересмотреть это решение. Как минимум, для этого нужно найти любой эмулятор, на котором можно проводить тестирование. Пока что этот вопрос открыт.

Павиа
Сообщения: 126
Зарегистрирован: 23.05.19 21:28

Re: ARM

Сообщение Павиа » 06.10.20 21:43

ARM'ов куча всяких и все они не совместимы между собой.
для этого нужно найти любой эмулятор, на котором можно проводить тестирование. Пока что этот вопрос открыт.
Есть только qemu он эмулирует только систему команд без периферии и внутренней кухни. Поэтому в качестве эмулятора для ОС это очень плохой вариант. Ядро Линукс специально было заточено под qemu, чтобы была возможность использовать в качестве гостевой ОС. А по хорошему должны были наоборот qemu затачивать до Линукса.
Как говориться на безрыбье и рак рыба.

БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

Re: ARM

Сообщение БудДен » 06.10.20 22:21

Ну там упоминается rPi.

Павиа
Сообщения: 126
Зарегистрирован: 23.05.19 21:28

Re: ARM

Сообщение Павиа » 06.10.20 23:10

Ну там упоминается rPi.
Там много чего упоминается А я вам говорю как там все обстоит на самом деле. Достаточно открыть исходник qemu и сравнить с документаций на туже малинку.
https://github.com/qemu/qemu/commit/e3e ... bec2ad5d32
Код контролера прерывания основан на pl190.c что не имеет ничего общего с тем что bcm2835
Не говоря о том что одна лишь документация на контроллер прерываний занимает больше 300 страниц, а тут весь код менее 200 строк!
И так по всем основным аппаратным вещам. За последние пару месяц немного исправили. Но там капля в море.
Загрузка делается при помощи хуков. Эмуляция носителя данных сделана не до конца, что-то пишется а что-то и нет.

БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

Re: ARM

Сообщение БудДен » 07.10.20 08:58

Тогда задача сводится к поиску точки в таблице MxN, где M - число версий A2, а N - число версий малины (которые нужно покупать до тех пор, пока она не заработает). Если команда A2 укажет эту точку, будет намного легче, а пока я не понимаю, имеет ли смысл браться за это дело. Т.к. впилить сборку ARM я могу, а вот протестировать - нет.

БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

Re: ARM

Сообщение БудДен » 07.10.20 22:51

Выяснилось, что под малину компилируется только ядро - 25 файлов из 1000. Т.е. там не будет графики. В окрестности обнаружил две малины - при возможности попробую залить.

700 файлов (с графикой и периферией) собирается под Zynq-7000. Как я понял - это какое-то ядро, на нём есть семейство плат, в основном они стоят весьма ощутимо. И вот дальнейший план действий не совсем ясен. Конечно, интересно бы запустить компьютер не только под ARM, но и с FPGA, где можно поиграть в ихние Active Cells. С другой, не уверен, что игра стоит свеч.

Гость
Сообщения: 6
Зарегистрирован: 28.09.20 21:23

Re: ARM

Сообщение Гость » 22.02.21 19:57

А где можно доки почитать про ЯОС именно последней версии? Как она работает и как стыкуется с BIOS/БСВВ компьютера? Какие стандартные прерывания БСВВ и/или свои драйвера периферии компьютера, ПДП/КП? Как она вообще работает? Хотя бы краткий обзор-путеводитель-справочник?

БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

Re: ARM

Сообщение БудДен » 22.02.21 23:21

Я этого не описывал (да и почти ничего не знаю), т.е. только в исходниках. Интересует вариант для x86? Начинать ознакомление, наверное, стоит с файла ЯОС.фок, в котором хотя бы написано, сборка под какую платформу из чего состоит.

БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

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

БудДен
Сообщения: 1419
Зарегистрирован: 07.10.18 14:01

Re: ARM

Сообщение БудДен » 22.02.21 23:31

Дальше спрашивайте, хотя мои возможности довольно ограничены. Единственное, что файлы bin - это блобы, а файлы *.Text, содержат описания. Но открыть и прочитать их можно только запустив ЯОС (как приложение под Windows, к примеру, или на вирт. машине).

При том, самое смешное, что есть файлы .Asm, например, BootManager.Asm и OBL.Asm, к-рые в сборке не участвуют, т.к. они собираются NASM-ом. В общем, я не скажу, что я тут разобрался.

Дальше идут файлы .Mod - они уже написаны на ОБероне, но могут содержать и ассемблерные вставки. Например, файл BIOS.Keyboard.Mod - Это драйвер клавиатуры, а использеут он BIOS.I386.Machine.Mod , в котором изрядное количество ассемблера.

Попробуйте также позадавать вопросы в телеграм - чате, там есть люди куда как компетентнее меня в этих вопросах.

Ответить