AVR109 самопрограмиране AVR, avr, програмиране
Ето превода на апнотата "AVR109: Използване на самопрограмиране на миниатюрни AVR и megaAVR устройства "[1]. Обхванати са следните въпроси:
• Примерен C код на програма, която сама програмира програмната памет
• Четене и писане на области с памет ФЛАШ и EEPROM
• Битове за защита от четене и запис (Lock Bits)
• Четене на битови предпазители (Fuse Bits)
• Как работи с програмиста с отворен код AVR911 [2]
• Съвместим с AVRProg
• Протокол, оптимизиран за ефективно програмиране
[Въведение]
Тази бележка за приложението описва как AVR може да използва инструкцията Store Store Memory (SPM) да се програмира. Обикновено този вид програмиране се използва за bootloaders. Примерната програма (фърмуер на микроконтролера, буутлоудър) се обменя чрез UART с компютър, работещ с AVR програмист с отворен код (АВРОСП) [2] от бележката за приложението AVR911. Това позволява FLASH и EEPROM програмиране без необходимост от външен програмист. Кодът на фърмуера също е съвместим с обвивката AVRProg (само за устройства, поддържани от AVRProg), която се предлага с AVR Studio (или Atmel Studio).
Програма буутлоудър записани в специален раздел за зареждане на паметта FLASH. Това е често срещана програма, която се справя с комуникацията с компютъра-хост и изпълнява както Flash, така и EEPROM програмиране. След програмирането можете да приложите защита на различни (незадължителни) нива, поотделно за зареждащата FLASH памет и приложенията FLASH памет. Това осигурява уникална и удобна възможност за програмиране на AVR, с разрешение за прилагане на защита на фърмуера.
[Инструкция за SPM]
За да разберем по-добре самопрограмирането на AVR, тук ще разгледаме основните принципи на организацията на паметта и как работи инструкцията SPM. FLASH паметта е разделена на 2 секции, едната от тях е секция Application, другата е секцията Boot Loader. Активирането на секцията на буутлоудъра се контролира от инсталирането на специални AVR предпазители.
Приблизително преводач: това разделяне на FLASH на секции не е налично за всички модели AVR, главно само за устройства ATmega.
Разделът за приложения съдържа основния код на приложението, докато разделът за зареждане съдържа действителния код за самопрограмиране. Инструкцията SPM може да се изпълни само от секцията за зареждане. Забележка: паметта на секцията за зареждане може също да се използва за нормален софтуер.
FLASH паметта също е разделена на страници (страница) с 32, 64 или 128 думи. Използването на страници с памет ще бъде обяснено по-късно. Целият пул памет, както раздели, така и приложения и раздели за зареждане, е разделен на страници. Например устройство с 8 килобайта FLASH и размер на страница от 32 думи (64 байта) ще има 128 страници. Организацията на паметта е показана на фиг. един.
Приблизително преводач: една дума съдържа 2 байта. Това се дължи на организацията на набора от основни инструкции на AVR RISC, като една дума обикновено съответства на една инструкция за асемблер на AVR. Пагинацията се дължи на характеристика на технологията FLASH памет.
Фигура: 1. Организация на AVR паметта.

Размерът на секцията Boot Loader може да бъде избран чрез програмиране на два бита предпазители BOOTSZx (тук x е 0 или 1). По този начин с тези предпазители можете да изберете една от 4 специфични опции. Предпазителите BOOTSZx могат да се променят чрез серийно програмиране или паралелно програмиране. Това изисква специален ISP или HVSP програмист [3]. За подробности относно такова програмиране вижте листа с данни за устройството.
Възможност за четене и писане