Цитата(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 не срабатывает

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

В описании протокола для 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 - ХЗ

Какая логика у 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 - защищает всю память от чтения ... Сейчас проверю...
..................
Фиг вам

Проходит верификацию в любом случае...