EKirshin 0 30 июля, 2008 Опубликовано 30 июля, 2008 · Жалоба Установили новый кристалл 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 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться