Протокол AVR109
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Протокол AVR109
Здрасе!
Кто-нибудь в курсе где можно нарыть нормальную доку для реализации данного протокола. AVR109: Self Programming не предлагать. Там про протокол всего четыре строчки и таблица команд. Мне нужен сам алгоритм что и за чем пихать загрузчику.
Кто-нибудь в курсе где можно нарыть нормальную доку для реализации данного протокола. AVR109: Self Programming не предлагать. Там про протокол всего четыре строчки и таблица команд. Мне нужен сам алгоритм что и за чем пихать загрузчику.
Я не волшебник, я только лечусь
- Реклама
Re: Протокол AVR109
Это по "самопрограммированию" что-ли вопрос?
Так там надоть даташиты внимательно вычитывать.

Так там надоть даташиты внимательно вычитывать.
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Протокол AVR109
Именно, по самопрограммированию.
Вот тока гидэ эти датащит их богу душу мать искать. Нашел два, но там только одно, мол AVRProg и все проблемы решены. А мне нужно свою написать программулину. Загрузчик я уж допилил и он работает, осталось только объяснить как ему по RS-485 общаться, а вот AVRProg c RS-485 не дружит. Вот мне и нужно знать какие команды в какое время пихать загрузчику.
Вот тока гидэ эти датащит их богу душу мать искать. Нашел два, но там только одно, мол AVRProg и все проблемы решены. А мне нужно свою написать программулину. Загрузчик я уж допилил и он работает, осталось только объяснить как ему по RS-485 общаться, а вот AVRProg c RS-485 не дружит. Вот мне и нужно знать какие команды в какое время пихать загрузчику.
Я не волшебник, я только лечусь
Re: Протокол AVR109
Эти данные вычитываются в даташите на конкретный МК.
В соответствующем разделе Self-Programming the Flash.
Описываются все касающиеся команды SPM на данном МК особенности.
А даташиты лежат у атмела на сайте.

А вот чего касательно самодельного загрузчика... То тут уж "простор для творчества" - ищите протокол к программе, а не к железу.
Или свою прожку под ПК писать надо (на чем умеючи).

В соответствующем разделе Self-Programming the Flash.
Описываются все касающиеся команды SPM на данном МК особенности.
А даташиты лежат у атмела на сайте.
А вот чего касательно самодельного загрузчика... То тут уж "простор для творчества" - ищите протокол к программе, а не к железу.
Или свою прожку под ПК писать надо (на чем умеючи).
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Протокол AVR109
Именно. Загрузчик работает прекрасно с AVRProg. Мне как раз нужен алгоритм от AVRProg, а для ПК написать это уже дело десятое. Было бы чего.
Я не волшебник, я только лечусь
- Реклама
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Протокол AVR109
Очень странно.
Как минимум к 109-му документу идёт архив с исходником, в main.c расписаны принимаемые команды и отсылаемые данные.
Далее есть док 911:
http://microsin.net/programming/AVR/avr911-avrosp.html
Там идёт архив с исходниками загрузчика на ++. Видно какие команды отсылаются и что ожидается.
То что нет красивой картинки в виде блок-схемы или чего аналогичного - это конечно недостаток. Но разве это нас остановит?
Как минимум к 109-му документу идёт архив с исходником, в main.c расписаны принимаемые команды и отсылаемые данные.
Далее есть док 911:
http://microsin.net/programming/AVR/avr911-avrosp.html
Там идёт архив с исходниками загрузчика на ++. Видно какие команды отсылаются и что ожидается.
То что нет красивой картинки в виде блок-схемы или чего аналогичного - это конечно недостаток. Но разве это нас остановит?
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Протокол AVR109
В том то и дело что команды известны, но вот незадача, какая последовательность их передачи. Например из мануала это не работает.
The sequence for programming is as follows:
AVRprog :3 'ESC': flushing the UART buffers.
AVRprog :'T' and '60' to tell programmer that
ATmega161 is selected
AVRprog :'P' to enable programming
AVRprog :'e' to erase application area
AVRprog :'P' to enable programming
AVRprog :'A' to set address=0x0000
AVRprog :'A' to set address to start programming
from
AVRprog :'c' to send low data byte
AVRprog :'C' to send high data byte
Ладно, буду капать.
The sequence for programming is as follows:
AVRprog :3 'ESC': flushing the UART buffers.
AVRprog :'T' and '60' to tell programmer that
ATmega161 is selected
AVRprog :'P' to enable programming
AVRprog :'e' to erase application area
AVRprog :'P' to enable programming
AVRprog :'A' to set address=0x0000
AVRprog :'A' to set address to start programming
from
AVRprog :'c' to send low data byte
AVRprog :'C' to send high data byte
Ладно, буду капать.
Я не волшебник, я только лечусь
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: Протокол AVR109
Например, в этом AVROSP911 коммуникация начинается следующим образом:
Там всего несколько классов, которые просмотреть надо. На крайняк открыть проект в Devcpp, собрать и протрассировать до выяснения всех интересующих подробностей.
Код: Выделить всё
string AVRProgrammer::readProgrammerID( CommChannel * _comm )
{
string id( "1234567" ); // Reserve 7 characters.
if( _comm == NULL )
throw new ErrorMsg( "NULL pointer provided for communication channel!" );
/* Synchonize with programmer */
for( int i = 0; i < 10; i++ )
_comm->sendByte( 27 ); // Send ESC
/* Send 'S' command to programmer */
_comm->sendByte( 'S' );
_comm->flushTX();
/* Read 7 characters */
for( long i = 0; i < id.size(); i++ )
{
id[i] = _comm->getByte();
}
return id;
}- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Протокол AVR109
Да. Как раз при подаче загрузчику команды S он отвечает переводом каретки и готов работать. Жаль что нет просто описания протокола, буду разбирать этот код. Спасибо за помощь.
Я не волшебник, я только лечусь
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Протокол AVR109
Вкурил я в этот протокол. Исходники от AVR911 не подошли. Скомпилировать проект не получилось, постоянно какие-то ошибки. Плюнул и пошел по пути наименьшего сопротивления. Создал новый проект для МК в котором присутствует только функция main() и все. Собрал проект и получившейся HEX отправил в МК. А в момент передачи данных прицепился анализатором к UART. Вычленил все байты и разложил по полочкам. Протокол оказался простым как пробка. Но все таки возник один вопрос который пока объяснить не могу. Вопрос следующий: Команда запуска загрузчика во флеш выглядит следующим образом. B(0x42), 0(0x00), @(0x40), F(0x46) Первый и последний байты понятны, B это старт загрузки, а F то что во влеш. А что означают средние два байта 0@?
___________________________
Все, тему можно закрывать. Разобрался. Всем спасибо за помощь.
___________________________
___________________________
Все, тему можно закрывать. Разобрался. Всем спасибо за помощь.
___________________________
Я не волшебник, я только лечусь
Re: Протокол AVR109
Да протокол хош "с потолка" взять можно.
Принцип следующий
запускаем "волшебным стечением обстоятельств" начальный загрузчик в МК
далее тот загрузчик рутинно выполняет подкачку фрагмента нужного кода в ОЗУ
проверяет его достоверность
выдает квитанцию устройству, посылающему код о заглатывании очередной порции
запускает блок перепрошивки принятым содержимым и
по окончании "усваивания" данного фрагмента кода
выдает посылающему код квитанцию на разрешение дальнейших действий.
А как то все организовать - творческая инициатива пользователя!

