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

Хочется чегото более удобного, например по 1му проводу.

А то сейчас приходится пользоваться тиньками в дип корпусе и перетыкивать программатор<->устройство.
GDI
На avrfreaks видел такой проект, только повторно найти мне его не удалось, может у вас получится.
forever failure
Сериальный программатор считается использовать [CENSORED] ? -Это раз.
О каких тиньках идёт речь, некотроые их виды имеют только HV режим программирования, так что кроме как через панельку - больше никак. - Это два.
Ну и сколько кода отъест более-менее вменяемый загрузчик, и сколько останется под приложение, если общий объем флэша 1 кБ ? - Это три.
pt200
Цитата(forever failure @ Jun 25 2009, 10:56) *
Сериальный программатор считается использовать фпадлу по морально-этическим-религиозным соображениям ? -Это раз...

ISP чтоли?
Если да то 4 пина из 6 доступных использовать проблематично становится + разьем на 5-6 пин тоже немаленький
Цитата(forever failure @ Jun 25 2009, 10:56) *
...О каких тиньках идёт речь, некотроые их виды имеют только HV режим программирования, так что кроме как через панельку - больше никак. - Это два...

13, 25 ... 8ми ногие корпуса. А как выйдет 10я так вообще караул будет все ноги под программирование smile.gif
Цитата(forever failure @ Jun 25 2009, 10:56) *
...Ну и сколько кода отъест более-менее вменяемый загрузчик, и сколько останется под приложение, если общий объем флэша 1 кБ ? - Это три.

Вменяемость разная бывает. Навскидку подозреваю что и в 256 байт может влезть.
ARV
вот мне давали ссылку http://caxapa.ru/thumbs/135932/AVRootloader_v2.0.zip
если отключить криптографию и всякие навороты типа чтения/записи EEPROM, то компилируется в 340 байт кода - 33,2% от памяти attiny13. поддерживается прошивка по одной линии. UART программный. всего поддерживается очень много МК. рекомендую smile.gif
для нормальной меги я проверял - работает отлично smile.gif

P.S. да, может подкатить небольшая трабла: т.к. используется UART, то желателен кварц для тактирования, а у тини не так много ног для этого. а с тактированием от встроенного RC могут быть проблемы.
dimka76
Цитата(pt200 @ Jun 25 2009, 11:06) *
ISP чтоли?
Если да то 4 пина из 6 доступных использовать проблематично становится + разьем на 5-6 пин тоже немаленький

13, 25 ... 8ми ногие корпуса. А как выйдет 10я так вообще караул будет все ноги под программирование smile.gif

Вменяемость разная бывает. Навскидку подозреваю что и в 256 байт может влезть.


у тинек есть интерфейс debug-WIRE, он однопроводный
pt200
Цитата(dimka76 @ Jun 25 2009, 11:17) *
у тинек есть интерфейс debug-WIRE, он однопроводный

А шить то по нему можно?
muravei
Цитата(pt200 @ Jun 25 2009, 11:06) *
ISP чтоли?
Если да то 4 пина из 6 доступных использовать проблематично

А поставить резисторы , 0,5-1,5 кОм тоже проблематично?
А разъмы тут народ уменьшал до полного отсутствия их. smile.gif
Visor
Про FUSE не забудьте, их загрузчиком не зашьёшь.
dimka76
Цитата(pt200 @ Jun 25 2009, 11:24) *
А шить то по нему можно?


Можно только FLASH и EEPROM.
FUSE он не шьет. Их придется по SPI. Но бутлоадер тоже первоначально по SPI надо грузить.
Deka
Вот бут какой-то валялся в моих закромах. Как работает не разбирался. Сколько занимает места тоже. Скачано скорее всего с avrfreaks. Отзывы приветствуются.
P.S.
Мдя... архивчик-то не цепляется... Кому надо - в личку или асю.
pt200
Цитата(dimka76 @ Jun 25 2009, 11:17) *
у тинек есть интерфейс debug-WIRE, он однопроводный

Хороший вариан. Только дороговатый.

Загрузчики посмотрел. Неахти: 2 пина, высокая частота( желательно кварц)
777777
Цитата(pt200 @ Jun 25 2009, 11:06) *
ISP чтоли?
Если да то 4 пина из 6 доступных использовать проблематично становится + разьем на 5-6 пин тоже немаленький

13, 25 ... 8ми ногие корпуса. А как выйдет 10я так вообще караул будет все ноги под программирование smile.gif

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

Если во время работы ноги, используемые для программирования, являются выходами, то следовательно подключены ко входам других микросхем и следовательно программатор ничем не помешает. Если же они подключены к выходам, то возможны варианты. Например, выходы некоторых микросхем переходят в третье состояние если на микросхему подать сброс; программатор его подает, следователно если этот сброс завести и на ту микросхему тоже, то она не помешает программированию. Если третье состояние отсутствует, то можно поставить джампер. Если не хочется, можно сигнал завести на контроллер через резистор достаточно большой, чтобы не нагрузить программатор. Даже вывод сброса можно использовать для работы - правда, запрограммировать тогда удастся только один раз.
pt200
Цитата(777777 @ Jun 25 2009, 13:02) *
А откуда появился такой предрассудок, что ноги, используемые для программирования, больше ни для чего использовать нельзя? Программирование контроллера и его работа происходят в разное время и одно другому (почти) никак не мешает.......

Так я ж написал что проблематично, а не низя.
Например бываю такие нагрузки которыми бездумно( при программировании) щелкать нельзя.
Про дополнительные микросхемы и джамперы т.д. см. выше( про размеры).
defunct
Цитата(pt200 @ Jun 25 2009, 10:24) *
А шить то по нему можно?

