Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автономный программатор
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
shemmer
Приветствую всех

В общем возникла необходимость в сборке автономного программатора
который прошивает однотипные контроллеры attiny26L
Я с алгоритмом SPI вроде разобрался, есть алгоритм считывания из флеш-памяти
(программа-прошивки должна распологаться во влеш-памяти контроллера-программатора)
А вот как разместить прошивку во Flash программатора не знаю.
Если вставить ее со свободного адреса в текстовом редакторе
то при загрузке программа пишет invalid data in flash. Может есть какой-нибудь способ размещения прошивки?
Работаю в CVAVR.
Помогите пожалуйста
zltigo
Цитата(shemmer @ Feb 7 2008, 20:36) *
В общем возникла необходимость в сборке автономного программатора
....
Помогите пожалуйста

http://www.triton-prog.ru/v5_4.html

Цитата
А вот как разместить..

Безумно избитая тема. Воспользуйтесь поиском.
GDI
Может стоит разместить прошивку во внешней дата-флешь, тогда можно организовать замену прошивки без перешивания МК самого программатора.
shemmer
Так вот как-раз хотелось бы без внешней памяти. Искал по форуму нашел что:
1. Можно подставить в hex файл программатора hex-файл прошивки убрав в первом строку :00000001FF
-Вопрос:нужно ли при этом менять адреса у файла-прошивки?
-Как указать при этом адрес начала прошивки?
Допустим после соединения я получаю:
:1001A80080ED97E00197F1F7A8953197C9F7089581 //последняя строчка прошивки программатора
:0E00000013C0FECFFDCFFCCFFBCFFACFF9CF60 //первая строчка прошивки-клона
:10000E00F8CFF7CFF6CF38C0F4CFF3CFF2CFF1CF92 //вторая строка
Адрес в программе я должен указать 000E?

2.Вариант. Получается что можно разместить массив с данными прямо в программе?
А как тогда указать адрес с которого этот массив должен храниться?
AHTOXA
Цитата(shemmer @ Feb 8 2008, 22:58) *
2.Вариант. Получается что можно разместить массив с данными прямо в программе?
А как тогда указать адрес с которого этот массив должен храниться?


Да, так проще.

Код
char __attribute__ ((progmem)) proshivka[] = {
23, 12, ....
}

чтение байтов:
Код
{
    u16 i;
    for(i = 0; i < sizeof(proshivka) / proshivka[0]; i++)
        program_byte(pgm_read_byte(&proshivka[i]));
}


Байты для прошивки брать из бинарника.
IgorKossak
Цитата(shemmer @ Feb 8 2008, 19:58) *
2.Вариант. Получается что можно разместить массив с данными прямо в программе?
А как тогда указать адрес с которого этот массив должен храниться?

Или если работаете в IAR, присоединить к программе программатора бинарный файл прошивки, как обсуждалось здесь.
ArtemKAD
Принимаешь, что программа которую надо зашить будет лежать с фиксированного адреса (скажем - 400h). Пишешь "прошивальщик" который по объему меньше 1кБ и располагаешь его в начале памяти. Прошивальщик компилируешь в Intel-hex. Программу которую надо прошить компилируешь в Intel-hex.
Ну а далее воспользуйся парой программ hex2bin и bin2hex и обычным копированием с добавлением.
У меня в частности .BAT-файл для записи двух программ (тестовой и основной) выглядит так:

--------summ_hex.bat---------------------
rem берет три hex-файла (загрузчик, программа и тест) и совмещает в одном hex-е
rem размер загрузчика - до 1кБ, программа пишется со смещением 1024 байт (1кБ), тест пишется со смещением 5120 байт (5кБ)
rem Служебные файлы - end.* (end.bin end.hex)

rem Создание пустого end.hex
del end.*
HEX2BIN.EXE end.hex
BIN2HEX.EXE END.BIN

rem Собственно совмещение
HEX2BIN.EXE /p255 /L8192 end.hex
HEX2BIN.EXE /M %1 end.bin
HEX2BIN.EXE /M /O1024 %2 end.bin
HEX2BIN.EXE /M /O5120 %3 end.bin
BIN2HEX.EXE END.BIN
--------summ_hex.bat---------------------

Набор комманд может отличаться для разных конвертеров...
В крайнем случае можно конвертировать два бинарника (прошивальщик размером 1кБ) и тупо сложить коммандой
COPY load.bin /B +prg.bin /B end.BIN /B
shemmer
Говорят что в IАR до какой-то версии не корректно работает линковщик. Или нормально?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.