Перейти к содержанию
    

Загрузчик для STM8L151G4

Помогите плс. Написал загрузчик для STM8L151G4. Среда IAR 3.11.1. Все работает но с основной программой проблема. Загрузчик нормально передает управление основной программе но после инициализации таймера прога виснет. Похоже проблема с прерыванием. *.icf настроил как тут

http://we.easyelectronics.ru/STM8/bootloader-dlya-stm8-proshivka-po-vozduhu.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, Alexey_1811 сказал:

Упс. Модераторы перенесите пост в профильную ветку.

Тогда уж - в ветку для гадателей/ясновидящих.  :russian_ru:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, jcxz said:

Тогда уж - в ветку для гадателей/ясновидящих.  :russian_ru:

А что еще можно указать в данной ситуации?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 минуты назад, Alexey_1811 сказал:

но после инициализации таймера прога виснет

А без загрузчика прога нормально работает? Может быть она у вас ожидает значения по-умолчнию в регистрах периферии?

2 минуты назад, Alexey_1811 сказал:

А что еще можно указать в данной ситуации?

Ну хотя бы то, что делает прога, когда она "виснет". Прога не может зависнуть. Она что-то делает. Всегда. Процессор может зависнуть, как схема, но это явление редкое и специфическое. Вряд ли ваша программа способна на это. Значит, срабатывает какое-либо прерывание. где есть заглушка, или счётчик команд летит куда попало при неаккуаратной работе со стэком или указателем. Вот это вам и надо выяснить. И при каких условиях это происходит. А иначе - гадание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Alexey_1811 сказал:

А что еще можно указать в данной ситуации?

Возьмите отладчик и прошагайте участок инициализации таймера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Программа рабочая. Устройство сначала было без загрузчика, но потом возникла необходимость обновлять прошивку.

Таймер инициируется нормально (как минимум все работало до сдвига программы в памяти). Проблема точно с прерыванием от таймера.

Изменено пользователем Alexey_1811

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, Alexey_1811 сказал:

Таймер инициируется нормально (как минимум все работало до сдвига программы в памяти).

Так у STM8 вроде (насколько помню) нет возможности установки адреса начала таблицы векторов прерываний. А значит - нужно вручную перебрасывать все необходимые прерывания из загрузчика в основную программу. У Вас это сделано?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, jcxz said:

Так у STM8 вроде (насколько помню) нет возможности установки адреса начала таблицы векторов прерываний. А значит - нужно вручную перебрасывать все необходимые прерывания из загрузчика в основную программу. У Вас это сделано?

Ого. Если так то не сделано. А есть где посмотреть как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Alexey_1811 сказал:

Ого. Если так то не сделано. А есть где посмотреть как это сделать?

Посмотреть на что? На массив команд JP?  :wacko2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, jcxz said:

Посмотреть на что? На массив команд JP?  :wacko2:

Ну не все такие гуру как и Вы. Понимал бы я как это сделать правильно то и не спрашивал. Прерывание таймера 1 нужны и для загрузчика и для основной программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, Alexey_1811 сказал:

Ну не все такие гуру как и Вы. Понимал бы я как это сделать правильно то и не спрашивал.

Гуру не рождаются, ими становятся. Вам уже подсказали. Можете листинг посмотреть в придачу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Alexey_1811 сказал:

Понимал бы я как это сделать правильно то и не спрашивал.

Ну а программу кто пишет - Вы или я?

Ищите как выглядит и как создаётся таблица векторов прерываний, где она располагается (в загрузчике и в основном ПО). И делайте передачу управления с таблицы загрузчика в таблицу основного приложения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...