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

 
 
> CortexM3, запись данных в Program Counter.
Danis
сообщение Nov 28 2011, 11:09
Сообщение #1


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Привет, коллеги по цеху!

Работаю в IAR, пишу на Си. Имеется надобность прочитать данные из ячейки flash по адресу 0x08000804 и записать их в регистр PC (R15). Походу тут без ассемблера не обойтись. Прошу помощи в реализации кода. Спасибо!


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
borman11
сообщение Nov 28 2011, 18:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 16-03-06
Из: Москва
Пользователь №: 15 298



Вот пример из бутлоадера Flash Magic
Код
void execute_user_code(void)
{
    void (*user_code_entry)(void);
    user_code_entry = (void(*)(void)) USER_FLASH_START;
    user_code_entry();
}
Go to the top of the page
 
+Quote Post
Danis
сообщение Nov 29 2011, 06:42
Сообщение #3


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(borman11 @ Nov 28 2011, 21:56) *
Вот пример из бутлоадера Flash Magic
.....


подправил под себя:

unsigned int Data = *(u32*)(0x08000804);
void (*user_code_entry)(void);
user_code_entry = (void(*)(void))Data;
user_code_entry();


Да, работает (”перепрыгивает”), спасибо. Но мы тут просто ”тупо” перепрыгнули адрес (Инструкция BLX).
Но как быть с регистром R13(SP), полагаю, для правильной дальнейшей работы его тоже надо инициализировать значением из ячейки 0x08000800?


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 29 2011, 07:43
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Danis @ Nov 29 2011, 09:42) *
Но мы тут просто "тупо” перепрыгнули адрес (Инструкция BLX).

"Тупо перепрыгнуть" была бы команда B, а здесь Branch with link and change state.
Вы занесли адрес возврата в LR. А стек при чем? Разве он чем-то забит?
Go to the top of the page
 
+Quote Post
Danis
сообщение Nov 29 2011, 09:05
Сообщение #5


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(ViKo @ Nov 29 2011, 10:43) *
А стек при чем? Разве он чем-то забит?


Я ведь с одного проекта на другой перепрыгиваю. Разве можно оставить без инициализации SP?


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post



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

 


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


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