реклама на сайте
подробности

 
 
> Вход в Usb Bootloader у AT90USB162 без кнопки.
QuickWitted
сообщение Apr 25 2012, 02:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Дано процессор AT90USB162 с предпрошитым при поставке закрытым СТАНДАРТНЫМ бут блоком.
Пишу прошивки на асме (могу воспроизвести любую часть бут блока при необходимости...).

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

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

ЗЫ: В интернете найти исходник стандартного бут блока от AT90USB162 у меня не вышло...

Сообщение отредактировал QuickWitted - Apr 25 2012, 04:52


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
QuickWitted
сообщение Apr 26 2012, 04:18
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596



Отвечаю сам себе, может кому пригодится....

описание бут блока в файле 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 или не установленными флагами


--------------------
Сайт с разработками http://www.mindrunway.ru/
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01334 секунд с 7
ELECTRONIX ©2004-2016