Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MEGA8 самопрограммирование
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Juk1976
Задача - записать через СОМ-порт данные в память программ. blush.gif

Как я читал - можно небольшой кусок бросить в BOOT и он каким-то образом сможет программировать (писать) FLASH. В нормальной программе выскакивает ошибка TA0015 - запрет записи в FLASH. huh.gif

Один из вариантов - в памяти две программы. одна работает нормально, другая - стартует по команде по COMу и может ДОписывать данные в FLASH (место есть).

Может я не так понял принцип работы BOOT программы????? cranky.gif a14.gif

Кто сталкивался с таким - плиззззз. unsure.gif

Или - это не возможно???? laugh.gif

Не хочется ЗАКАЗЧИКУ давать ещё и программатор (тем более, что COM выведен на внешний корпус). EEPROM не надёжный. Работаю без внешней обвески по контролю питания. BOD много тянет. w00t.gif

cheers.gif cheers.gif cheers.gif
Ёрген
Не совсем понял, в чем вопрос, но примерно следующее:
имеется основная программа, расположенная начиная с 0 адреса (RWW Section по терминологии Atmel). Она писать во FLASH не может. При выполнении некоторого условия (приход команды программирования по COM) управление передается программе загрузчика (BootLoader), которая расположена в верхних адресах (NRWW Section). Она производит программирование и возвращает управление главной программе.

Часто делают наоборот, при сбросе управление передается загрузчику, при выполнении некоторого условия он продолжает работу, иначе передает управление основной программе. Так, я думаю, более правильно и безопаснее (например, выключили свет при записи, придется разбирать устройство и программировать на программаторе, т. к. основная программа испорчена и управление загрузчику не происходит). Загрузчик мы испортить не можем, т. к. он сам в себя не пишет.

Исходные данные для работы: ДатаШиты на AVR (раздел Boot Loader Support (смотрю ATmega128)), Appnotes с сайта Atmel, http://www.ya.ru.

Обрати внимание на соответствующие Fuse.
Proton
Прежде всего советую посмотреть AVR109 там детально описан процесс самопрограммирования.
А конкретные примеры здесь http://www.atmel.ru/Spec/Loader.htm
и на avrfreaks.net в разделе akademy под названием megaloader. Только сначала там нужно зарегистрироваться.
TriD
Как выше было написано, даташит на любой микроконтроллер AVR содержит достаточно информации для написания своего загрузчика (даже не вникая сильно в процесс smile.gif). В свое время мне помог в этом деле Megaloader (дистрибутив лежит в приложении). В папке, куда он будет устанолен, находятся примеры загрузчиков для разных камней (на С).

К сожалению, файлик не цепляется
IgorKossak
Судя по выдаваемой ошибке автор темы не понял как надо писАть во Flash.
Это делается не присвоением значения некоторой переменной (прямо или через указатель) лежащей во Flash памяти, а при помощи инструкции SPM и целого ряда нетривиальных процедур.
В даташите на МК это подробно и с примерами описано.
Применяю этот метод уже давно. И даже с шифрованием дампа, чтобы не раскрывать заказчику секретов.
Работает как часы!
Juk1976
Спасибо за ответы. cheers.gif
буду пробовать smile3046.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.