Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Снова R8830

 Ответить Ответить
Автор
Сообщение
cskcsk Смотреть выпадающим
Новичок
Новичок


Присоединился: 19 Октябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 16
Свойства публикации Свойства публикации   Ответить, цитируя автора - cskcsk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Снова R8830
    Опубликовано: 21 Октябрь 2005 01:28
Еще раз хочу поднять вопрос о проблемах с переходом CPU188 на процессор R8830.
Как я уже сообщал в ответе ранее, простейшая программа, откомпилированная в BC++5.02, "грохается" с выводом сообщения UNUSED OPCODE и т.д.

int main(int argc,char** argv)
{
return 0;
}
Сегодня специально разбирался и выяснил, что это происходит для моделей памяти SMALL и LARGE,
но не для TINY (прочие не проверял).
Все обновления (BIOS и FDOS) выполнены (в том числе и на CPU188 c Am188).
Все сравнительные опыты (R8830 с Am188) выполнял путем перетыкания DOC2000 из одного CPU188 в другой.
Разработчики Fastwel, глянули бы в STARTUPы BC3.1 и BC5.02, может еще чего наковыряете в R8830.
И еще. Я использую в рабочей программе СОМ2 (без BIOS) для связи с удаленным компом (BC3.1 - вынужденно, надо BC5.02).
Заметил, что если запускать программу сразу после ее переноса в CPU (по СОМ1), то после активизации связи по СОМ2 программа вылетает (не сразу) по 'Devide error'.
Если же сперва перезагрузить CPU, то далее все работает без сбоев.

Что-то, видать, с FTRANS'ом не чисто на новом процессоре. Не убирает за собой.
PS: Позарез надо в ВС++5.02 работать.
Наверх
KozlovKS Смотреть выпадающим
Prosoft.ru
Prosoft.ru


Присоединился: 21 Июнь 2003
Online Status: Offline
Публикации: 432
Свойства публикации Свойства публикации   Ответить, цитируя автора - KozlovKS Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Октябрь 2005 10:48

Где-то это уже было:

Процессоры RDC имеют серьезный bug - они, будучи типа 186, определяются как 386+. Существует хорошо известный способ программного определения типа процессора. Этот способ основан на манипуляциях с регистром флагов с целью определения какие разряды этого регистра используются, а какие являются резервными. На основании этих манипуляций делается вывод о том, является ли процессор 16- или 32-разрядным. Вот эта последовательность:

pushf

pop bx

mov ax,0FFFh

and ax,bx

push ax

popf

pushf

pop ax

and ax,0F000h

cmp ax,0F000h

mov dl,1 ;8086/8088

je @@done16

or bx,0F000h

push bx

popf

pushf

pop ax

and ax,0F000h

mov dl,2 ;186/286

je @@done16

Как я уже сказал, процессоры RDC в результате выполнения этой последовательности команд заявляют себя 386+, а значит, позволяют использовать в исполняемом коде 32-разрядные команды.

Bпервые эта "странность" проявилась при загрузке операционной системы FDOS. Поскольку FDOS является продуктом Fastwel, эту проблему решили легко и быстро внесением небольшого дополнительного кода. С уверенностью могу сказать что FDOS от 26.10.2004, без проблем работает с процессорами RDC 8830 и 1610.

2. Ассемблер и Borland C++ 3.1

Программы написанные на языке ассемблера работают на процессорах RDC без всяких проблем. Разумеется если разработчик программы явно определил тип процессора директивой .186. Программы разработанные в среде Borland C++ версии 3.1 также работают на процессорах RDC без всяких проблем. Для этого лишь необходимо правильно указать в среде разработки тип процессора: Options|Compiler|Advanced Code Generations|Instructions Set -> 186. Все приложения, разработанные ранее на языке ассемблера или с помощью Borland C++ 3.1 и успешно работавшие на процессорах AMD будут без проблем работать на процессорах RDC.

3. Borland C++ 4.5, 5.02

Даже если явно задавать в среде разработки тип процессора - 186, программы разработанные в этих средах будут при запуске вызывать исключение 6 (unused opcode). Причина кроется в startup-коде: программа определяет тип процессора и узнает что процессор процессор - 386+. Программа далее пытается уточнить тип процессора: 386, 486 или 586. Для этого она использует 32-разрядные инструкции, которые, разумеется, вызывают исключение "unused opcode". Можно предложить 3 способа решения этой проблемы. Первый - самый простой, но не всегда применимый - перейти на использование пакета Borland C++ 3.1. Второй - предпочтительный, но более трудоемкий - отредактировать startup-код и выбросить оттуда бесполезный и опасный кусок. Третий - установить на изделии новую версию BIOS, в которой обработчик исключения состоит из одной единственной команды IRET. Это приведет к тому что при встрече с запрещенной командой однобайтный префикс 32-разрядной команды (66h, 67h и т.п.) будет проигнорирован, а основное "тело" команды будет выполнено. Разумеется, в целом, команда будет выполнена неверно, но "опасный" участок startup-кода будет успешно пройден. Недостаток данного способа очевиден - теряется эффективное средства диагностики ошибок программирования.

4. Turbo Pascal 7.0

Ситуация с этим пакетом несколько сложнее чем с BC++. В начале программы проводится определение типа процессора - до 386 или 386 и выше. Поскольку тип процессора определен неверно, программа в ряде случаев (например, при обработке данных типа LongInt) может прибегнуть к инструкции из набора команд процессора 386, что приведет к появлению исключения 6 (unused opcode). К сожалению, ни одно из средств предложенных в п.3 для данного случая не применимо. Особенно следует предостеречь пользователя от использования BIOS с "игнорирующим" обработчиком исключения "unused opcode". Единственное что я могу посоветовать пользователям TP 7.0 - совершенно отказаться от типов данных размером более 16-и разрядов.

 

Наверх
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Октябрь 2005 12:58

В принципе Фаствелом разработана утилита FIX4RDC которая автоматически решает проблемы со стартап кодом для программ написанных с помощью Borland C++ 4.5, Borland C++ 5.02 и Turbo Pascal 7.0. Эта утилита просто однократно запускается на двоичный код скомпилированной программы.

Думаю Вы бы быстрее получили решение своей проблемы если бы обратились напрямую в Прософт по адресу info@prosoft.ru. Данная конференция не является конференцией по техподдержке компании Прософт. Сотрудники Прософт как и любой другой компании участвуют в этой конференции как частные лица и если они сами этого желают. Соответственно у тех из них, которые все таки участвуют в конференции, нет никаких обязательств отвечать на технические вопросы других участников конференции, даже если они знают ответ и вопрос касается аппаратуры поставляемой Прософтом.

Наверх
Semelenov Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 15 Октябрь 2003
Категория: Belarus
Online Status: Offline
Публикации: 141
Свойства публикации Свойства публикации   Ответить, цитируя автора - Semelenov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 21 Октябрь 2005 17:46

Program Main;

begin

initialization
{$IFNDEF WIN32}
{$IFDEF UseRDC8k}
  Test8086 := 0;
{$ENDIF}
{$ENDIF}
end.

Нас это СПАСАЕТ !!!!

Главное - чтобы это было первым исполняемым кодом в программе.

Наверх
cskcsk Смотреть выпадающим
Новичок
Новичок


Присоединился: 19 Октябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 16
Свойства публикации Свойства публикации   Ответить, цитируя автора - cskcsk Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 22 Октябрь 2005 01:14
Благодарю всех за обстоятельные ответы.
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz