Comments 37
Ясен перец, что если у вас виснет контроллер, то подключаться нужно только при сигнале сброса. Но если вы фьюзы правильно пропишете, то и это не поможет.
Чтобы убить возможность прошивки STM32, нужно убить одну из ножек PA14/PA15 или PA9/PA10 (чтобы нельзя было прошить через UART бутлоадер), PA11/PA12 (чтобы нельзя было прошить через DFU) и PB6/PB7 (чтобы нельзя было через I2C прошить); ну и, само-собой, SWD/JTAG.
Лично я предпочитаю работать через DFU с теми МК, у которых он есть. Если же нет, то либо бутлоадер на UART1, либо SWD (но SWD крайне редко, т.к. случаи, когда используемые им ноги ни для чего не нужны — чуть ли не единичны). В Makefile я добавляю минимум три цели для прошивки: DFU, бутлоадер и SWD.
P.S. А статья сама по себе яйца выеденного не стоит, т.к. содержит общеизвестную информацию. Это как написать статью «почему Солнце всходит на востоке».
Его вообще невозможно окирпичить! Даже если у автора руки совсем из задницы и он залочит прошивку, все равно можно перешить МК.
Вот зашел сюда прочитать именно это! Сталкивался с контроллерами, на которых сожжено было буквально половина ног и прошивка была криво залита, и даже при этом его удавалось перепрошить и поднять.
Это «окирпичивание» соблюдается при осознанном действии, не знаю, что необходимо сделать, чтобы случайно включить Level 2 protection.
На f103 вроде нет
When RDP level 2 is activated, all protections provided in Level1 are active and the chip is fully protected. The RDP option byte and all other option bytes are frozen and can no longer be modified. The JTAG, SWV (single-wire viewer), ETM, and boundary scan are disabled.
When booting from Flash memory, the memory content is accessible to user code. However, booting from SRAM or from system memory bootloader is no more possible.
This protection is irreversible (JTAG fuse), so it’s impossible to go back to protection levels 1 or 0.
Работает только самопрограммирование, но Option бит не снимается.
Ключевые слова — Level 2 protection. Это есть у ВСЕХ STM32 кроме STM32F1xx.
Берёте STM32L0xx, STM32L1xx, STM32F2xx, STM32F3xx и т.д., включаете Level 2 protection в RDP и у вас отключаются SWD/JTAG и System boot memоry — как будете раскирпичивать?
Была статья в сети с исследованием. Вскрываем чип, ильтрафиолетом светим кристалл :) очень "простой" метод.
Отучаемся говорить за всех. Это у вашего допотопного f103 нет фьюзов.
А у G0xx их фигова туча. И окирпичить его как нефиг делать
Если очень хочется, можно и залоченный контроллер разлочить.
Автор, твоя статья запоздала лет так на 10. В G серии пин boot инженеры догадались развести на ногу swd. И… опаньки.
Продублирую: подайте на Boot0 (он же SWCLC, он же PA14) высокий уровень, подключитесь к UART1 (PA9, PA10) и действуйте, как описано во второй части публикации. У Вас все получится.
В самый раз было начинать читать мануалы. И метод RTFM сработал!Дополню эту замечательную прописную истину.
Если читать мануалы (включая их обновления и Errata) до того, то будет ещё больше пользы: освежаешь в памяти подзабытое, открываешь для себя то о чем даже не подозревал, обращаешь внимание на детали (которые порой имеют решающее значение), видишь реальный опыт применения другими.
Затраты времени на чтение с лихвой окупаются отсутствием необходимости рыскать по интернету в поисках решения возникших проблем. Плюс к этому появляется возможность задействовать описанные в мануале возможности по максимуму.
Это реальный profit, рекомендую!
В отечественных миландрах, 1986ВЕ и 9х, и 1, и 3, примерно ровно два этих метода и работает, по крайней мере я именно их и нашёл. Либо под резетом запускать, либо, если не помогает, припаивайся свистком к лапкам уарта, перетыкивай пины бутов. В итоге я такими способами не оживил только одну единичку.
Это для знаменитых китайских свистков ST-Link. И вообще, перешить в JLink и радоваться.
Как-то так, помнится.
Как «раскирпичить» STM32