реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Обновление ПО с удаленного сервера., Как правильнее разделить ПО и самописный bootloader
Atridies
сообщение Jan 4 2014, 23:53
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Спасибо за ответы!

Проблема несколько модифицировалась, но не буду создавать отдельной темы.
Итак: перенес основное ПО в верхние адреса, перенес туда же вектора прерываний (временно убрав полностью использование прерываний: только ResetVector и начальное значение SP). Если в начальных адресах ставлю такие же значения для ResetVector и SP, как в векторах прерываний - все отлично работает.
Но если - в ResetVector - указать адрес функции, где стоит тупо
Код
asm("B ххх")
(где xxx - тот же адрес, что и в ResetVector) - ничего не работает.


Скажу по-другому:
Изначально ПО и вектора прерываний - лежат в 0x0800'0000. Переношу ПО и вектора в 0x0800'8000, а в 0x0800'0000 - ставлю константами те же значения, что и в 0x0800'8000 - 8 байт (SP и указатель Reset-а = 0x0800'8E41). Все работает.
Добавляю функцию в 0x0800'0100, которая состоит из одной команды "
Код
B 0x0800'8E41
". Заменяю указатель Reset-а - на 0x0800'0100. Ничего не работает.

В чем дело? Я ведь добавил-то только безусловный переход...


P.S. Да, оказывается у меня Cortex-M3 и соответственно VTOR - есть. Только от этого пока не легче.
Go to the top of the page
 
+Quote Post
Atridies
сообщение Jan 6 2014, 21:40
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 445
Регистрация: 7-02-05
Из: Зеленоград
Пользователь №: 2 468



Проблема решена.

"указатель Reset-а - на 0x0800'0100." - должно быть 0x0800'0101. У кортекса все адреса почему-то сдвинуты на один байт вперед.
Go to the top of the page
 
+Quote Post
alx125
сообщение Jan 6 2014, 22:29
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 18-05-09
Из: Novosibirsk
Пользователь №: 49 204



Цитата(Atridies @ Jan 7 2014, 01:40) *
Проблема решена.

"указатель Reset-а - на 0x0800'0100." - должно быть 0x0800'0101. У кортекса все адреса почему-то сдвинуты на один байт вперед.


Это не сдвижка, а признак системы команд Thumb. Для Cortex M3 он всегда "1"
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 05:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01341 секунд с 7
ELECTRONIX ©2004-2016