Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PowerPC + Wiggler
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Dimentius
Господа, помогите убогому.
В наличии платка с AMCC 440Ep. На платке для отладки разведен JTAG(4 сигнала).

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

Сходу попробовал FlashProgrammer от "Macraigor", что-то не получилось..
Gothard
Тоже мучаем сейчас с 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кбайта sad.gif.
Проблема врядли с адресами - прописываем по 1кбайту последовательно несколько блоков флэшки - читаем обратно - все блоки записаны как надо, но то что флэшпрограммер дает ошибку при записи больше 1кбайта не есть гуд... вот что-то фонтан пока иссяк, а 512кбайт писать по кбайту не радует... думаю, не в софте ли дело? (ведь мы новую версию программера на запись на ките так и не успели опробовать)

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

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

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

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

Хорошо было бы, если работает.. а на счет лицензионности (шаркает ножкой), он как бы пропатчен.. на жадность
Gothard
Что-то с флэшпрограммером пока глухо - надо срочно завершать работу, поэтому поступи следующим образом:
программируем флэш при помощи Macraigor OCD Commander (он бесплатный)
OCD Commander дает самые элементарные функции наладки проца по JTAGу - в общем практически отладчик. Все что нам надо - писать регистры проца, писать и читать область памяти - в проге это есть. А главное - там можно запустить макрос из последовательности комманд.
Работаем все также по виглеру.

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

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

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

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

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

если интересен пример скрипта - пишите в личку
а в общем в нем всего две рабочих команды:
DCR для записи Device Control Registers
HALF для доступа к памяти (у нас шина 16-разрядная)

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

2 Dimentius: у нас проц PPC440EPx, но думаю с твоим тоже сработает как надо (тем более, что в OCD Commandere PPC440EPx нет в списке поддерживаемых процов, так что брали PPC440GX и все арбайтен. А твой там есть)
Удачи
Dimentius
Пришлось на прошлой неделе вернуться к этому вопросу.
Скачал новый "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 сек.
Думаю, что подобным образом можно сделать на любой платформе.
Прикрепляю свой код для примера. Всем удачи.
Нажмите для просмотра прикрепленного файла
Gothard
Очень хорошее развитие идеи smile.gif, особенно с подробным примером a14.gif
У нас пока больше 2-х плат не было sad.gif - так что вопрос о скорости пока даже не возникал
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.