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

 
 
 
Reply to this topicStart new topic
> Запуск в ОЗУ, 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
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
Step_ARM
сообщение Oct 20 2009, 06:19
Сообщение #5


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

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



Цитата(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
Go to the top of the page
 
+Quote Post

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

 


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


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