Обновить
Комментарии 11
Видимо не все ограничения озвучены.
В примере конфига разрешена запись в Boot блок и в сектора (WRTB, WRT0-WRT1). Скорее всего описанный метод не сработает если эти бит(ы) будут в 0.
PicKit2 снят с поддержки лет 10 назад. Соответственно эта возможность «распространяется» на старые контроллеры. О новых он просто ничего не знает.
В новых контроллерах и структура защиты другая, только один общий бит CP, соответственно можно стереть только всё.

Отчасти вы правы, но можно в программе добавить новый контроллер. В статье использован PicKit3, хотя база данных называется так же как и во второй версии 3-я использует режим совместимости.

именно что режим совместимости — база берется от Pickit2, хоть используется PICkit3. Добавлять туда МК можно, но только если используются те же самые или схожие скрипты / алгоритм программирования. Проще тогда свой программатор написать, но это не отменяет того, что в более новых семействах подобный трюк не пройдет из-за отличий в логике CP бита.
p.s. ну и зная о такой уязвимости можно легко «починить» код от вычитывания. Например, в Boot считать CRC прошивки, при не совпадении — Reset. Тогда потенциально можно вычитать код, но только без Boot части.
CRC верное решение, однако тут могут возникнуть сложности с обновлениями устройства.
И да, в серии Q41 например CP бит уже «один на всех»! :)
CRC в бутлоадерах применяется часто, в микрочиповских примерах — еще и как (один из) триггер на вход в обновление. Каждое включение проверяется CRC. Если CRC не сходится — значит прошивка повреждена (или «что-то пошло не так», или в описываемом случае — стерт один из блоков Flash) — в этом случае ждем прилета обновления приложения. CRC предлагают интегрировать в каждую обновленную прошивку.

Плюсую!
Но… на второй фотке — "горизонт USB завален"! ;-)

не только. PICkit3 поддельный ))
Ага, сфотал, всё отключил, прибрал, добавил в статью… смотрю завален! ;)
… и PICKit3 с китайской площадки, древний жесть, ничего от Вас не утаишь! :)
Неа, там если я правильно помню UV Erasable Devices, One-Time-Programmable…
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.