Программа не работает при включении питания iPAC-8000 (режим "Run"). На терминал выводится строчка "[Unknown code]CS:IP=:= SS:SP=: DS= ES", после чего контроллер перезагружается и всё повторяется (цикл примерно секунда). Что может быть?
Факты:
1. Другие программы автостартуют без проблем. 2. Программа нормально запускается вручную (контроллер в режиме "Init") командой "run"/"runr" с терминала и прекрасно работает сутками. 3. Программа автоматически запускается нормально, если контроллер, без выключения питания, переключить в режим "Run" и перегрузить командой "reset" с терминала. 4. На аналогичном контроллере, купленном в другое время, всё точно так же не работает. 5. Пробовали другой блок питания. 6. Пробовали прошивать несколько разных прошивок. Сейчас стоит: "ICP_DAS MiniOS7 for iPAC-8000E(80MHz) Ver. 2.04 build 014,Nov 08 2011 14:29:29 OS id=25". 7. Пробовали несколько разных версий системных библиотек. Сейчас: "8000A.lib version: 2.16, Date: Jun 21 2010" и "tcp2dm32.lib version: 2.01, Date: Sep 01 2010". 8. Пробовали несколько разных компиляторов: Turbo C++ 3.0, Borland C++ 3.1 и Borland C++ 5.0 с разными настройками проекта (по инструкции ICP DAS тоже). 9. Программа не успевает выполнить "int main()", похоже падает в CRT или даже раньше. 10. Программа весит 95Кб (секция кода больше 64Кб). 11. "Autoexec.bat" выполняется нормально, также пробовали вставлять туда команды которые работают долго, типа, "diag". 12. И "diag" показывает, что причина перезагрузки "RESET".
Может "сторожевую собаку" забываете из приложения сбрасывать, вот она вам и перезагружает раз в секунду
Приложение не запускается вообще см. п.9, и если watchdog срабатывает, то причина будет "WDT" в п.12.
P.S. Проблема была найдена, как тока перестану фигеть от неё, расскажу, что было...
Поделитесь, пожалуйста, решением проблемы.
Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как.
Завешивал контроллер код стандартной консольной библиотеки <conio.h>, т.к. из неё использовались функции kbhit() и getch(), который прекрасно работает абсолютно всегда, за исключением холодного автозапуска. Похоже, встроенная программа-монитор контроллера что-то настраивает в нём, и библиотека в дальнейшем нормально инициализируется.
Решением было изменение регистра двух букв, а именно использование прямых аналогов: Kbhit() и Getch() из <8000A.h> (первые буквы заглавные), после этого <conio.h> перестала линковаться с программой, автозапуск заработал, а программа даже похудела на 10 Кб.
не знаю как у Вас - у меня в промкомпах на процессоре RDC8k это решилось принудельным отключением сопроцессора Test8086 := 0;
может и у вас нечто такое же...
Не понимаю, что вы имеете в виду. Но сопроцессора у данного контроллера нет в принципе и в опциях компилятора это указывается.
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме