EKirshin
Mar 2 2007, 10:24
Пробуем грузиться со второй Flash STR912 (которая 32k). В новой версии RVDK (3.04 вроде бы) появилась возможность переключить загрузку на вторую Flash записыванием конфигурационной области (добавлены новые алгоритмы программирования flash ICP).
Переключить Flash вроде бы получается, прошить ее тоже, однако вот программа из нее стартовать никак не хочет.
В стартапе устанавливаем регистры BBADR = 0x400000, size = 32k, NBADDR = 0x0, size=512k. Потом еще в настройках проекта указываем, куда грузить программу (либо на вкладке Target, либо в sct-файле - пробовали и так и эдак) - адрес 0x400000.
Вообще, с этими адресами возникли непонятки: стандартный стартап устанавливает второй флэш адрес 0x400000. Как понимаем, это ее физический адрес - адрес, по которому нужно прошить программу (для алгоритма прошивки). Т.е., стартап устанавливает логический адрес, равный физическому. Как только регистры BB и NB инициализируются у второй flash логический адрес уже 0x0? Тогда непонятно, почему после линковки абсолютные адреса переходов устанавливаются со смещением 0x400000?
Попробовали сделать так: скомпилировали программу для адресов 0x00, а зашили по адресам 0x400000. Пришлось для этого создавать второй проект, куда вставлялся откомпиленный образ первого и выставлялись адреса 0x400000.
В общем, после всех этих манипуляций и переключения флэши для загрузки со второй (bank1, 32k) процессор теперь уже вообще не перепрошить и не переключить назад. Пишет COULD NOT STOP ARM DEVICE! Такое уже бывало после переключения на вторую флэш, но это обходилось переключением назад на первую (для этого приходилось удерживать ресет перед началом прощивки, потом быстренько отпускать... чтобы программа, видимо, не успела запуститься). А теперь и эти фокусы не помогают!
Кто-нибудь пробовал грузиться из второй флэш?
Usatyj
Mar 13 2007, 11:16
А с какой стати адрес 0х400000 ? Ведь в даташите ясно сказано - 0х80000 (см. Memory map). ИМХО вы не попадаете по банкам. А кроме того, в регистр FMI_CR надо записать 0х18, чтоб оба банка включить.
kesart
Mar 23 2007, 09:54
У меня возникла похожая ситуация с STR912 Keil пишет COULD NOT STOP ARM DEVICE . Что можно сделять чтоб контроллер заработал ну чтобы можно было его перепрошить. Подскажите пожалуйста
новечку как правильно переключить boot на 32к часть флешки.
Bosicc
Nov 26 2007, 00:40
Цитата(kesart @ Mar 23 2007, 11:54)

У меня возникла похожая ситуация с STR912 Keil пишет COULD NOT STOP ARM DEVICE . Что можно сделять чтоб контроллер заработал ну чтобы можно было его перепрошить. Подскажите пожалуйста
новечку как правильно переключить boot на 32к часть флешки.
Я понимаю что наверно не совсем вовремя, но если проблема еще есть посмотрите ее решение
ЗдесьЯ сейчас сам пробую, есть много вопрос, но нет скем обсудить
koyodza
Nov 26 2007, 13:58
Цитата(Bosicc @ Nov 26 2007, 02:40)

Я понимаю что наверно не совсем вовремя, но если проблема еще есть посмотрите ее решение
ЗдесьЯ сейчас сам пробую, есть много вопрос, но нет скем обсудить

Я недавно занимался написанием бутлоадера для STR91, но сделал несколько иначе. Какие именно вопрсы? Можем пообсуждать. Лучше в личку
Цитата(EKirshin @ Mar 2 2007, 14:24)

В общем, после всех этих манипуляций и переключения флэши для загрузки со второй (bank1, 32k) процессор теперь уже вообще не перепрошить и не переключить назад. Пишет COULD NOT STOP ARM DEVICE! Такое уже бывало после переключения на вторую флэш, но это обходилось переключением назад на первую (для этого приходилось удерживать ресет перед началом прощивки, потом быстренько отпускать... чтобы программа, видимо, не успела запуститься). А теперь и эти фокусы не помогают!
Такая дрянь вылечилась только с помощью фирменного FlashLink.
AlexandrY
Dec 12 2007, 15:12
J-Link тоже легко с этим справляется.
Это проблема исключительно U-Link-а.
Цитата(klop @ Dec 10 2007, 20:03)

Такая дрянь вылечилась только с помощью фирменного FlashLink.