Easyelectronics.ru

Электроника для всех
Текущее время: 22 окт 2018, 21:53

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Обновленный avrdude / сброс фьюзов attiny4/5/9/10.
СообщениеДобавлено: 12 июл 2018, 13:02 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1111
Надо было недавно простенькую вещь сделать на очень мелком (по размерам) мк. Под рукой валялись attiny10. Там серия attiny4, attiny5, attiny9, attiny10 одинака примерно. Интерфейс программирования TPI. USBAsp с последней прошивкой умеет в него. Мне надо было задействовать все 4 IO ноги, соотв. надо было прошивать фьюз RSTDISBL. Чтобы потом прошивать на RSTDISBL подаем не RESET с USBASP, а +12V. Флэш при это перешивается без проблем, пока +12 висит на ноге RESET. А фьюз сбросить не дает. Если прошить во фьюз 0xFF, при проверке всё-равно остается 0xFE. Также с другими битами конфиг фьюза получается. В ДШ описана процедура, как сбросить фьюзы:
Цитата:
16.4.3.4. Erasing the Configuration Section
The algorithm for erasing the Configuration section is as follows:
1. Write the 0x14 (SECTION_ERASE) to the NVMCMD register
2. Start the erase operation by writing a dummy byte to the high byte of any word location inside the
configuration section
3. Wait until the NVMBSY bit has been cleared

Только вот avrdude вплоть до последней версии 6.3 такого не умеет. Полез в исходники, думал дописать. А оказывается в последней SVN версии уже есть этот функционал. Только не задокументирован. Покопался в коде, понял как надо:
Код:
  switch (PDATA(pgm)->section_e) {
    /* Config bits section erase */
  case 1:
    pr_0 = 0x41;
    pr_1 = 0x3F;
    nvm_cmd = NVMCMD_SECTION_ERASE;
    avrdude_message(MSG_DEBUG, "%s: usbasp_tpi_chip_erase() - section erase\n", progname);
    break;
    /* Chip erase (flash only) */
  default:
    pr_0 = 0x01;
    pr_1 = 0x40;
    nvm_cmd = NVMCMD_CHIP_ERASE;
    avrdude_message(MSG_DEBUG, "%s: usbasp_tpi_chip_erase() - chip erase\n", progname);
    break;
  }

...

    if (strncmp(extended_param, "section_config", strlen("section_config")) == 0) {
      avrdude_message(MSG_NOTICE2, "%s: usbasp_parseextparms(): set section_e to 1 (config section)\n",
                      progname);
      PDATA(pgm)->section_e = 1;


Короче надо эту версию запускать с параметрами "-x section_config -e", и тогда оно сотрет (сбросит) фьюзы тиньки.

Может кому будет полезно. Чуть позже сборки SVN-версии avrdude для linux и windows выложу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обновленный avrdude / сброс фьюзов attiny4/5/9/10.
СообщениеДобавлено: 12 июл 2018, 14:22 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 1111
Сборка для Linux x86_64 и Win32: avrdude-svn6.3-20171130.zip


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB