Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба Помогите плс. Написал загрузчик для STM8L151G4. Среда IAR 3.11.1. Все работает но с основной программой проблема. Загрузчик нормально передает управление основной программе но после инициализации таймера прога виснет. Похоже проблема с прерыванием. *.icf настроил как тут http://we.easyelectronics.ru/STM8/bootloader-dlya-stm8-proshivka-po-vozduhu.html Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 197 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба А какое отношение имеет STM8 к ARM? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба Упс. Модераторы перенесите пост в профильную ветку. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 197 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 2 минуты назад, Alexey_1811 сказал: Упс. Модераторы перенесите пост в профильную ветку. Тогда уж - в ветку для гадателей/ясновидящих. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 3 hours ago, jcxz said: Тогда уж - в ветку для гадателей/ясновидящих. А что еще можно указать в данной ситуации? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 32 минуты назад, Alexey_1811 сказал: но после инициализации таймера прога виснет А без загрузчика прога нормально работает? Может быть она у вас ожидает значения по-умолчнию в регистрах периферии? 2 минуты назад, Alexey_1811 сказал: А что еще можно указать в данной ситуации? Ну хотя бы то, что делает прога, когда она "виснет". Прога не может зависнуть. Она что-то делает. Всегда. Процессор может зависнуть, как схема, но это явление редкое и специфическое. Вряд ли ваша программа способна на это. Значит, срабатывает какое-либо прерывание. где есть заглушка, или счётчик команд летит куда попало при неаккуаратной работе со стэком или указателем. Вот это вам и надо выяснить. И при каких условиях это происходит. А иначе - гадание. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 197 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 3 минуты назад, Alexey_1811 сказал: А что еще можно указать в данной ситуации? Возьмите отладчик и прошагайте участок инициализации таймера. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 (изменено) · Жалоба Программа рабочая. Устройство сначала было без загрузчика, но потом возникла необходимость обновлять прошивку. Таймер инициируется нормально (как минимум все работало до сдвига программы в памяти). Проблема точно с прерыванием от таймера. Изменено 12 февраля, 2021 пользователем Alexey_1811 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 197 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 3 минуты назад, Alexey_1811 сказал: Таймер инициируется нормально (как минимум все работало до сдвига программы в памяти). Так у STM8 вроде (насколько помню) нет возможности установки адреса начала таблицы векторов прерываний. А значит - нужно вручную перебрасывать все необходимые прерывания из загрузчика в основную программу. У Вас это сделано? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 2 hours ago, jcxz said: Так у STM8 вроде (насколько помню) нет возможности установки адреса начала таблицы векторов прерываний. А значит - нужно вручную перебрасывать все необходимые прерывания из загрузчика в основную программу. У Вас это сделано? Ого. Если так то не сделано. А есть где посмотреть как это сделать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 197 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 5 минут назад, Alexey_1811 сказал: Ого. Если так то не сделано. А есть где посмотреть как это сделать? Посмотреть на что? На массив команд JP? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 3 hours ago, jcxz said: Посмотреть на что? На массив команд JP? Ну не все такие гуру как и Вы. Понимал бы я как это сделать правильно то и не спрашивал. Прерывание таймера 1 нужны и для загрузчика и для основной программы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 4 минуты назад, Alexey_1811 сказал: Ну не все такие гуру как и Вы. Понимал бы я как это сделать правильно то и не спрашивал. Гуру не рождаются, ими становятся. Вам уже подсказали. Можете листинг посмотреть в придачу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 197 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба 6 минут назад, Alexey_1811 сказал: Понимал бы я как это сделать правильно то и не спрашивал. Ну а программу кто пишет - Вы или я? Ищите как выглядит и как создаётся таблица векторов прерываний, где она располагается (в загрузчике и в основном ПО). И делайте передачу управления с таблицы загрузчика в таблицу основного приложения. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 12 февраля, 2021 Опубликовано 12 февраля, 2021 · Жалоба Всем спасибо. Тема закрыта. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться