Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пт апр 28, 2017 7:35 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу 1 2 След.
Автор Сообщение
 Заголовок сообщения: Вопрос по включению A20 Gate
СообщениеДобавлено: Вс июл 13, 2014 7:17 pm 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
В исходниках ядра следующее:
Код:
   l.5:
        in      al, 0x64                ; Enable A20
        test    al, 2
        jnz     l.5
        mov     al, 0xD1
        out     0x64, al
   l.6:
        in      al, 0x64
        test    al, 2
        jnz     l.6
        mov     al, 0xDF
        out     0x60, al
   l.7:
        in      al, 0x64
        test    al, 2
        jnz     l.7
        mov     al, 0xFF
        out     0x64, al


Прочитав достаточно много относительно этого вопроса я не понимаю почему включение делается не так как описано в основной массе источников. Там производится чтение данных порта, потом OR al, 2 и запись обратно в порт. Вопрос собственно к чему. Все-таки есть желание запустить Колибри на стареньком ноутбуке (ну очень древнем). Не может ли быть проблемой вылета при инициализации ядра неправильная активация A20 Gate? Я еще не очень разбираюсь в сборке Колибри из исходников, буду сидеть читать и пробовать. Если win95 на этом стареньком ноуте работает, я думаю и Колибри должен запуститься...


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Вс июл 13, 2014 9:57 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Demonikss писал(а):
Если win95 на этом стареньком ноуте работает, я думаю и Колибри должен запуститься...

Это неправильно допущение. Колибри требует для запуска некоторые команды, которые появились только в Pentium и совместимых с ним моделях процессоров. Если на том ноутбуке процессор 486 или более ранний, то Колибри не будет работать. Единственный пока известный процессор близкий к 486, на котором работает Колибри, это тот который установлен в eBox, но там как раз есть поддержка нужных для Колибри команд. Вопрос с поддержкой очень старых конфигураций неоднократно рассматривался, достаточно воспользоваться поиском по форуму.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Вс июл 13, 2014 10:58 pm 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
хорошо. я все таки изгольнулся сделать скрин загрузки с помощью веб камеры. Вылет как раз после надписи Частота процессора. Причем частоту он как раз и не пишет. И справа куча сообщений вылетает.
K:Failed to initialize ramdisk
K:Kernel SVN r4976
Камера слабенькая плохо видно, но процессор идентифицирован (detected)
Attach interrupt 6...
Set IDE IRQs...
И дальше эксцепшены и прибивание процесса с ID:0000002
Ради интереса попробовал с MEOSLOAD.COM из MS-DOS 6.22. С драйвером HIMEM запускается в начальный экран загрузчика, а без него не хотит. Отсюда делается вывод что просто при переключении контекста загрузчик видимо теряет связь с расширенной памятью. Образ диска как я понимаю создается в расширенной памяти? Раз не может инициализировать рамдиск значит скорее всего мой вопрос по поводу активации A20 Gate не так уж и далек от истины.
Я понимаю что вам неинтересно со старым железом копаться, а мне намного удобнее работать с системой на живом железе, пусть и стареньком. Кстати еще параллельно тогда как например запускается и работает NetBSD 1.6.2? У линуха ведь тоже многозадачность и всякое прочее.
Продолжаю мучить дальше.
PS. Да кстати, в других темах я видел высказывания про старое железо. А файловая система FAT? Да и процедура активации A20 используемая ядром уже померла давно. Сейчас Fast A20 Gate через порт 92 насколько я понимаю. Вот смотрю как некоторые холиварят и забывают подчищать старый код... Я конечно не хочу никого обидеть, но все таки мне кажется что для такой системы лучше поддерживать все переходные конфигурации как это у БСДшников сделано, а не только определенное железо Must Have.


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 12:46 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Я специально поискал за вас - читайте и думайте сами:
1) Запуск на 80486
2) Запустить на 486-ом
3) Минимальная протестированная конфигурация компьютера.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 1:08 am 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
а вывод дебуга при загрузке что то не то говорит. интересно как связан виртуальный диск в оперативной памяти с командами этими? тогда другой вопрос. как распаковать и установить все это дело на диск под вмварем чтоб можно было спокойно ядрышко собирать-тестировать без всяких запаковок? как вариант просто заменить загрузочную запись на диске в мбр любой программой для прямого редактирования диска?
Ладно. С компиляцией ядра справились. Загрузил последний свн, в вмваре сделал машинку с Колибри и в ней откомпилял, заменив 1 строчку. Эффект есть. Теперь по крайней мере машина просто выдает дамп и виснет, не уходя в перезагрузку. Я думаю процедуру включения A20 Gate все же надо подправить, у тех же линуксов она имеет еще и проверку реально включилось А20 или нет... Для проверки сначала компилил без изменений и пожал кернпаком. Размер файла почему то больше вышел. Оригинальный 87080, у меня вышло 87254. Не пойму в чем разница. Может знающие могут пояснить. Ревизия вроде та же... 4976. Да и в загрузочном синем экранчике пропала надпись автосборка бла-бла-бла. Замечаю следующую странность. В машинке физически 8 мб памяти, а Колибри нашло 9 )))). Это мне нравится, глядишь и до 16 расширит ))) На виртуальной машине с 64 мб ОЗУ отказалось компилять ядро сказав что памяти не хватает... Ну да ладно, дал 256, не жалко. Хорошо что поставил 4 Гб в свое время. Проблема с рамдиском так и не решилась. Будем дальше курить бамбук (исходный код)...


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 7:54 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Demonikss писал(а):
Ладно. С компиляцией ядра справились. Загрузил последний свн, в вмваре сделал машинку с Колибри и в ней откомпилял, заменив 1 строчку.

