This page create in CP1251
(L) CopyLeft 2002-2003
All source is freeware.
Все
программы свободно
распространяются в исходниках.
Все торговые
марки являются собственностью их
владельцев.
По всем
вопросам обращайтесь
по адресу: i80c386ex@narod.ru.
Инструментальные
средства для Intel 80C386EX.
Все файлы на
странице упакованы WinZip.
На этой
странице представлены
инструментальные средства,
сделанные для вычислителей на Intel
80C386EX. Вычислители имеют название
СВУ02 и СВУ03 (супервизорное
устройство). Проект отлажен и
запущен только для СВУ02. Но в
текстах программ можно найти ветки,
предназначенные для выполнения
и/или трансляции на СВУ03.
Вычислитель
работает в составе
телекоммуникационного прибора
(мультиплексора SDH).
В качестве
транслятора используется Borland 5.02.
Проект транслируется под ДОС.
Модель памяти huge.
В проекте
используется язык С++, в частности
шаблоны template.
Программа
функционирует в реальном режиме
процессора.
На
вычислитель установлена ОС UCOS http://www.ucos-ii.com/.
Трудоемкость
проекта – 9 чел/мес. Из них
затрачено на разработку
инструментальных средств – 6 чел/мес.
Технология
подготовки программ включает в
себя:
- Трансляция
и отладка программ в IDE Borland 5.02.
- Трансляция
программ в пакетном режиме с
помощью транслятора Borland 5.02. На
этом этапе получался
ассемблерные файлы.
- Трансляция
полученных ассемблерных
файлов в пакетном режиме с
помощью транслятора Tasm 5.0 от Borland.
На этом этапе получались
объектные файлы.
- Линковка
полученных объектных файлов с
помощью линкера Tlink от Borland.
На этом этапе получался ДОС-exe
файл.
- Конвертация
ДОС-exe файла в двоичный формат,
пригодный для загрузки в ПЗУ.
Для конвертации
использовалась утилита exe2alf.exe.
Ее исходники и описание можно
загрузить здесь. Двоичный
формат имеет расширение alf (absolute load format).
- Прошивка
полученного двоичного файла в
микросхему начального
загрузчика (с помощью
программатора) или загрузка
рабочей программы во flash по протоколу Xmodem через COM
порт (с
помощью HyperTerminal из состава Windows)
Вычислитель
имеет в своем составе:
- 500Кб
динамического ОЗУ на
микросхемах TMS44400. ОЗУ
располагается в адресах с 0x00000
до 0x7ffff. Используется CS0.
- 500Кб flash на микросхемах Atmel AT49F080. Используется для
хранения образа рабочей
программы. Располагается в
адресах с 0x80000 до 0xfffff.
Используется CS1.
- 64Кб flash начальный
загрузчик на микросхеме AT29C512. Располагается в
адресах с 0x100000 до 0x10ffff.
Используется UCS.
- 64Кб шина
для связи с
телекоммуникационным
прибором. Располагается в
адресах с 0x100000 до 0x10ffff.
Используется CS3.
- Контроллер
Ethernet. Располагается в адресах с
0x300 до 0x310 в пространстве
адресов ВУ. Используется CS2.
- Регистр
индикации. Располагается в
адресах с 0x200 до 0x202 в
пространстве адресов ВУ.
Управляет четырьмя
двухцветными светодиодами.
Используется CS4.
Совместное
адресное пространство разделяют
начальный загрузчик и шина для
связи с телекоммуникационным
прибором. Чтобы обеспечить такой
режим работы, блок UCS выключается
после того, как начальный загрузчик
запускает рабочую программу. После
выключения блока UCS включался блок CS3.
Порт UCOS для huge модели
памяти Intel 80C386EX можно загрузить здесь.
Startup для Intel 80C386EX можно
загрузить здесь.
В рамках
проекта были разработаны две
программы. Одна - программа
начального загрузчика и вторая -
рабочая программа.
При использовании startup
файла для программы начального
загрузчика нужно сначала
оттранслировать проект начального
загрузчика, а затем
скорректировать строку:
ORG PHSTARTADR-0cb70H ;correction address
Эта строка находится в
конце файла start.asm в секции _CODESTOP.
Вместо адреса 0cb70H нужно подставить
адрес начала секции _CODESTOP из файла
карты загрузки terminal.map. Это нужно
для того, чтобы начальный JMP FAR PTR
ABSSTART попал на адрес 0xfff0, с которого
стартуют процессоры Intel. После
коррекции указанной строки нужно
повторно оттранслировать проект
начального загрузчика. После
повторной трансляции он пригоден
для прошивки в ПЗУ.
При использовании startup
файла для рабочей программы
коррекция адреса не нужна, так как
рабочая программа запускается по
адресу, записанному в ее служебной
структуре.
Функция main
программы начального загрузчика
содержится в файле terminal.
Функция main
рабочей программы содержится в файле work02.
Описание
рабочей программы и команд можно
загрузить здесь.
Остальные
файлы проекта общие для обоих
программ. Не все модули рабочей
программы используются в программе
начального загрузчика.
Размер
загружаемого двоичного файла
программы начального загрузчика
~40Кб.
Размер
загружаемого двоичного файла
рабочей программы ~100Кб.
Проект
состоит из модулей. Модули имеют
имена utils*.cpp и utils*.h. Вместо
звездочки стоит порядковый номер
модуля. Обычно в одном модуле
реализована одна функция. Например,
работа с COM портом или с таймером.
Модули можно
загрузить здесь.
Описание
модулей:
- utils0.h –
типы, используемые в программе.
Программа отлаживалась под
разными платформами. В связи с
этим тип int переопределен с
помощью typedef. (отлажен)
- utils1.cpp, utils1.h – классы для
работы с chip select unit (отлажен)
- utils2.cpp, utils2.h – функции-заглушки
для new и delete (отлажен)
- utils3.cpp, utils3.h – не
используется
- utils4.cpp, utils4.h – не
используется
- utils5.cpp, utils5.h – не
используется
- utils6.cpp,
utils6.h – класс для работы с
таймером (отлажен)
- utils7.cpp,
utils7.h – класс для работы с
контроллером прерываний
(отлажен)
- utils8.cpp,
utils8.h – структура для
результатов работы (не отлажен)
- utils9.cpp,
utils9.h – класс для работы с COM
портом (отлажен)
- utils10.cpp,
utils10.h – класс для работы с flash
как с диском (не отлажен)
- utils11.cpp,
utils11.h – функции memset и memcpy для UCOS (отлажен)
- utils12.cpp,
utils12.h – класс кольцевого
буфера (отлажен)
- utils13.cpp,
utils13.h – тест ОЗУ (отлажен)
- utils14.cpp,
utils14.h – работа с flash Atmel AT49F080
(отлажен)
- utils15.cpp, utils15.h – реализация huge pointer (отлажен)
- utils16.cpp, utils16.h – классы для
хранения образов некоторых
регистров внешних устройств в
ОЗУ. Используются для
манипулирования битами в
словах. (отлажен)
- utils17.cpp, utils17.h – почтовый
ящик на статически размещенном
кольцевом буфере (отлажен)
- utils18.cpp,
utils18.h – третий метод UCOS for Intel
для входа и выхода из
критической секции (отлажен).
Необходим для utils17, т.к. в template Borland нельзя вставить asm
команду.
- utils19.cpp, utils19.h – SLIP уровень для COM
порта (не отлажен)
- utils20.cpp,
utils20.h – класс wrapper для partition UCOS (не отлажен)
- utils21.cpp, utils21.h – программа
обслуживания COM порта со
встроенным на уровне
обработчика прерывания SLIP
протоколом (не отлажен)
- utils22.cpp,
utils22.h – базовые классы для
обобщенного канала со SLIP
протоколом (не отлажен)
- utils23.cpp,
utils23.h – базовые классы для
обобщенного канала
ввода-вывода (не отлажен)
- utils24.cpp,
utils24.h – функции преобразования
для SLIP протокола (не отлажен)
- utils25.cpp,
utils25.h – базовые классы для
создания позиционной
диагностики (не отлажен)
- utils26.cpp, utils26.h – IP уровень (не
отлажен)
- utils27.cpp,
utils27.h – функции для смены
порядка байт в слове и двойном
слове (не отлажен)
- utils28.cpp, utils28.h – структуры
для описания форматов IP и UDP (не
отлажен)
- utils29.cpp, utils29.h – не
используется
- utils30.cpp,
utils30.h – параметры IP уровня (не
отлажен)
- utils31.cpp,
utils31.h – реализация протокола
tftp (не отлажен)
- utils32.cpp,
utils32.h – реализация функций strcpy,
strcat и других библиотечных
функций (отлажен)
- utils33.cpp,
utils33.h – перевод форматов hex->bin
и bin->hex (отлажен)
- utils34.cpp, utils34.h – задача,
реализующая прием команд по COM
порту и их выполнение. Эти
команды доступны в рабочей
программе и в программе
начального загрузчика (отлажен)
- utils35.cpp,
utils35.h – класс для работы с watchdog
таймером (отлажен)
- utils36.cpp, utils36.h – реализация
протокола Xmodem (отлажен)
- utils37.cpp, utils37.h – запрет и
разрешение прерываний в обход
сервисов UCOS (отлажен)
- utils38.cpp, utils38.h – класс для
работы с комплектом микросхем SXT6051 и SXT6251. Этот
комплект микросхем реализует
мультиплексор SDH. (отлажен)
- utils39.cpp,
utils39.h – функция main (отлажен)
- utils40.cpp,
utils40.h – Дополнительные к utils34
команды. Эти команды доступны
только в рабочей программе. (отлажен)
- utils41.cpp,
utils41.h – класс для
синтаксического разбора
команды (отлажен)
- utils42.cpp,
utils42.h – класс для запоминания
конфигурации прибора
- utils43.cpp,
utils43.h – работа с flash Atmel AT29C512
(отлажен)
- utils44.cpp, utils44.h – класс для
описания битовых полей
управления прибора (отлажен)
- utils45.cpp,
utils45.h – адреса и смещения для
работы с микросхемами SXT6051 и SXT6251 (отлажен)
- utils46.cpp,
utils46.h – класс для работы с SSIO
портом (отлажен)
- utils47.cpp,
utils47.h – класс для работы с DMA
каналом (отлажен)
- utils48.cpp, utils48.h – класс для
помехоустойчивого кодирования
блоковым кодом (12,8)
c с
исправлением одиночной ошибки
(отлажен)
- utils49.cpp,
utils49.h – задача фонового
мониторинга и управления
микросхемами SXT6051 и SXT6251
(отлажен)
- utils50.cpp,
utils50.h – класс для работы с
регистром индикации состояния
прибора
Пример
командных файлов для трансляции и
сборки программы начального
загрузчика можно загрузить здесь.
Пример
командных файлов для трансляции и
сборки рабочей программы можно
загрузить здесь.
Утилиту для
конвертация ДОС-exe файла в двоичный
формат загрузить здесь.
alfserv.h – заголовочный файл с
описанием служебной структуры для alf
формата. Используется в утилите для
конвертации и в программе
начального загрузчика для
определения размера загружаемого
файла. Его можно загрузить здесь.
def386ex.h – заголовочный файл с
описанием адресов встроенной
периферии процессора Intel 80C386EX. Его
можно загрузить здесь.
Замечания к
проекту:
- При
добавлении некоторых
заголовков utils*.h наблюдалась
неправильная работа
транслятора. Особенно, если в
заголовках были классы или
шаблоны классов с inline
функциями-членами.
- Процессор
работал на частоте 20Мгц.
- Загрузка
по Xmodem проходила на скорости до
19200 включительно. На больших
скоростях загрузка не
проходила.

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