Jump to content

    

PowerPC + Wiggler

Господа, помогите убогому.

В наличии платка с AMCC 440Ep. На платке для отладки разведен JTAG(4 сигнала).

 

Возможно ли записать/считать подсоединенную через EBC проца флешку через Wiggler?

Если да, то какой программой?

 

Сходу попробовал FlashProgrammer от "Macraigor", что-то не получилось..

Share this post


Link to post
Share on other sites

Тоже мучаем сейчас с AMCCшный 440 проц, правда PPC440EPx

И как раз macraigorским FlashProgrammerом и по Wigglerу.

 

Есть кит Sequoia и своя плата. кабель подключаем также - 4 стандартные сигнала

 

На ките FlashProgrammer "вроде-бы" работает

Работает и старая версия программера, где 440EPx не упоминается, но там выбираем 440Gx, правда иногда при записи во флэшку бывают ошибки

Новой версией программера поначалу писать на ките не пробовали, только читали - вроде бы все было ок (использовали OCD файл под этот кит, который (файл) в месте с программером поставляется, да и с созданным "с нуля" тоже пробовали - работало). Но вот сегодня попробовали записать - чет проц не останавливается (бум разбираться) и даже не читается... но это кит...

 

На нашей плате JTAG поначалу работал очень нестабильно (пытались приостановить проц - не всегда удавалось), причем после выполнения по JTAGу сброса проца, тот переставал останавливаться и вообще дальше вел себя неадекватно (проверяли macraigrosким OCD Commanderом - неплохая тулза)

Нашли одно отличие платы от кита - на плате системный клок 40МГц, на ките 33МГц. Заменили на плате 40 на 33 МГц - JTAG заработал, но флэшпрограммер (новый, в котором есть этот проц) вылетал.

Далее тюнили OCD файл под нашу платку (у нас память DDR, на ките DDR2) - прописали соответствующие регистры проца как надо - все равно вылетает. методом исключения определили что программер рушится при записи секции TLB - пришлось пока отключить, вроде как у проца по-умолчанию (после сброса) 4кбайтный кусок задан.

Настроили тайминги на периферийной шине - флэш начала писаться, но вот только кусками по 1кбайта :(.

Проблема врядли с адресами - прописываем по 1кбайту последовательно несколько блоков флэшки - читаем обратно - все блоки записаны как надо, но то что флэшпрограммер дает ошибку при записи больше 1кбайта не есть гуд... вот что-то фонтан пока иссяк, а 512кбайт писать по кбайту не радует... думаю, не в софте ли дело? (ведь мы новую версию программера на запись на ките так и не успели опробовать)

 

Кто-нить сталкивался с подобным?

 

P.S.: То что программер на ките запускался сразу объяснили - проц грузился из флэши (там то она уже прописана) и настраивал свои регистры как надо, в т.ч. TLB. Вырубили загрузку проца из флэшки и программер тоже начал вылетать, т.е. догадка верная.

 

P.P.S: Старой версией программера на своей платке пока не писали - ща будем пробовать....

 

P.P.P.S: 2 Dimentius:

Вроде бы Flashprogrammer и wiggler должны тебе помочь - может есть какие грабли как в нашем случае? (А у тебя с лицензией все ок? а то он без лицензии не пишет)

Share this post


Link to post
Share on other sites

Отпишитесь по результатам

 

Хорошо было бы, если работает.. а на счет лицензионности (шаркает ножкой), он как бы пропатчен.. на жадность

Share this post


Link to post
Share on other sites

Что-то с флэшпрограммером пока глухо - надо срочно завершать работу, поэтому поступи следующим образом:

программируем флэш при помощи Macraigor OCD Commander (он бесплатный)

OCD Commander дает самые элементарные функции наладки проца по JTAGу - в общем практически отладчик. Все что нам надо - писать регистры проца, писать и читать область памяти - в проге это есть. А главное - там можно запустить макрос из последовательности комманд.

Работаем все также по виглеру.

 

В общем - создали макрос, который настраивает времянки внешней шины проца, область памяти подключенную к первому чипселекту (там где флэшка) и доступ к ней. у нас флэшка Spansion - программируется долго, поэтому в нашем случае еще надо настроить внешнюю шину на бесконечное ожидание Ready.

 

После этого в макросе добавляем запись во флэшку (соблюдая ее протокол - т.е. запись одного слова состоит из четырех обращений - первые два - "разлочивание", третье - команда записи, четвертое запись самих данных по адресу). Нам пришлось еще добавить чтение одного слова после записи, а то проц на ready не смотрел (оно из флэшки появляется позже чем надо) - заодно получили контроль записи :)

 

Для создания макроса написали программулину (ясен пень не руками ж его набирать)

Для записи 3 секторов (загрузчик) получился 25 мегабайтный! макрос, выполнялся часов 5....

После того как исключили запись "FFFF" (флэшка NOR) и в макросе стали делать буферизованную запись во флэш - объем/время сократились до 3 мбайт/30 минут, так что уже более менее можно работать. Сейчас мучаем загрузчик - что-то там не так. Как только заработает - всю остальную флэшку из загрузчика прошьем по TFTP.

 

Кстати - таким же образом можно и дамп флэшки делать (и работать дамп будет гораздо быстрее), правда надо еще log парсить :) ну это дело техники

 

Интересно, что получилось халявно без нарушения лицензий :) (флэшпрограммер то у нас тоже "патченный" :))

 

если интересен пример скрипта - пишите в личку

а в общем в нем всего две рабочих команды:

DCR для записи Device Control Registers

HALF для доступа к памяти (у нас шина 16-разрядная)

 

К флэшпрограммеру может еще вернемся когда(если) время будет. Мы его пока только для стирания флэхи используем :) (макрос лень писать)

 

2 Dimentius: у нас проц PPC440EPx, но думаю с твоим тоже сработает как надо (тем более, что в OCD Commandere PPC440EPx нет в списке поддерживаемых процов, так что брали PPC440GX и все арбайтен. А твой там есть)

Удачи

Share this post


Link to post
Share on other sites

Пришлось на прошлой неделе вернуться к этому вопросу.

Скачал новый "Flash Programmer" и "OCD Commander".

 

Как здесь уже писали, при работе с wiggler-ом проблемы у "Flash Programmer-а" в постоянном срыве из режима отладки в "running" и ограничении в 1024 байта при записи. Пришлось от него отказаться.

"OCD Commander" повел себя более достойно и адекватно. Правда перспектива заливать "U-Boot" десятками минут немного расстраивала.

Поэтому решил поступить по другому:

Написал на асме маленькую программу в линейном коде без всяких вызовов, которая перекладывает данные из одной области памяти в другую, согласно протоколу работы с NOR-flash 28F128J3 от "Intel"(эта память стоит на моей плате). Подготовил "U-Boot" для моей платки(размер составил 2 сектора флешки). Преобразовал оба файла в формат s-records с адресами в Ram ("U-Boot" - 0x01000000, программки - 0x01060000), выгрузил через "OCD Commander" и запустил код по переносу данных.

В результате программирование "U-Boot" составило около 30 сек.

Думаю, что подобным образом можно сделать на любой платформе.

Прикрепляю свой код для примера. Всем удачи.

uboot_bootloader.zip

Share this post


Link to post
Share on other sites

Очень хорошее развитие идеи :), особенно с подробным примером :a14:

У нас пока больше 2-х плат не было :( - так что вопрос о скорости пока даже не возникал

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this