Как программировать LOCK FUSE для Atmega328P-PU

Тема в разделе "Микроконтроллеры AVR", создана пользователем VitalyS, 21 июн 2016.

  1. VitalyS

    VitalyS Нуб

    Поясните пожалуйста как программировать LOCK FUSE для Atmega328P-PU и на что они влияют, если можно с понятными примерами.

    Доброго всем дня.
    Что я знаю про лок фьюзы:
    1. Их всего шесть
      LOCKBIT1 (LB1)
      LOCKBIT2 (LB2)
      BOOTLOCK01 (BLB01)
      BOOTLOCK02 (BLB02)
      BOOTLOCK11 (BLB11)
      BOOTLOCK12 (BLB12)
      установка фьюз влияет на работу SPM(STORE PROGRAMM MEMORY) и LPM(LOADER PROGRAMM MEMORY)
    2. Программирование LB1 и LB2 запрешает/разрешает чтение/запись в EEROM или FLASH память микроконтроллера.
    3. Биты:
      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
     
    Последнее редактирование: 21 июн 2016
  2. AlexU

    AlexU Гуру

    Из официальной доки (советую доку брать с оф.сайта, а не с непонятных источников):
    BLB01: "1" -- разрешена запись в секцию приложения (Application Section), "0" -- запрещена запись.
    BLB02: "1" -- разрешено чтение секции приложения кодом, расположенным в секции бутлоадера (т.е. Boot Loader'у разрешено чтение памяти приложения), "0" -- бутлоадеру запрещено читать память приложения +, если таблица прерываний размещена в секции бутлоадера, то при выполнении кода приложения прерывания будут запрещены.
    Далее секции приложения и бутлоадера меняются местами:
    BLB11: "1" -- разрешена запись в секцию бутлоадера (Boot Loader Section), "0" -- запрещена запись.
    BLB12: "1" -- разрешено чтение секции бутлоадера кодом, расположенным в секции приложения (т.е. приложению разрешено чтение памяти бутлоадера), "0" -- приложению запрещено читать память бутлоадера +, если таблица прерываний размещена в секции приложения, то при выполнении кода бутлоадера прерывания будут запрещены.
    Защита прошивки от чтения (защита от клонирования) -- больше на ум ничего не приходит. Но для этого лучше использовать биты LB1 и LB2.
     
  3. VitalyS

    VitalyS Нуб

    По ссылке я и выложил даташит с официального сайта.
    Я встречал в сети информацию о том, что биты
    BOOTLOCK01 (BLB01)
    BOOTLOCK02 (BLB02)
    BOOTLOCK11 (BLB11)
    BOOTLOCK12 (BLB12)
    можно использовать в схемах, когда применяется самопрограммирование МК, но нигде не видел таких примеров и не понимаю для чего это можно применить.
     
    Последнее редактирование: 21 июн 2016
  4. AlexU

    AlexU Гуру

    Я изложил за что отвечает каждый бит, привёл пример для чего можно использовать. Так же хочу напомнить, что все локбиты стираются при полном стирании памяти МК, что приводит к полному разблокированию контроллера.
     
  5. ostrov

    ostrov Гуру

    Что же там за сверхсекретная программа? Я вот считаю, что если кто то в состоянии считать содержимое памяти и дизассемблировать его, то ему проще написать эту программу заново.
     
  6. AlexU

    AlexU Гуру

    Для клонирования устройства в дизассемблировании прошивки нет необходимости.
     
    ostrov нравится это.