Поясните пожалуйста как программировать LOCK FUSE для Atmega328P-PU и на что они влияют, если можно с понятными примерами. Доброго всем дня. Что я знаю про лок фьюзы: Их всего шесть LOCKBIT1 (LB1) LOCKBIT2 (LB2) BOOTLOCK01 (BLB01) BOOTLOCK02 (BLB02) BOOTLOCK11 (BLB11) BOOTLOCK12 (BLB12) установка фьюз влияет на работу SPM(STORE PROGRAMM MEMORY) и LPM(LOADER PROGRAMM MEMORY) Программирование LB1 и LB2 запрешает/разрешает чтение/запись в EEROM или FLASH память микроконтроллера. Биты: BOOTLOCK01 (BLB01) BOOTLOCK02 (BLB02) BOOTLOCK11 (BLB11) BOOTLOCK12 (BLB12) BLB01, BLB02 определяет режим защиты прикладной программы (SPM), а вторая пара BLB11, BLB12 – режим защиты секции загрузчика (LPM). Так вот, сам вопрос, если кто может, объясните подробнее о битах: BOOTLOCK01 (BLB01) BOOTLOCK02 (BLB02) BOOTLOCK11 (BLB11) BOOTLOCK12 (BLB12) В даташите инфу на английском нашел, но мне не очень понятно как это можно применять в прикладных решениях. Смотрел полную версию дадашита на 266 странице: https://drive.google.com/open?id=0B81RZjqtdxZGZll5ZTBzTUpHNnM
Из официальной доки (советую доку брать с оф.сайта, а не с непонятных источников): BLB01: "1" -- разрешена запись в секцию приложения (Application Section), "0" -- запрещена запись. BLB02: "1" -- разрешено чтение секции приложения кодом, расположенным в секции бутлоадера (т.е. Boot Loader'у разрешено чтение памяти приложения), "0" -- бутлоадеру запрещено читать память приложения +, если таблица прерываний размещена в секции бутлоадера, то при выполнении кода приложения прерывания будут запрещены. Далее секции приложения и бутлоадера меняются местами: BLB11: "1" -- разрешена запись в секцию бутлоадера (Boot Loader Section), "0" -- запрещена запись. BLB12: "1" -- разрешено чтение секции бутлоадера кодом, расположенным в секции приложения (т.е. приложению разрешено чтение памяти бутлоадера), "0" -- приложению запрещено читать память бутлоадера +, если таблица прерываний размещена в секции приложения, то при выполнении кода бутлоадера прерывания будут запрещены. Защита прошивки от чтения (защита от клонирования) -- больше на ум ничего не приходит. Но для этого лучше использовать биты LB1 и LB2.
По ссылке я и выложил даташит с официального сайта. Я встречал в сети информацию о том, что биты BOOTLOCK01 (BLB01) BOOTLOCK02 (BLB02) BOOTLOCK11 (BLB11) BOOTLOCK12 (BLB12) можно использовать в схемах, когда применяется самопрограммирование МК, но нигде не видел таких примеров и не понимаю для чего это можно применить.
Я изложил за что отвечает каждый бит, привёл пример для чего можно использовать. Так же хочу напомнить, что все локбиты стираются при полном стирании памяти МК, что приводит к полному разблокированию контроллера.
Что же там за сверхсекретная программа? Я вот считаю, что если кто то в состоянии считать содержимое памяти и дизассемблировать его, то ему проще написать эту программу заново.