Подключил IAR к плате через Wiggler.
Включаю отладку. MEMMAP = 1;
Я руками заполняю память 0x40000000 - 0x40000040 значением 0xFF
Потом выполняю MEMMAP=2;
И смотрю что показывает по адресам 0-0x40
Вроде как туда должна отобразиться память диапазона 0x40000000 - 0x40000040.
А получается что оно так и отобразилось, но значения 4-х байт с адреся 0x18 (вектор IRQ) остались прежними. Далее я пытаюсь руками изменять байты в памяти в диапазоне 0x40000000 - 0x40000040,
и опять же новые значения становятся видны в области 0-0x40 кроме все тех же 4-х байт, они не меняются.
Я пробовал тоже самое в Crossworks и Keil, там такого эффекта не наблюдается.
Хотел узнать это глюк IAR, у кого-нибудь еще такое наблюдается?
Или может это все таки в моем проекте грабли где-то?
В результате выполняя код из uCOS-II
#define BSP_IRQ_VECTOR_ADDR (*(INT32U *)0x00000018L)
MEMMAP = 2; /* Remap 64 bytes of int. RAM to 0x00 */
BSP_IRQ_VECTOR_ADDR = 0xE59FF018; /* LDR PC,[PC,#0x18] instruction */
BSP_IRQ_ISR_ADDR = (INT32U)OS_CPU_IRQ_ISR; /* IRQ exception vector address */
Я не вижу в IAR чтобы по адресу 0x18 внеслись изменения т.к. там все время сидит прежнее значение.
А если я в режиме симуляции в IAR буду переключать MEMMAP я должен видеть эффект? На данный момент в симуляции никакой реакции на значение MEMMAP не наблюдаю.