Step68 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба На камнях LPC23XX можно было запускать программу в SRAM. Загрузил в ОЗУ программу, таблицу векторов в 0х40000000, выставил MEMMAP и все... В LPC17XX я такого не нашел. Получается , что запуск в ОЗУ невозможен или я чего-то не догоняю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба На камнях LPC23XX можно было запускать программу в SRAM. Загрузил в ОЗУ программу, таблицу векторов в 0х40000000, выставил MEMMAP и все... В LPC17XX я такого не нашел. Получается , что запуск в ОЗУ невозможен или я чего-то не догоняю? я не держал в руках кортексы от NXP но то что Вы говорите по логике не может быть. как минимум можно руками скопировать секцию в ОЗУ и выполнить код по указателю объявив его как функцию. для выполнения кода из ОЗУ мапирование таблицы векторов не обязательно. поробуйте просто отлинковать секцию кода в область ОЗУ нужно в скрипте (или еще гдето если не GCC используется) сказать чтобы секция использовала связывание адресов в области ОЗУ и складывалось в .data . это обеспечит правильную адресацию и копирование этого куска в ОЗУ в crt коде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Step68 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба я не держал в руках кортексы от NXP но то что Вы говорите по логике не может быть. как минимум можно руками скопировать секцию в ОЗУ и выполнить код по указателю объявив его как функцию. для выполнения кода из ОЗУ мапирование таблицы векторов не обязательно. поробуйте просто отлинковать секцию кода в область ОЗУ нужно в скрипте (или еще гдето если не GCC используется) сказать чтобы секция использовала связывание адресов в области ОЗУ и складывалось в .data . это обеспечит правильную адресацию и копирование этого куска в ОЗУ в crt коде. Речь идет не о куске кода о, а о полноценной программе. Например, загрузчик ПО с SD карты или демо-ролик какой-нибудь. Все это независимо от программы на flash. Поэтому таблица векторов НУЖНА. А вот делается ли ремап в LPC17XX? Пока не нашел... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msalov 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба с cortex-ами от nxp дела не имел, но в кортексах таблица векторов ремапится в регистрах NVIC (делал на Stm32 - работает :)) 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Step68 0 20 октября, 2009 Опубликовано 20 октября, 2009 · Жалоба Речь идет не о куске кода о, а о полноценной программе. Например, загрузчик ПО с 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться