ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
1382470 Топик полностью
RxTx (14.12.2023 06:54, просмотров: 272) ответил mrVladimir на Здравствуйте. Имеется плата от частотного привода с установленным на ней контроллером CY8C5868AXI-LP035 (CYPRESS). С помощью "IAR EWARM" и программатора "PE MICRO Multilink Unuversal FX" удается подключиться по SWD в режим DEBUG(без DOWNLOAD). Можно остановить программу, запустить программу, просмотреть регистры, области памяти. Появилась потребность попробовать сохранить информацию из Flash. Для этого в режиме DEBUG выбираю DEBUG->memory->save и указываю адреса
Ну сначала большой глобальный вопрос, чем ты занимаешься. В подавляющем большинстве случаев горит какая-то электроника. Зачем ты полез в прошивку микроконтроллера? Какой был план? :) 

Я бы в прошивку полез в самом последнем случае. А если бы и полез, то зарисовал бы схему, поставил бы панельку и эксперементировал на кошках с новым чистым МК.

1. Как мне кажется, програматор (или софт) на самом деле ничего у тебя не прошивал когда ты думал что ты его якобы "зашиваешь". И после того как ты стер микроконтроллер, он его и не зашивает (как и не зашивал).

Исходить надо из этого.

2. Твоя задача заставить FLASH память прошиваться.

3. Только перед этим надо выяснить, а считал ли ты реально данные в *.hex файл? Наличие самого файла пока что ни о чем не говорит. Внутри могут быть или нули или мусор.

Выяснение что внутри *.hex это важный шаг. Без этого дрыгаться дальше не вижу смысла.

4. Как понять что внутри *.hex? Если твой *.hex файл формата Intel HEX (смотри англ. википедию с переводчиком) то это текстовый файл в котором построчно в текстовом виде закодированы адрес куда шить, содержимое с контрольной суммой в конце строки. Файл соответственно, можно посмотреть либо IDA disassembler либо тупо в любом текстовом редакторе типа "notepad", хоть блокнот винды, хоть Notepad++ хоть что угодно. Да вот только просмотр HEX глазами мало что даёт. Лучшее решение, загрузить в просмотрщик. Например утилиты Segger FLASH устанавливается вместе с набором бесплатного софта от Segger JLink.

По-хорошему, тебе надо было сразу считать 256кб FLASH-памяти в *.BIN файл (это просто фрагмент памяти) чтобы сейчас не париться. Но если у тебя только *.hex то либо смотри Segger FLASH тулзой, либо *.hex надо сконвертировать в *.bin. с тем чтобы посмотреть бинарник "глазами" (я вообще смотрю бинарники просто FAR'ом, так как по F3 он позволяет просматривать любые бинарники). Что это даст? Файл прошивки от ARM'а имеет характерную структуру, вначале у него лежит стартовый адрес куда он переходит при сбросе и легко узнаваемая таблица "векторов" (т.е. адресов) прерываний. Потом идёт код.

Либо делай это всё сам, либо кидай *.hex сюда и попроси народ это сделать, все равно FLASH от хз пойми какого китайского станка (который ты не назвал) никому не впился. Мало ли, у кого-то найдется время поковыряться.

Если внутри *.hex всё хорошо, то:

5. Для экспериментов у тебя странный набор инструментария. Почему "PE MICRO Multilink Unuversal FX"? Никто в нем не разбирается. Почему IAR EWARM? Я бы понял еще фирменный набор утилит от CYPRESS... Обычно юзают какой-то набор инструмента, наиболее тут просится Segger (JLink + его софт). JLink покупается на али китайский только версии какой-то из более-менее последних моделей (смотреть надо на сеггере какие версии поддерживают CYPRESS'ы). У SEGGER может быть не заявлена напрямую поддержка чипа. Но дело в том что CY8C5868AXI-LP035 (CYPRESS) это обычный ARM Cortex M3, а у них универсальный протокол, поэтому в деле сдернуть-зашить прошивку он может быть и пойдет если выставить примерно такой же камень.

6. Проблема с не-прошивкой скорее всего заключена либо в "PE MICRO Multilink Unuversal FX", либо в IAR EWARM, либо в их связке. Скорее всего JLINK с тулзой Segger FLASH (при условии что внутри *.hex не мусор) сделают дело.