Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Bootloader и CVAVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
impuls-v
Несколько раз видел на форуме такой вопрос да и сам спрашивал как скрестьть ежа и ужа ( ну т.е. как на CVAVR написать Bootloader).
Так как ответов толковых небыло то коечто написал тспользуя avr109 на IAR и библиотеки из WinAvr.

Но осталось несколько вопросов
1) где можно прочитать информацию о структуре hex файла.
Последняя строка вида :00000001FF как я понял обозначает конец файла.
А последний байт каждой строки это что контрольныя сумма. А первые четыре байта это адрес?
Данный вопрос возникает так как надо написать программу со стороны винды.
И такой вопрос можно ли соеденить приложение и загрузчик в один файл, вроде бы можно удалить последнюю строку :00000001FF и добавить информ из загрузчика, ни кто не пробовал?

2)Плоховат в английском поэтому не допонял по поводу бит защиты LB и BLB.
BL влияют только на программирование или на загрузчик тоже ? т.е. если я поставлю защиту от чтения и записи программ, это защита будет работать только на програмирование при помощи программатора или на программирование при помощи загрузчика тоже.
и по поводу BLB - если 11 то нет ограничений это вроде понятно, если BLB12:11 =00 то я не могу модифицировать загрузчик и не могу из программы прочитать его, а вот остальные режимы не допонял.
Как лучше выставить их для защиты программ.

3) Как сказать компилятору чтобы он разместил подпрограмму по заданному адресу, в WinAvr это делается командой "#org адрес", а в CVAVR нельзя?
SasaVitebsk
Цитата(impuls-v @ Jan 8 2007, 15:40) *
1) где можно прочитать информацию о структуре hex файла.


Где то у меня была, но не нашёл. Высылаю отрывок из моего программатора. По нему попробуй разобраться. Очень давно писал и не очень грамотно. Не ругаться! smile.gif

Код
           repeat
            readln(FileH,SAnsw);
            if SAnsw[1]<>':' then begin
             res:=MessageDlg(' Файл не "Intel Hex"! Первый символ не ":"!',
              MtError,[mbOK],0);
             CloseFile(FileH);
             goto ExOpen;
            end;
            bh:=SAnsw[2]+SAnsw[3];
            count:=lo(RHex(bh));
            sum:=count;
            bh:=SAnsw[4]+SAnsw[5]+SAnsw[6]+SAnsw[7];
            adr:=RHex(bh);
            sum:=lo(sum+lo(adr)+hi(adr));
            bh:=SAnsw[8]+SAnsw[9];
            tzap:=lo(RHex(bh));
            sum:=lo(sum+tzap);
            j:=10;
            for i:=1 to count do begin
             bh:=SAnsw[j]+SAnsw[j+1];
             j:=j+2;
             d:=lo(RHex(bh));
             sum:=lo(sum+d);
             WData(adr,d);
             adr:=adr+1;
            end;
            if adr>maxadr then maxadr:=adr;
            sum:=lo(-sum);
            bh:=SAnsw[j]+SAnsw[j+1];
            d:=lo(RHex(bh));
            if d<>sum then begin
             res:=MessageDlg(' Ошибка контрольной суммы в строке '+
             IntToStr(line)+'!',MtError,[mbOK],0);
             CloseFile(FileH);
             goto ExOpen;
            end;
            line:=line+1;
           until(eof(FileH) or (tzap=1));
           adr:=maxadr;
           CloseFile(FileH);
           {$I+}
WHALE
SasaVitebsk А как быть тем,кто Паскаль не знает?У вас в текстовом виде нет?
jorikdima
Цитата(WHALE @ Jan 8 2007, 22:02) *
SasaVitebsk А как быть тем,кто Паскаль не знает?У вас в текстовом виде нет?

Между Паскалем и С не такая большая разница, чтоб не понять смысл wink.gif
plan
Цитата(impuls-v @ Jan 8 2007, 15:40) *
Несколько раз видел на форуме такой вопрос да и сам спрашивал как скрестьть ежа и ужа ( ну т.е. как на CVAVR написать Bootloader).

Вот к cvavr загрузчикНажмите для просмотра прикрепленного файла
impuls-v
SasaVitebsk а не сможете подкинуть больший кусок из программы, есть пару не понятных моментов.

И еще вопрос не видел ктонибудь примера построения параллельного программатора.
SpiritDance
по поводу hex
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.