Компилировать можно и Шиндовс и в Линукс, а ядро потом в IMG образ забросить.
Demonikss писал(а):
Я думаю процедуру включения A20 Gate все же надо подправить, у тех же линуксов она имеет еще и проверку реально включилось А20 или нет...

Процедура работает на всех соответствующих по характеристикам компьютерах и работает более десяти лет. Пока точно не установлено, что проблема именно в этом коде, а не в чем то другом, что пока явно наблюдается, то править не нужно.
Demonikss писал(а):
Для проверки сначала компилил без изменений и пожал кернпаком. Размер файла почему то больше вышел. Оригинальный 87080, у меня вышло 87254. Не пойму в чем разница. Может знающие могут пояснить. Ревизия вроде та же... 4976.

Нельзя заранее предсказать размер упакованного файла, так как содержимое бинарника изменилось, хотя его размер и не изменялся.
Demonikss писал(а):
Да и в загрузочном синем экранчике пропала надпись автосборка бла-бла-бла.

Это нормально - только сервер автосборки при компиляции вставляет текущую ревизию.
Demonikss писал(а):
Замечаю следующую странность. В машинке физически 8 мб памяти, а Колибри нашло 9 )))). Это мне нравится, глядишь и до 16 расширит

Весьма странно. Возможно это глюк BIOS.

