Главная Отсутствует Отсутствует Отсутствует

Загрузка системы и работа с ROMDISK.

    После успешного запуска "Контроллера удаленного управления с WEB-интерфейсом" возникла очередная маленькая проблема - с чего загрузить операционную систему и программу? На этапе экспериментов применялась загрузка по сети, но контроллер - это все-таки автономное устройство... Связываться с дискетами и жестким диском не хотелось. Первое, что приходило в голову - карта памяти CF, - фактически тот же винчестер. В связи с трудностями при нахождении "переходника" для подключения CF к IDE и отсутствием мультикарты это решение реализовать не удалось. Да и объем "дискового пространства" даже самой маленькой из ныне доступных CF казался избыточным.
    В это время на глаза попалась ссыка на "проект" ROMOS
    Его автор любезно предоставляет полный комплект - свои наработки, средства разработки и некоторый объем систематизированной информации по теме. Попытка повторить "в железе" разработку автора увенчалась частичным успехом и было принято решение на ее базе создать свое устройство с большим объемом памяти.
    Из-за необходимости ориентироваться на имеющиеся микросхемы были проведены некоторые изыскания. В результате выяснилось, что при использовании DOS3.3 для хранения загрузочных файлов и рабочих программ WEB-сервера достаточно 240КБ, в которые дополнительно вошел файл-менеджер SPARROW. Это позволило ориентироваться на имеющуюся 29F020 объемом 256КБ. Для отладки - загрузочные файлы DOS3.3 и SPARROW - хватало 29F010, также имеющихся у меня в некотором количестве.
    Идея схемы включения ПЗУ большого объема в адресное пространство х86 очевидна и не нова - организация страничного доступа. Сначала родилась схема, содержавшая две микросхемы ПЗУ - для BOOTROM и образа дискеты, но в дальнейшем она несколько видоизменилась, и все удалось вместить в одну микросхему памяти. Для упрощения монтажа и уменьшения количества микросхем в качестве дешифратора использована CPLD 16V8. Поскольку предполагалось изготовить устройство в единичном экземпляре на макетной плате - все использованные микросхемы в корпусе DIP.
    Собственно, вот что получилось в итоге:

    В компьютере после загрузки с этого устройство появляется "диск" A: - как оказалось, DOS3.3, в отличие от FreeDOS, не умеет загружаться с B:.Запись на этот "диск" не реализована, хотя потенциально возможна - использовано FLASHROM. Программа поддерживает до 1,44МБ - объем стандартной 3"5 дискеты, "железо" - больше, если, конечно, 29F020 заменить на микросхему соответствующего большего объема. Но, насколько я понял, уже 29F040 в DIP не производят.
    В ПЗУ старшие 16КБ отведены под BOOTROM, остальные - под посекторный образ дискеты. В БИОСе материнской платы дисковод A: должен быть выбран как 3"5 1.44, отключена его проверка при включении и, желательно, остановка при ошибках (актуально на некоторых материнских платах).
    Устройство проверялось на 286, 486 и P1-166MMX компьютерах, и я не вижу причин, почему оно не будет работать на любом PC-совместимом с ISA слотом.
    Если кто-то захочет повторить конструкцию и двигаться дальше - далее вся необходимая информация:
    схема
    На схеме не указаны блокировочные кондерсаторы - на фото платы они есть
    "исходник" и загружаемый код для PALCE16V8
    А также для симуляции и еще чего-то. Компиляция и написание - в программе WinCupl, найденной на просторах Интернета. Если вам проще распаять несколько микросхем мелкой логики - можете "переложить" дешифратор на них.
    исходный текст программы с набором средств разработки
    Архив содержит образ моего загрузочного диска с WEB-сервером. Сразу замечу, что оптимизацией написанного кода я не занимался, и к профессиональным программистам себя не отношу. Программа для посекторного копирования дискет в файл в комплект не включена у каждого она своя, любимая :-)
    Разбирайтесь, двигайтесь дальше... Будут вопросы - попробую ответить...

Сайт управляется системой uCoz