[an error occurred while processing this directive] [an error occurred while processing this directive]
Резюме
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Энди 19 апреля 2002 г. 07:54
В ответ на: А где можно найти С для микроконтроллеров 386EX ? Управляющая программа без ОС. отправлено Сергей Д. 18 апреля 2002 г. 12:26

1. Для встроенных применений x86 принципиально можно использовать PC-компиляторы и линкеры.

2. Файл exe использовать нецелесообразно из-за сложности начального загрузчика, который еще тоже надо на чем-то писать :)) .

3. Можно использовать выходной файл com. При этом имеются следующие ограничения.
Стартовый адрес com-программ 0x100 (размер префикса сегмента программы в MS-DOS). Загрузчик все еще нужен, т.к. требуется инициализация указателя стека и сегментных регистров, а также передача управления по адресу 0x100.
Загрузчик д.б. написан есно на асме.
Размер переменных ограничен, т.к. данные, программа и стек находятся в одном сегменте (модель памяти tiny). При этом доступ к остальной памяти (1МБ) возможен через far-указатели (пересечение границ сегментов вы должны отслеживать сами - геморой приличный) или huge-указатели (арифметика с ними прозводится специальными подпрограммами, что сильно замедляет работу).

4. Утилита exe2bin(была в MS-DOS и MASM) может не только генерить com но и делать двоичное преобразование с фиксированным размещением сегмента. Это позволяет разместить программу в ПЗУ без начального загрузчика. Этот вариант кажется наиболее удачным.


Дополнительные соображения:

Если в программе используется арифметика с плавающей точкой, компиляция должна быть сделана с эмуляцией сопроцессора (если в вашем девайсе стоит сопроцессор, то я конечно молчу :)) .


Удачи и попутного ветра. Напишите, если получится.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru