2
HarbourСпасибо за инфу и прогу
Теперь можно с уверенностью смотреть в завтрашний день
Небольшое лирическое отступление:Дело в том, что я только что разбирался с процессором Renesas SH7201
при помощи Starter Kit от Renesas, и там конечно в ките небыло настоящего
JTAG отладчика, а только USB-UART конвертер с софтовой поддержкой
в виде Software Monitor. После первоначальных тестов/проб разной переферии(а примеров
в ките было достаточно много, так что этот этап прошел достаточно легко)
через пару недель была поставлена задачка написать собственный бутлоадер.
(Я до этого не имел дела с процами без встроенной флеш

)
К этому времени я конечно еще не смог вдумчиво прочитать всю документацию
касающуюся данного проца(пару тысяч страниц в сумме), и поэтому я четко себе
представлял что там где-то внутри проца должен сидеть минимальный загрузчик
типа SAM-BA(кажись так называется) как в ARM9(начитался конференций, блин

),
ну я и решил что так оно и должно быть. Я недолго думая, удалил резистор на плате кита
который физически защищал первый сектор флеш и уверенно приступил к экспериментам

А в ките("япона мать") был для этого как раз подходящий пример под
названием UserBoot, который собственно и является первоначальным загрузчиком.
При этом этот пример легко компилировался и прошивался, что и навело меня на мысль
что все что я собираюсь делать вполне безопасно...
Это потом я уже узнал судорожно выясняя ЧТО ДЕЛАТЬ, что в конфигурационном файле
прошивальщика флеш есть такая секция:
[Reserved Area 0]
Block Name = R0
Start Address = 0
Start (Hex) = 0x00000000
Block Size = 65536
Size (Hex) = 0x00010000
Area Type = Reserved
Overlay = 0
которая говорит прошивальшику что нужно делать вид что мы в эту секцию записали
все что нас попросили, но при этом туда ничего не писать
(конфигурационный файл был именно для кита

)
Но конечно эта секция была безжалостно удалена первой

Конечно на пути к всеобщей гармонии , были беспощадно удалены также все
проверки в коде ядра(UserBoot) которые проверяли стирание и запись в первый сектор.
Вобщем, если кто-то придумал преграды для нас, то мы обязаны их преодолеть!

Ну и паралельно конечно были убранны всякие ограничения программы загрузчика
типа чтения только из флеш которая прописанна в конфигурационном
файле( А с какой радости он, гад, за меня решает откуда я хочу прочитать из флеш,
SRAM, SDRAM или вобще из области регистров переферийных устройств

)
Вобщем все развивалось как нельзя лучше, и я вполне был собой доволен
Закончилось это как всегда внезапно
В какой-то момент я запустил команду eraseflash, ну, и немного подумав, решил ну его
нафиг, завтра продолжу, и вырубил питание кита и компа...
Утро явно не задалось...
Кит отказывался видетЬся...
Начал перечитывать доки (много...)
Через поставщиков были заданы разные вопросы Renesas...
Получены не очень вразумительные ответы ... (правда кое-что из исходников для
работы через их JTAG выдали, но было абсолютно непонятно нафига оно мне если нет JTAG)
Еще раз были перечитанны доки...(много...)
ПРИШЛО ОСОЗНАНИЕ...
НАПИТЬСЯ...(что и было реализованно)
Почитать еще доки (много...)
Выяснить цену на JTAG и возможность взять его на один день...
НАПИТЬСЯ...(что и было реализованно, лишь частично, видимо под магией суммы которую
просют за JTAG(>1500$))
Сесть и трезво все обдумать...
Почитать доки (уже немного...)
Покупаю чип Am29LV040B в корпусе PLCC32, развожу "ручками" дочернюю платку
для подключения к киту, на программаторе прошиваю UserBoot в нее, ну там перекидываю
еще пару сигналов на плате (CS0, и тд) и ...
...плата уверенно стартует
А вот тепер можно
Доделываю бутлодер ну и все что небыло cделано раньше, сдаю работу...
Небольшая пауза...
Получаю задание разобраться с AVR32.
Скачиваю доки и софт.
Открываю доки и первое что начинаю читать, это про то как доступаться и
программировать флеш
2
HarbourПодробно с тем как работает JTAG никогда не разбирался, шьет и слава богу.
Но прочитав Ваш вариант восстановления NGW понял что пора разобраться подробно...
Цитата
NGW100 у меня, следите за топиком. не смешите насчет лоадера - флешку я убил в тот же день как получил плату, посему шил именно через jtag и без попсового jtagice, а самодельным lpt bb2. делать это можно двумя путями через инструкцию MEMORY_ACCESS (код 10001) и через обыкновенный EXTEST ( код 00011). к сожалению MEMORY_ACCESS нигде не документирован, поэтому делал по старинке. если кому приспичит - могу выложить прогу, токмо оно под linux. Вначале шьется паралелльная флешка, а потом уже с помощью готового образа SPI'йная.
Правильно ли я понимаю что через EXTEST Вы рулите ножками проца которые подключены
к флеш (D0-D15,A0-A23, RD,WR,...) ? и таким образом передаете команды флеш
на стирание/запись ?
Как Вы инициализируете External Bus через JTAG:
5. В комадной строке набираем "initbus ngw100" ???
Запускаете ли вы через JTAG инструкции на целевом процессоре, и если да то как ?
Вобщем интересна любая инфа/ссылки на этот счет...