не работает(((
если я правильно понял, то нужно изменить диапазон для всех сегментов кода (поменять ROMSTART на 0х100000 и ROMEND на 0х10ffff), добавить в *.xcl строчки
-Z(CODE)INTVEC_I=00200000-00203FFF
-QINTVEC=INTVEC_I
Потом объявить обработчики разрешённых во время записи флэш прерываний __ramfunc.
Ну и в low_init вставить кусок кода, который копирует таблицу прерываний из флэш в ОЗУ и делает ремап на ОЗУ.
Так вот, в режиме отладки IAR виснет на programming flash((( Если при этом выдернуть шнурок USB из SAM-ICE, то в окне лога читаем
Цитата
Wed Nov 07 16:39:35 2007: Loaded macro file: E:\Shumilov\Programms\IAR\iar_arm_440a\ARM\config\flashloader\Atmel\FlashAT91SAM7Sx.mac
Wed Nov 07 16:39:35 2007: ---------------------------------------- FLASH Download V1.3
Wed Nov 07 16:39:35 2007: ---------------------------------------- 14/November/2005
Wed Nov 07 16:39:36 2007: ---------------------------------------- PLL Enable
Wed Nov 07 16:39:36 2007: -------------------------------Set CPSR ----------------------------------
Wed Nov 07 16:39:36 2007: CPSR 000000D3
Wed Nov 07 16:39:36 2007: ---------------------------------------- PLL Enable
Wed Nov 07 16:39:36 2007: ------------------------------- The Remap is done ----------------------------------------
Wed Nov 07 16:39:36 2007: ---------------------------------------- Chip ID 0x27090540
Wed Nov 07 16:39:36 2007: ---------------------------------------- Extention 0x00000000
Wed Nov 07 16:39:36 2007: ---------------------------------------- Flash Version 0x00000110
Wed Nov 07 16:39:36 2007: -------------------------------Set PC ----------------------------------------
Wed Nov 07 16:39:36 2007: J-Link firmware: V1.20 (J-Link compiled Sep 28 2006 10:05:22 ARM Rev.5)
Wed Nov 07 16:39:36 2007: JTAG speed is initially set to: 32 kHz
Wed Nov 07 16:39:36 2007: Failed to halt CPU core after Reset (BP@0), using default reset strategy.
Wed Nov 07 16:39:36 2007: Resetting target using RESET pin
Wed Nov 07 16:39:36 2007: Hardware reset with strategy 1 was performed
Wed Nov 07 16:39:36 2007: Initial reset was performed
Wed Nov 07 16:39:36 2007: J-Link found 1 JTAG device. ARM core Id: 3F0F0F0F(ARM7)
Wed Nov 07 16:39:36 2007: Device at TAP0 selected
Wed Nov 07 16:39:36 2007: Auto JTAG speed: 8000 kHz
Wed Nov 07 16:39:36 2007: Auto JTAG speed: 8000 kHz
Wed Nov 07 16:39:37 2007: 4931 bytes downloaded and verified (3.62 Kbytes/sec)
Wed Nov 07 16:39:37 2007: Loaded debugee: E:\Shumilov\Programms\IAR\iar_arm_440a\ARM\config\flashloader\Atmel\FlashAT91SAM7Sx.d79
Wed Nov 07 16:39:37 2007: Target reset
Wed Nov 07 16:39:38 2007: Downloader Version 1.3 14-NOV-2005
Wed Nov 07 16:39:38 2007: Download1: AT91SAM7Sx At: 0x100000
Wed Nov 07 16:39:38 2007: Download: AT91SAM7Sx Version: 0x110
Wed Nov 07 16:39:38 2007: Download:page 0
Wed Nov 07 16:39:38 2007: Download:page 8192
Wed Nov 07 16:39:38 2007: Download:page 8193
Wed Nov 07 16:39:38 2007: Download:page 8194
Wed Nov 07 16:39:43 2007: USB communication error: No USB connection opened !
Could not transfer JTAG data.
Wed Nov 07 16:39:44 2007: Non-zero or missing exit code.
Wed Nov 07 16:39:45 2007: Code still contains old breakpoints
Я так понял, что loader пытается писать с 0x100000 и со смещением 8192 страниц (0x100000/128байт) и далее........ loader стоит по умолчанию
Если в xcl вернуть диапазон ROM в первоначальное состояние 0-ffff, то отладка начинается, но после ремапа на ОЗУ вылетает в exception дата аборт или андефайнед инстракшн..... что и понятно
О!
Стоп....... отладку запустил - оказывается в настройках лоадера надо указывать все 4 байта адреса))) - то есть не 0x100000, а 0x00100000 - вот ведь))