Установили новый кристалл STR912FAW47.

После попытки прошивать Flash Bank1 128K получаем ошибку - таймаут доступа к Flash.
Это насчёт алгоритма ICP. Обычный тоже не работает, но ошибка другая (не работал и ранее).

Если прошивать алгоритмом ICP для версии FAW44 (которым пользовались ранее), то прошивка проходит. Но здесь уже возникает проблема непосредственно с запуском самой программы.

О запуске.

Для старого чипа используем startup-файл, строки инициализации FMI:
Код
FMI_CR_Val      EQU     0x00000018  

FMI_BBSR_Val    EQU     0x00000000

FMI_BBADR_Val   EQU     0x00000000
FMI_NBBSR_Val   EQU     0x00000006

FMI_NBBADR_Val  EQU     0x00080000
FLASH_CFG_Val   EQU     0x00001000

; Setup Flash Memory Interface (FMI)
                LDR     R0, =FMI_BASE
                LDR     R1, =FMI_BBSR_Val
                STR     R1, [R0, #FMI_BBSR_OFS]
                LDR     R1, =FMI_NBBSR_Val
                STR     R1, [R0, #FMI_NBBSR_OFS]
                LDR     R1, =(FMI_BBADR_Val:SHR:2)
                STR     R1, [R0, #FMI_BBADR_OFS]
                LDR     R1, =(FMI_NBBADR_Val:SHR:2)
                STR     R1, [R0, #FMI_NBBADR_OFS]
                LDR     R2, =FMI_CR_Val
                STR     R2, [R0, #FMI_CR_OFS]

               ; Write "Write flash configuration" command (60h)
                LDR     R0, =FMI_BBADR_Val
                MOV     R1, #0x60
                STRH    R1, [R0, #0]

               ; Write "Write flash configuration confirm" command (03h)
                LDR     R2, =(FLASH_CFG_Val:SHL:2)
                ADD     R0, R0, R2
                MOV     R1, #0x03
                STRH    R1, [R0, #0]


Для нового изменяем следующие параметры:
FMI_BBSR_Val на 0x02
FMI_NBBSR_Val на 0x08
FMI_NBBADR_Val на 0x200000

Бит, который выбирает Flash для загрузки (CSX) установлен в "1" -> загрузка из bank1.

В свойствах проекта на вкладке "Target" изменяем все 0x80000 на 0x20000 и 0x8000 на 0x20000.

После запуска по debugger'у видно, что программа делает переход на вектор неверного адреса при попытке запустить следующую команду после команды "LDR R0, =FMI_BBADR_Val". При этом в окне дизассемблера текущие команды уже не опознаются (стоит "???"), т.е. - явно неверная инициализация адреса и т.п.

Исполузуем MDK 3.22.

Кто-нибудь уже работал с STR912FAW47 ?