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

 
 
> Указание линковщику выполнять код из RAM
mml
сообщение Sep 6 2016, 07:16
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777



Как сделать, чтобы определенный участок кода выполнялся не из флэш а из ОЗУ.
Так нужно, потому что этот код будет стирать флэш и записывать в нее новую программу. (Программа стирает сама себя, и при этом должна работать).

Микроконтроллер Atmel SAM4S.
Среда AtmelStudio.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mml
сообщение Sep 7 2016, 09:33
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777



Не работают брекпоинты в некоторых рамфункциях, а в некоторых работают. Почему?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 7 2016, 10:01
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (mml @ Sep 7 2016, 12:33) *
Не работают брекпоинты в некоторых рамфункциях, а в некоторых работают. Почему?
В исходном коде или в дизассемблированном? Строки исходного кода могут быть выкинуты оптимизатором.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
mml
сообщение Sep 7 2016, 10:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 10-11-10
Из: Екатеринбург
Пользователь №: 60 777



оптимизатор отключен

мне кажется дебагер не понимает, что функция копируется инициализатором в рам и ставит брекпоинты во флэш

Цитата(Сергей Борщ @ Sep 7 2016, 14:01) *
В исходном коде или в дизассемблированном? Строки исходного кода могут быть выкинуты оптимизатором.

Пишет, что в ран моде не может быть открыто окно с дизассемблером.
А мне надо быть в ране. Бреакпоинт должен стоять на обработчике прерывания (который сейчас RAMFUNC). Потом я вызываю прерывание, и хочу остановиться на бреакпоинте. Пока функция была не RAMFUNC так работало.

Функция main сейчас тоже RAMFUNC, и в ней тоже невозможно поставить бреакпоинт.

Сообщение отредактировал mml - Sep 7 2016, 10:47
Go to the top of the page
 
+Quote Post



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

 


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


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