Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вход в Usb Bootloader у AT90USB162 без кнопки.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
QuickWitted
Дано процессор AT90USB162 с предпрошитым при поставке закрытым СТАНДАРТНЫМ бут блоком.
Пишу прошивки на асме (могу воспроизвести любую часть бут блока при необходимости...).

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

Вопрос: Как реализовать вход в бут блок без кнопки, по команде из прошивки?
(т.е. отключить все лишнее и прыгнуть кудато в бут блок)

ЗЫ: В интернете найти исходник стандартного бут блока от AT90USB162 у меня не вышло...
QuickWitted
Отвечаю сам себе, может кому пригодится....

описание бут блока в файле doc7618.pdf
но на сайте атмела сам бут блок последнее время не дают...
бут блок называется AT90USB162 USB Bootloader v1.0.5
Hex файл к нему называется bl_usb_162v105.a90


и для версии v1.0.5 работоспособен вот этот код

Код
;-----------------------------------------------------------------
;-------------------       BootVhodi          --------------------
;-----------------------------------------------------------------
; Вход в бутлоадер

    .if (ProcAT90USB162) ;

;AT90USB162 USB Bootloader v1.0.5 файл называется bl_usb_162v105.a90
.equ  SP_Vhod = 0x3C20 / 2; делать на 2, т.к. у нас в словах.

BootVhodi:
; rjmp    SP_Vhod; но до SP_Vhod не допрыгнуть - далеко
; поэтому сделаем вид, что мы были в процедуре и нам надо из неё выйти

    ldi    R16_Tmp1, low(SP_Vhod)        ; Код самопрограмматора в самом конце
    push    R16_Tmp1
    ldi    R16_Tmp1,high(SP_Vhod)
    push    R16_Tmp1
    ret

    .endif


разработанный на основании этого кода

Код
3000: 04 b7 в r16, 0x34 / / получить флаги
3002: 00 23 и R16, R16 / / если ни один набор
3004: 19. F0 breq +6 / / пропустить HWB проверить
3006: 4f 99 SBIC 0x09, 7 / / иначе пропустите следующий, если HWB = 0
3008: 0c 94 00 00 JMP 0x0 / / HWB = 1, нет загрузчика
300c: 0c 94 10 1e JMP 0x3c20 / / HWB = 0 или не установленными флагами
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.