Страниц: [1]
  Печать  
Автор Тема: .altboot не по ESC  (Прочитано 5189 раз)
aluv
Sr. Member
****
Offline Offline

Сообщений: 301


Просмотр профиля
« : Июня 03, 2004, 02:57:47 pm »

Приветствую!
Каюсь, у самого руки до этой задачки не дошли, но в скором времени потребуется.

Может кто подскажет, как изменить команду на загрузку altboot?
Понятно, что у большинства встраиваемых систем либо совсем отсутствует клавиатура, либо нет BIOS, либо клавиатура не стандартная.
В моем случае, требуется возможность загрузки второго образа ОС по дискретной команде, выдаваемой после включения. Процессорная плата покупная.
Интересуют и другие варианты.

--
С уважением,
Алексей
Записан
olej
QOR.Team
****
Offline Offline

Сообщений: 42



Просмотр профиля
« Ответ #1 : Июня 03, 2004, 03:27:06 pm »

Вопрос плохо поставлен, не понятно...
При чём тут .altboot + ESC + "внешняя команда"?
Как-то - "всё сразу и сейчас"(с).

1. Если вас интересует загрузка образа .altboot - то как вы сами пишете - ESC.

2. Если вас интересует загрузка образ .altboot как альтернатива по умолчанию, то поменяйте местами содержимое .boot и .altboot:

# cp .boot .boot.old
# cp .altboot .boot
# cp .boot.old .altboot

- именно так, а не "mv", переносом фалов и т.д. - ничего не получится.

3. Если вам нужно то-же по какой-то загадочной "внешней команде" и с последующей перезагрузкой - сделайте всё то же самое скриптом, в конце которого:
# shutdown
Записан
MikeP
Участник
*
Offline Offline

Сообщений: 6


Просмотр профиля WWW
« Ответ #2 : Июня 03, 2004, 03:34:26 pm »

Если я правильно понял - необходимо, чтобы загрузчик грузил образ системы .altboot не после нажатия Esc, а, например, после нажатия F12?Huh??
Тут вам можно посоветовать свой IPL написать - как это сделать - есть в документации.

З.Ы. Только такая необходимость - весьма сомнительна. Игра не стоит свеч.
Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #3 : Июня 04, 2004, 04:07:48 am »

aluv
Понятно, что у большинства встраиваемых систем либо совсем отсутствует клавиатура, либо нет BIOS, либо клавиатура не стандартная.

Если нет BIOS, то свой IPL писать обязательно. Все это описано в документации и есть в BSP на вашу плату.
aluv
В моем случае, требуется возможность загрузки второго образа ОС по дискретной команде, выдаваемой после включения.

Если же у вас BIOS есть, а надо загрузить .altboot по состоянию какого-нибудь бита во внешнем порту ввода-вывода, то смотрите исходник загрузчика и меняете ту часть, что делает Int16, на чтение порта. Естественно, это ваша забота, чтобы порт был доступен и правильно установлен в момент загрузки.
Записан
aluv
Sr. Member
****
Offline Offline

Сообщений: 301


Просмотр профиля
« Ответ #4 : Июня 04, 2004, 10:30:49 am »

Изначально собирался делать контроллер на ARM, как оптимально подходящий вариант, но в силу разных причин пришлось перейти на готовую процессорную плату х86 с дублированным BIOS и FLASH (DOC) с несколькими образами ОС.
Сам контроллер будет работать автономно в тяжелых условиях в течении многих лет в недоступном месте для ремонта. Вероятность сбоев, отказов либо частичной порчи FLASH к сожалению высока. Поэтому обязательно следует предусмотреть возможность различных вариантов альтернативной загрузки ОС.
Мне пока это представляется как выбор номера прошивки в зависимости от внешних флажков (команд) после каждого сброса. Соответственно все варианты последовательно перебираются до получения нужного результата.
В случае неудачи, образ можно загрузить по СОМ порту.