Принцип следующий
запускаем "волшебным стечением обстоятельств" начальный загрузчик в МК
далее тот загрузчик рутинно выполняет подкачку фрагмента нужного кода в ОЗУ
проверяет его достоверность
выдает квитанцию устройству, посылающему код о заглатывании очередной порции
запускает блок перепрошивки принятым содержимым и
по окончании "усваивания" данного фрагмента кода
выдает посылающему код квитанцию на разрешение дальнейших действий.
А как то все организовать - творческая инициатива пользователя!
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Протокол AVR109
BOB51, Вы случаем не курнули?
Я конкретно писал что у меня загрузчик конкретно заточен под AVRProg, а там только протокол AVR109.
Я не волшебник, я только лечусь
- Jman
- Мучитель микросхем
- Сообщения: 414
- Зарегистрирован: Ср янв 26, 2011 13:43:30
- Откуда: С того берега моря
- Контактная информация:
Re: Протокол AVR109
Привет, скажите пожалуйста. Я тут загрузчик пробую откомпиллировать под Atmega16. Подскажите, в дефайнах я верно все указал, меня смущает строчка с pagesize и boot size?
Еще такой момент. Пробую записать ХЕКС через AVROSP II, при верификации не сходятся адреса и соответственно программа не работает. Прогресс прошивки идет и тд...
Код: Выделить всё
/* definitions generated by preprocessor, copy into defines.h */
#ifndef PPINC
#define _ATMEGA16 // device select: _ATMEGAxxxx
#define _B2048 // boot size select: _Bxxxx (words), powers of two only
#ifdef __ICCAVR__
#include "iom16.h"
#endif
#if __GNUC__
#include <avr/io.h>
#endif
/* define pin for enter-self-prog-mode */
#define PROGPORT PORTB
#define PROGPIN PINB
#define PROG_NO PB0
/* baud rate register value calculation */
#define CPU_FREQ 8000000
#define BAUD_RATE 9600
#define BRREG_VALUE 51
/* definitions for UART control */
#define BAUD_RATE_LOW_REG UBRRL
#define UART_CONTROL_REG UCSRB
#define ENABLE_TRANSMITTER_BIT TXEN
#define ENABLE_RECEIVER_BIT RXEN
#define UART_STATUS_REG UCSRA
#define TRANSMIT_COMPLETE_BIT TXC
#define RECEIVE_COMPLETE_BIT RXC
#define UART_DATA_REG UDR
/* definitions for SPM control */
#define SPMCR_REG SPMCSR
#define PAGESIZE 128
#define APP_END 28672
//#define LARGE_MEMORY
/* definitions for device recognition (Atmega16)*/
#define PARTCODE
#define SIGNATURE_BYTE_1 0x1E // 0x1E
#define SIGNATURE_BYTE_2 0x94 // 0x95
#define SIGNATURE_BYTE_3 0x03 // 0x04
/* indicate that preprocessor result is included */
#define PPINC
#endif
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]


