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

 
 
> Запуск в ОЗУ, LPC1766
Step_ARM
сообщение Oct 20 2009, 04:13
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



На камнях LPC23XX можно было запускать программу в SRAM. Загрузил в ОЗУ программу, таблицу векторов в 0х40000000, выставил MEMMAP и все...
В LPC17XX я такого не нашел. Получается , что запуск в ОЗУ невозможен или я чего-то не догоняю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
klen
сообщение Oct 20 2009, 05:26
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(Step_ARM @ Oct 20 2009, 08:13) *
На камнях LPC23XX можно было запускать программу в SRAM. Загрузил в ОЗУ программу, таблицу векторов в 0х40000000, выставил MEMMAP и все...
В LPC17XX я такого не нашел. Получается , что запуск в ОЗУ невозможен или я чего-то не догоняю?


я не держал в руках кортексы от NXP но то что Вы говорите по логике не может быть.

как минимум можно руками скопировать секцию в ОЗУ и выполнить код по указателю объявив его как функцию.

для выполнения кода из ОЗУ мапирование таблицы векторов не обязательно. поробуйте просто отлинковать секцию кода в область ОЗУ

нужно в скрипте (или еще гдето если не GCC используется) сказать чтобы секция использовала связывание адресов в области ОЗУ и складывалось в .data . это обеспечит правильную адресацию и копирование этого куска в ОЗУ в crt коде.
Go to the top of the page
 
+Quote Post
Step_ARM
сообщение Oct 20 2009, 05:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 132
Регистрация: 11-07-08
Пользователь №: 38 870



Цитата(klen @ Oct 20 2009, 09:26) *
я не держал в руках кортексы от NXP но то что Вы говорите по логике не может быть.

как минимум можно руками скопировать секцию в ОЗУ и выполнить код по указателю объявив его как функцию.

для выполнения кода из ОЗУ мапирование таблицы векторов не обязательно. поробуйте просто отлинковать секцию кода в область ОЗУ

нужно в скрипте (или еще гдето если не GCC используется) сказать чтобы секция использовала связывание адресов в области ОЗУ и складывалось в .data . это обеспечит правильную адресацию и копирование этого куска в ОЗУ в crt коде.

Речь идет не о куске кода о, а о полноценной программе. Например, загрузчик ПО с SD карты или демо-ролик какой-нибудь. Все это независимо от программы на flash. Поэтому таблица векторов НУЖНА. А вот делается ли ремап в LPC17XX? Пока не нашел...
Go to the top of the page
 
+Quote Post
msalov
сообщение Oct 20 2009, 06:10
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



с cortex-ами от nxp дела не имел, но в кортексах таблица векторов ремапится в регистрах NVIC (делал на Stm32 - работает smile.gif)

Цитата("Cortex-M3 Technical Reference Manual (ARM DDI 0337E) стр. 8.20")
Vector Table Offset Register
Use the Vector Table Offset Register to determine:
• if the vector table is in RAM or code memory
• the vector table offset.
The register address, access type, and Reset state are:
Address 0xE000ED08
Access Read/write
Reset state 0x00000000
Go to the top of the page
 
+Quote Post



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

 


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


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