Для ARM я уже рассматривал такие выкрутасы и делается там все достаточно просто, но для х86 с его "теплым" IPL написано к сожалению достаточно мало
Как я понимаю, в данном случае IPL – это загрузчик в первом секторе диска. У DiskOnChip это аж отдельный BOOT модуль. Только, он сильно ограничен по памяти.

Если кто заморачивался с высоконадежными автономными системами, напишите. Интересно у кого какие были придумки.
Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #5 : Июня 05, 2004, 04:14:54 am »

aluv
но для х86 с его "теплым" IPL написано к сожалению достаточно мало

Даже в документации, в общем то, все сказано:
http://www.qnx.com/developers/docs/momentics621_docs/neutrino/building/load_process.html
aluv
Как я понимаю, в данном случае IPL – это загрузчик в первом секторе диска. У DiskOnChip это аж отдельный BOOT модуль. Только, он сильно ограничен по памяти.

Теперь по порядку все, что там написано. Вовсе не обязательно, хотя во многих случаях можно и так, собственно, это заключительный этап загрузки стандартного desktop PC. В ответственных случаях я бы так не делал - если навернется Flash, то компьютер просто зависнет. Процесс загрузки начинается с reset вектора. При наличии BIOS в системе эту часть он берет на себя. Далее BIOS будет сканировать память и искать модули расширения. Это может быть как PCI плата, так и ISA/EISA/PC104. Я бы как раз делал плату расширения, с флешкой для поиграться, и с не репрограммируемым ПЗУ для боевой машины. Загрузочный ROM модуль может быть до 64Кб, что иногда гораздо удобней 512 байт первого сектора диска.
Начинаться он должен с 0x55, 0xAA, <size_in_512byte_pages>, <entry_point>. BIOS найдя такую ПЗУ в памяти по адресам 0xC0000-0xD0000 (должно начинаться на границе параграфа) вызовет entry_point как far call. Тут вам и карты в руки. Размер ROM нужен BIOS для вычисления CRC, т.е. где-то в вашей области пишете байт, таким образом, чтобы сумма всех байтов (младший байт) была 0. Иначе ROM будет признан "плохим" и управление вы не получите. Это все для ROM extention на ISA шине. Для PCI почитайте PCI local bus specification, идея та же - детали чуть другие. Для корректности, если нужно чтобы гарантировано проинициализировались другие платы расширения, которые пользуют такую технологию (например, видеокарта), то поставте указатель на ваш загрузчик ОС (т.е. вторую часть вашего модуля ПЗУ) в таблицу векторов на INT19h (если не напутал, то это и есть boot strap вектор) и сделайте far ret из первой части. BIOS выполнит это прерывание после того, как сделает все.
В кратце, это все. Информации на эту тему в интернете очень много. Просмотрите спецификации со словом P'N'P в названии. Была такая програмка Tech Help для DOS - там тоже все подробно расписано.
BIOS я бы не дублировал, просто использовал какое-нибудь ПЗУ по-надежней, ведь не нужно же мне делать upgrade BIOS на живом обьекте. Для высокой надежности я бы дублировал сами х86 компьютеры - один навернулся, второй взялся за работу
Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #6 : Июня 08, 2004, 05:22:49 am »

ed1k
по адресам 0xC0000-0xD0000 (должно начинаться на границе параграфа)

Почему то поправлять текст форум не дает Имелся ввиду диапазон c0000:e0000. И размер параграфа не помню. Текст выше писался по памяти, как идея, а детали ищите в достоверных источниках
Записан
aluv
Sr. Member
****
Offline Offline

Сообщений: 301


Просмотр профиля
« Ответ #7 : Июня 08, 2004, 10:47:06 am »

   ed1k

Спасибо за интересный совет! Такой вариант даст необходимый объем ПЗУ для IPL и надежность. К сожалению, в данной ситуации он не подойдет конструктивно
А с поблочным резервированием у нас все в порядке
Записан
Perf
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« Ответ #8 : Сентября 02, 2004, 03:47:43 pm »

aluv
то смотрите исходник загрузчика и меняете ту часть

а где взять сей исходник ?
Записан
Страниц: [1]
  Печать  
 
Перейти в: