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


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

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

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

нужно в скрипте (или еще гдето если не GCC используется) сказать чтобы секция использовала связывание адресов в области ОЗУ и складывалось в .data . это обеспечит правильную адресацию и копирование этого куска в ОЗУ в crt коде.
Step_ARM
Цитата(klen @ Oct 20 2009, 09:26) *
я не держал в руках кортексы от NXP но то что Вы говорите по логике не может быть.

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

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

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

Речь идет не о куске кода о, а о полноценной программе. Например, загрузчик ПО с SD карты или демо-ролик какой-нибудь. Все это независимо от программы на flash. Поэтому таблица векторов НУЖНА. А вот делается ли ремап в LPC17XX? Пока не нашел...
msalov
с 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
Step_ARM
Цитата(Step_ARM @ Oct 20 2009, 09:40) *
Речь идет не о куске кода о, а о полноценной программе. Например, загрузчик ПО с SD карты или демо-ролик какой-нибудь. Все это независимо от программы на flash. Поэтому таблица векторов НУЖНА. А вот делается ли ремап в LPC17XX? Пока не нашел...

Вроде нарыл--что-то похожее.
Загрузить код и таблицу векторов в SRAM. Задать адрес новой таблицы смещением и становить область SRAM в регистре VTOR.
Перейти на начало новой таблицы.
Не понятно будет ли это работать в AHB SRAM, то есть если таблицу векторов разместить в основной памяти по 0х10000000, а код в каком-либо банке AHB SRAM...

Vector Table Offset Register
Table 651. VTOR bit assignments
Bits Name Function
[31:30] - Reserved.
[29:8] TBLOFF Vector table base offset field. It contains bits[29:8] of the offset of the table
base from the bottom of the memory map.
Remark: Bit[29] determines whether the vector table is in the code or
SRAM memory region:
Bit[29] is sometimes called the TBLBASE bit.
• 0 = code
• 1 = SRAM.
[7:0] - Reserved
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.