Можно, если предварительно запрограммировать фуз dwEn, ISP программатором.
777777
Цитата(pt200 @ Jun 25 2009, 13:42) *
Так я ж написал что проблематично, а не низя.
Например бываю такие нагрузки которыми бездумно( при программировании) щелкать нельзя.

А если завести на них сброс?

...а резисторы бывают в SMD корпусах smile.gif
ЛеонидК
Существует TinyLoader для загрузки по одному проводу.
Портированый для КПК (http://4pda.ru/forum/index.php?showtopic=70782&hl=AVR)
pt200
Вот набросал на досуге( правда нада отладить еще) для IARа. ( тактовая 128К)
Код
#define TB_BIT_IO    BIT0
#define TB_PIN_IO    PINB
#define TB_DDR_IO    DDRB
#define TB_PORT_IO   PORTB
#define TB_PASS      0xB63A
#pragma location="BootLoader"
uint8 __tinyBootloader_RX_bit( void)
{
  uint8 ret = 0;
  while( TB_PORT_IO & TB_BIT_IO){}                                              //Wait '0'
  __delay_cycles( 30);
  if( TB_PORT_IO & TB_BIT_IO)                                                   // RX = 1
    ret = 0x01;
  while( !( TB_PORT_IO & TB_BIT_IO)){}                                          //Wait '1'
  return ret;
}
#pragma location="BootLoader"
void __tinyBootloader_TX_bit( uint8 q)
{
  while( TB_PORT_IO & TB_BIT_IO){}                                              //Wait '0'
  if( !q)                                                                       // TX = 0
  {
    TB_PORT_IO &= ~TB_BIT_IO;
    TB_DDR_IO  |=  TB_BIT_IO;
    __delay_cycles( 50);
    TB_DDR_IO  &= ~TB_BIT_IO;
    TB_PORT_IO |=  TB_BIT_IO;
  }
  __delay_cycles( 30);
  while( !( TB_PORT_IO & TB_BIT_IO)){}                                          //Wait '1'
}
#pragma location="BootLoader"
void tinyBootloader( void)
{
  uint8 q;
  uint16 addr, data;

  __watchdog_reset();
  
//  if( MCUSR ... XXXXXXXXX) // IF reset || PORF
//    return;

  // Init IO pin
  TB_DDR_IO  &= ~TB_BIT_IO;
  TB_PORT_IO |=  TB_BIT_IO;
  __delay_cycles( 16);
  
// -------------------- Cheking START BootLoader ------------------------------- ???????????
  // Wait '0'                                                                    ???????????
  q = 128;                                                                    // ???????????
  while( TB_PORT_IO & TB_BIT_IO)                                              // ???????????
  {                                                                           // ???????????
    if( --q == 0) // TimeOut                                                  // ???????????
      return;                                                                 // ???????????
  }                                                                           // ???????????
// -------------------- Connecting ---------------------------------------------
  // Wait PASS
  __watchdog_reset();
  WDTCR |= BIT4 | BIT3;//( 1 << WDCE) | ( 1 << WDE);
  WDTCR  = BIT3 | BIT2;//( 1 << WDE); // ~0.25 s
  data = 0;
  do
  {
    data <<= 1;
    data |= __tinyBootloader_RX_bit();
  }
  while( data != TB_PASS);
  // Confirm PASS
  __watchdog_reset();
  for( q = 16; q; q--)
  {
    __tinyBootloader_TX_bit( ( data & 0x8000));
    data <<= 1;
  }
// -------------------- Programming --------------------------------------------
  // Program FLASH
  __watchdog_reset();
  for( addr = 0; addr < 0x300; addr += 2)
  {
    for( q = 16; q; q--)
    {
      data <<= 1;
      data |= __tinyBootloader_RX_bit();
    }
    __AddrToZWordToR1R0ByteToSPMCR_SPM( ( void __flash*)addr, data, 1);         // Fill Flash buffer
    if( ( ( addr & 0xFF) & 0x0F) == 0x0E) //Page
    {
      __AddrToZByteToSPMCR_SPM( ( void __flash*)addr, 3);                       // Erase Page
      __AddrToZByteToSPMCR_SPM( ( void __flash*)addr, 5);                       // Write Page
    }
    __watchdog_reset();
  }
}



Принцип 1Ware с другими таймингами. Программатор( железо) будет простое: TXD(TTL) через диод к пину, RXD(TTL) к нему же напрямую. Скорость порта 9600 по прикидкам.
Впринципе до 256 байт еще недотягивает, так что можно приделать подтверждение постраничное......
Подготовку таблицы векторов доверю программе на РС.

Люди, кто писал бутлоадеры, посоветуйте чего нибудь полезного.
ЛеонидК
TinyLoader для желающих.
.exe для КПК.
В .pdf есть все для Delphi.
GDI
Вот сказали название, так я и нашел тот проект http://tinyloader.kasperkp.dk/TinyLoaderBr10.zip
Сергей Борщ
Цитата(GDI @ Jun 25 2009, 09:50) *
На avrfreaks видел такой проект, только повторно найти мне его не удалось, может у вас получится.
Этот? Все то обсуждение не читал, просто название в глаза бросилось.
GDI
Цитата(Сергей Борщ @ Jun 25 2009, 21:07) *
Этот? Все то обсуждение не читал, просто название в глаза бросилось.

Нет, тут просто форум, причем, ветка начинается с вопроса, "есть ли в природе маленький бутлоадер".
Тот был оформлен в виде проекта и в описании была ссылка которую я выше приводил, в архиве есть описание и исходники для АВР и WIN32.
Цитата из описания:
Цитата
Code size is 48 words.
Works from the on-chip oscillator.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.