Проблема такая: В ДОСе все прекрасно работает. Инициализируется хост 1,1 без проблем, включается и работает. При записи программы в БИОС все работает до того места, где включается хост, потом темный экран, но CtrlAltDel – работает. Причем загружается программа практически перед местом старта загрузки с винта. Мама – I815.
Может у хоста нет доступа в оперативку, или он включается в работу не тогда, когда можно, или его прерывания не проинициализированы??? Как разрешить доступ внутреннему устройству к ОЗУ?
alexeykoval Я не понял какую програму Вы записали в БИОС и вообще чего Вы добиваетесь и как вы это пытаетесь сделать из Ваших слов совсем невозможно понять, равно как и суть возникших у Вас проблем. Не надейтесь на телепатические способности посетителей конференции, лучше в ФАКе прочите как надо правильно задавать вопросы, помогает...
За несоответствие действительности Вашим о ней представлениям администрация форума ответственности не несет.
Виноват.
Как все происходит.
Надо было подключить устройство USB к компу, который работает в ДОСе. Никаких особых проблем это не вызвало. ДОС программа прекрасно функционирует. Передача и прием данных осуществляется замечательно. Устройство - контроллер USB SYPRESS. Скорости USB 1.1 полностью хватает. Потом возникла мысль, чтобы программа работала в БИОСе. Я программу запаковую в прошивку по всем правилам. И нормально программа работает до тех пор, пока я не включаю USB хост контроллер.
mov DX,[USB_BaseAddr]
mov AX,1
out DX,AX
Когда включается Хост комп зависает, в ДОСе такое происходит если неправильно настроить его (Хоста) параметры. Если я ставлю возврат до включения Хоста то БИОС нормально завершает работу и видно (при просмотре в ДОСе ОЗУ), что все данные для его (Хоста) работы указаны верно. Процедура BIOS PCI выдает правильное значение адреса Хост контроллера (как в ДОСе).
Отсюда вопрос: возможно такое, что пока БИОС не завершит работу всех своих программ, доступ внутренних устройств к оперативке запрещен? Если это так, то как его включить (доступ)?
Мама I815
Проц – Celeron 1.1G
???
Хм, я, конечно, не программист под асм, но именно после OUT DX,AX ? А в стек что-то кладётся ?
__________________________
C наилучшими из Ялты !!!
alexeykoval Прошу рассматривать все нижеизложенное как мысли вслух.
Если Ваша програма получает управление ДО завершения процедуры инициализации PNP устройств, то как раз и имеем то, что хост не инициализирован со всеми описанными Вами симптомами, как вариант...
За несоответствие действительности Вашим о ней представлениям администрация форума ответственности не несет.
Забыл уточнить БИОС AWARD 6 (точнее я работаю с прошивкой 6-м модбином). 2Мбит. В большинстве AWARDовских биосов (довелось поработать с немалым количеством) имеются два вызова INT 19h. Один в Бут-блоке (в конце tmp файла), а второй обычно в середине. Перед вызовом, того который посредине, стоит команда:
and ESP,00000FFFFh
так вот я заменяю эту команду на jmp ХХХХ на свою программу, и потом выполняю and ESP… у себя и передаю управление на INT 19h.
Можно ли предположить, что что-то еще не настроено до этого момента?
Естественно в стеке есть данные (возвраты и т.п.)
Так размещается программа в БИОСе, что разницы между СОМ-прогой в ДОСе нет. Бит 0 у Хоста – есть вкл/выкл. В ДОСе без проблем, а тут …зависаю.
alexeykoval
Да, кста, дурацкая идея - может, просто подождать? Может, он основным кодом биоса уже инициализирован, но до его включения нужно несколько больше времени, чем успевает пройти до бут-блока?
Да, а маска-то разрешает?
Выход обычно есть. Но он не работает.
С ЮСБ разобрался, необходимо правильно настраивать структуры данных для хоста, но при этом определить состояние всех хостов, кто не нужен выключить, а кто нужен включить, найти куда надо писать данные для него, временные задержки надо вставлять, чтобы внешний деВайс успевал ну и т.п. А в общем работает хорошо.
Отправить комментарий