З.Ы. Пока не озвучены характеристики тестируемой машины сложно какие-либо советы.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 8:57 am 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
8-часовой мозговой штурм гугла и интеловских референсов приводит к одной простой мысли. Во-первых не так уж у них там все было стандартизовано, и некоторые производители реализовывали свои методы переключения этого A20 Gate. Во-вторых, насколько видно из исходников ядра, применяется V86, как метод доступа к функциям BIOS я так понимаю... Подход немного устаревший (лет так на 10 наверное). Отсюда и проблемы с совместимостью Колибри на реальном железе. Эмуляторы реализуют правильные интерфейсы, и поэтому то что работает отлично в эмуле, не обязано работать на реальной машине. Поэтому все-таки нужно доработать метод, используя хотя бы линуксовый подход. На сайте вики Watcom написано про это много. Стандартный досовский himem.sys реализует аж целых 15 способов управления этой линией. Вот же лихие были времена...
Характеристики машины: ноутбук Toshiba T2130CS, 8 мб ОЗУ, i486dx4, vesa 1.2. видео то ли 1024x768, то ли 800x600. Но точно 256 цветов. Вместо стандартного харда на 500 мб использую карточку CompactFlash, через переходник. Очень удобно, бесшумно и намного шустрее харда )))) У него даже внешний vga выход под монитор есть ))))
В наличии прошивалка для биоса (утилита производителя) и последняя по версии доступная прошивка. Думаю на досуге заняться, когда голова дорастет до полного понимания всего что творит это железо. Биос обновил, но проблема с тем что из 1 Гб флешки он корректно определяет только 500 метров так и осталась.
Теперь опять возвращаясь к траблам с установкой. Все же есть подозрение на машину V86, потому что простое изменение кода начальной загрузки уже позволило немного продвинуться вперед. Как докопаю думаю будет что обсудить с разработчиками ядра. Сейчас займусь пересборкой ядра выключив таймер, чтобы исключить вариант пентиумовских команд и там уже видно будет что к чему.


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 9:09 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Demonikss писал(а):
vesa 1.2. видео то ли 1024x768, то ли 800x60

С такими характеристиками видео только VGA и будет доступно - либо 640*480*16, либо 320*240*256.
Demonikss писал(а):
Биос обновил, но проблема с тем что из 1 Гб флешки он корректно определяет только 500 метров так и осталась.

Возможно проблема не только в BIOS, а еще контроллер IDE ограниченный и тоже больше 512 Мб не видит.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 9:13 am 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
Ну и что? Я просто использую 500 метров раздел и все. С другими оськами проблем никаких пока не было. Я на большом компе в вмваре ставлю системы, втыкаю в ноут и все идет. Интересно бы узнать что за процесс с ID:0000002. Может пойму почему его так стремится прихлопнуть ядро...
Да, тут еще с е820 надо посмотреть... Почему то видит 9 метров а не 8, может просто в несуществующую область отображает и пытается туда проломиться, вот и виснет.


Последний раз редактировалось Demonikss Пн июл 14, 2014 9:24 am, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 9:22 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Demonikss писал(а):
Интересно бы узнать что за процесс с ID:0000002. Может пойму почему его так стремится прихлопнуть ядро...

Вероятно это один из потоков самого ядра (ЕМНИП их 3) и он вызывает исключение обратившись не туда.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 9:28 am 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
Сейчас на запущенной в виртуалке Колибри ID 2, 3 и 4 видны как OS. То что он системный понятно, я думаю не IDLE ли?


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 1:59 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
Люди, твёрдо в чём-то уверенные, порой хуже людей, которые ничего не знают.
Demonikss писал(а):
Не может ли быть проблемой вылета при инициализации ядра неправильная активация A20 Gate?
Нет.
Demonikss писал(а):
Да и процедура активации A20 используемая ядром уже померла давно.
Нет. Она незначительно медленнее, но надёжнее.
Demonikss писал(а):
Вылет как раз после надписи Частота процессора. Причем частоту он как раз и не пишет.
Правильно. При определении частоты процессора первый раз используется команда rdtsc, которой не было в 486-х. Что Mario_r4 пытается объяснить уже не первый пост.
Demonikss писал(а):
Раз не может инициализировать рамдиск значит скорее всего мой вопрос по поводу активации A20 Gate не так уж и далек от истины.
Раз не может инициализировать рамдиск, значит, неправильно организован процесс загрузки и никто не загрузил образ kolibri.img в память. Кто именно это должен делать, зависит от выбора в пункте [e] на синем загрузочном экране - если там "использовать уже загруженный образ", то чтение kolibri.img лежит на начальном загрузчике перед ядром.
Demonikss писал(а):
Интересно бы узнать что за процесс с ID:0000002. Может пойму почему его так стремится прихлопнуть ядро...
Это и есть само ядро. Его никто не пытается "прихлопнуть", оно умирает само. От того, что запускает команду rdtsc, которой не было в 486-х, что Mario_r4 пытается объяснить уже не первый пост.

