Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADuC7xxx бутлоадер (встроенный)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Dir
Пришлось реализовать для производственных целей (прошивка ADuC7128) аналог ARMWSD по USB. Все вроде OK, а вот с защитой кода (через бутлоадер) проблемы. Описание этой команды в AN724 не понял как и пример там приведенный. Что там защищает от записи и что от чтения? Как, например, защитить от чтения всю память ADuC7128? У меня выдает версию лоадера C30.
Да и вообще с этими ADuCами не понятно кому задавать вопросы. Есть у них хоть какая-то техподдержка? А то ведь шикарный же МК. Не с точки зрения чисто ARMа, а с точки зрения насыщенности периферией: 12-разрядный 1Мsps АЦП, DAC, DDS, квадратурный энкодер, точная опора, PLD, масса 32-разрядных счетчиков с захватом и PWM. В новых 7-х ADuCах будет еще 24-битное дельта-сигма АЦП - короче пестня, а вот сопровождение ... sad.gif. Даже приличного англоязычного (не говоря уже о русскоязычном) форума не удалось найти. Кто нибуть общался с AD по микроконверторам? Дайте наводку.
KRS
Цитата(Dir @ Jan 18 2008, 04:47) *
с защитой кода (через бутлоадер) проблемы. Описание этой команды в AN724 не понял как и пример там приведенный. Что там защищает от записи и что от чтения? Как, например, защитить от чтения всю память ADuC7128?

Там действительно даташит кривой. С трудом понимается и не все.
Полезно еще почитать даташиты про заливку старых 8xx ( которые 51е) у них протоколы похожие.

Я когда то делал, прогу для заливки Aduc7020.
Что бы защитить весь флеш я выполняю 3 команды P
P 0x00000000 0x00 // strat sequence
P 0x0000F800 0x0F // read protection
P 0xDEADDEAD 0x01 // код что бы защиту нельзя было снять
Такая последовательность приводила к защите! После этого можно было только полностью стереть все.
У вас должна, она же сработать.
Dir
Цитата(KRS @ Jan 18 2008, 10:29) *
Там действительно даташит кривой. С трудом понимается и не все.
Полезно еще почитать даташиты про заливку старых 8xx ( которые 51е) у них протоколы похожие.

DS и AN не только кривые, а еще и ошибок куча. А DS на ADuC7128, похоже, вообще в спешном порядке слепили методом ^C^V из даташита на ADuC7028.
Цитата
Я когда то делал, прогу для заливки Aduc7020.
Что бы защитить весь флеш я выполняю 3 команды P
P 0x00000000 0x00 // strat sequence
P 0x0000F800 0x0F // read protection
P 0xDEADDEAD 0x01 // код что бы защиту нельзя было снять
Такая последовательность приводила к защите! После этого можно было только полностью стереть все.
У вас должна, она же сработать.

А вот для ADuC7128 не срабатывает sad.gif Хотя ни на что не ругается и 3 раза исправно отвечает ACK. А после этого так же исправно говорит, что верификация ВСЕЙ ПАМЯТИ выполняется успешно. И это якобы после защиты чтения sad.gif

В описании протокола для ADuC702x (AN724) эта последовательность из 3-х и более посылок приводится, но идеи как ее можно экстраполировать на ADuC7128 у меня нет.
Ну посмотрите, например, (AN724, rev.b, p.4) посылка

P 0x00000000 0x0F - устанавливает защиту записи страниц 0...3 (т.е. 4-х 512байтных блоков или 2кб)
P 0x00000200 0x0F - устанавливает защиту записи страниц 4...7 (еще 2кб)

логично предположить, что далее пойдет

P 0x00000400 0x0F - защита записи для памяти 0x1000...0x17FF
P 0x00000600 0x0F - защита записи для памяти 0x1800...0x1FFF
...
P 0x00003A00 0x0F - защита записи для памяти 0xF000...0xF7FF
... и (по аналогии с DS)
P 0x00003E00 0x0F - защита чтения для памяти 0x0000...0xF7FF

Однако такая аналогия не канает и защиту чтения для ADuC702x вызывает приведенная вами посылка
P 0x0000F800 0x0F - защита чтения для памяти 0x0000...0xF7FF. Какая посылка может выполнять ту же функцию у ADuC7128 - ХЗ sad.gif

Какая логика у ADI - трудно понять. А как к ним на аудиенцию пробиться - не знаю.


... хотя ... продолжая дальше сеанс телепатии и предположив, что в AN724 ошибка и защиту памяти 0х0800...0x0FFF выполняет не последовательность
P 0x00000200 0x0F (как в AN724)
а
P 0x00000800 0x0F (что на порядок более логично, т.к. прямо указывает на адрес)
тогда есть логика в том, что
P 0x0000F800 0x0F - защищает память на чтение у ADuC702x
а следовательно у ADuC7128
P 0x0000F800 0x0F - защищает нижние 62кб
P 0xF8000000 0x0F - защищает верхние 64кб
а
P 0xF800F800 0x0F - защищает всю память от чтения ... Сейчас проверю...

..................

Фиг вам sad.gif Проходит верификацию в любом случае...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.