_________________
Сделаем мир лучше!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Пн июл 14, 2014 7:40 pm 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
Вот очень трудно как раз с упертыми людьми которые уверяют что раз работает да и ладно. Нормальный порядок инициализации любой железки описан достаточно подробно:
1. Проверка наличия, состояния.
2. Собственно инициализация (подготовка к работе, установка начального состояния).
3. Опрос устройства, проверка работоспособности.
Всеми любимый Таненбаум об этом писал и не раз. Он свою оську написал не для того чтобы работало, а чтобы показать что должно ХОРОШО работать.
Я не спорю, да, использование rdtsc вышибает старенькие компьютеры из числа совместимого с Колибри железа. Хотя вопрос этот я все равно поизучаю, просто ради интереса.
Надежный код - это код который работает всегда, следует стандарту. Реализация данного метода в конкретном примере далеко этому не соответствует, поэтому код не является надежным. Почему, описано выше. Глючные биос были и будут всегда. Отмазочка типа вся проблема в производителях биос конечно хороша, но с такой идеологией пишутся только системы Шиндоуз, монстры которые жрут ресурсы и делают вид что работают.
Почему то разработчик Fasm не погнался за красотой и рюшечками, а использовал простой и проверенный метод. Лучше меньше, но лучше.
Еще раз повторюсь, у меня ни одно ядро Unix-like систем не падало на процессе первоначальной загрузки. У них кстати такие же проблемы роста размера ядра и отладки его уже давно возникли. Сам Линус уже сомневается в том что они долго смогут удержать позицию стабильной операционной системы. Даже мелкософт озаботился и начал исследования в сторону снижения размера своих громаднейших приложений.
Причем я так думаю это проект написания свободно распространяемой оськи, с открытым исходным кодом, а значит каждый может высказаться по поводу его развития и внести любой посильный вклад.
Я не прошу вас как другие - запустите мне Колибри на том на чем я хочу. Просто моя попытка немного изменить код привела к осознанию того что есть ошибка, и при необходимой правке она исчезнет. Значит другой пользователь на совершенно другой машине уже никогда с этим не столкнется. Разве это плохо?
Когда я закончу полностью изучение данного вопроса, могу предоставить обобщенный код, вы его опробуете и скажете свое мнение.
Да, попутно, на странице загрузки на сайте есть ошибка:
-------------------------------------------------------------------------------------------------------------------------------
На этой странице представлены ночные сборки дистрибутива — это означает, что они всегда содержат самые последние изменения в системе и потому могут быть нестабильны. Колибри распространяется на условиях GPLv2, её исходники доступны на нашем SVN сервере.
Успеха и процветания.
-------------------------------------------------------------------------------------------------------------------------------

При нажатии на слово SVN в предпоследней строчке на свн перехода не происходит. Браузер FireFox.


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Вт июл 15, 2014 8:14 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн июл 25, 2011 6:22 pm
Сообщения: 93
Что касается команды rdtsc на i486 процессорах, то можно реализовать её эмуляцию используя
процессорное исключение Interrupt 6—Invalid Opcode Exception (#UD). Вариантов множество,
например, в исходниках Linux старых версий.

_________________
Программист не тот, кто постоянно пишет КОД, а тот кто сможет понять чужой КОД!!!


Вернуться к началу
 Заголовок сообщения: Re: Вопрос по включению A20 Gate
СообщениеДобавлено: Вт июл 15, 2014 10:47 am 
Не в сети

Зарегистрирован: Ср июл 03, 2013 9:33 pm
Сообщения: 15
Спасибо за подсказку Artyom, действительно дельное замечание. Тогда вопрос следующий. Ядро Колибри вообще содержит обработчики исключений? Или при использовании недопустимых команд просто радостно виснет начиная напоминать всенародно любимую сверхнадежную операционную систему? Судя по тому что даже логи не всегда удается получить и приходится копаться в исходнике догадываясь что же произошло нет?


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 28 сообщений ]  На страницу 1 2 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB