oquomoks
1

Atmega128 слетают фьюзы при чтении прошивки по spi

15.12.2014, 15:34. Показов 10860. Ответов 18
Метки нет (Все метки)

Доброго времени суток.
Есть проблема с прошивкой МК Атмега128 по SPI. Программатор на Ft232r. Программа прошивки самописная на основе FTD2XX_NET.dll.
Проблема возникает при чтении записанной прошивки. В лучшем случае некритично изменяются записанные фьюзы и лок-биты. В худшем фьюзы устанавливаются в FF, после выхода из режима программирования контроллер становится мёртвым куском кремния без доступа даже по jtag.
Эта проблема возникает не постоянно, зависимости установить не удалось. Если не зачитывать прошивку фьюзы и лок-биты не портятся.
В чём может быть проблема?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2014, 15:34
Ответы с готовыми решениями:

Постоянно слетают фьзы. ATMEGA128. Может быть BODEN&BODLEVEL
Приветствую. Подскажите, пожалуйста, из-за чего постоянно слетают фьзы при перепрошивке Это может...

Atmega128 - не работает SPI
Код инициализации: // SPI Pins #define SPI_PORT PORTB #define SPI_DDR DDRB #define...

atmega128 BootLoader c шифрованием прошивки
Здравствуйте, господа. Приспичило тут маленько зашифроваться) Гугление результатом имеет беседы о...

ATmega128. Пересылка данных с USART в SPI
Доброго времени суток, мне требуется реализовать пересылку символов с USORT в SPI, на контроллере...

18
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
15.12.2014, 16:25 2
Цитата Сообщение от oquomoks
В чём может быть проблема?
в несоответствии протокола или таймингов даташиту

п.с. при обилии вариантов для прошивки готовыми инструментами и ПО в чем цинус писать свое?
0
oquomoks
15.12.2014, 16:43 3
По даташиту особых требований к таймингам при чтении прошивки нет. Пробовал снижать скорость прошивки или менять задержки обмена - не помогло.
Еслиб был неправильно организован протокол обмена, то обмена не было бы вообще, а так 9 из 10 прошиваются нормально.
Может быть, конечно, ещё проблема в ПК, т.к. на своём КОМПЕ с core i3 и win7 у меня проблемы нет, а в цеху, где стоят Sitirom`ы с XP проявляются регулярно.
Из готового подходил только avrdude, и то с запиливанием в него libusb0. При этом оставалась проблема в том, что на одном ПК может быть одновременно подключено несколько устройств на ft232r, а чтобы выбрать нужный пришлось бы извращаться. Да и консольный интерфейс не совсем подходит для наших нужд.
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
15.12.2014, 16:59 4
Цитата Сообщение от oquomoks
По даташиту особых требований к таймингам при чтении прошивки нет
есть требование на мультипликатор между тактовой частотой МК и тактовой ISP
не читал сам протокол ISP, знаю на уровне програматора, что для ISP в студии для своих програматоров атмел требует частоту ISP ставить как минимум в 8 раз меньше частоты МК
причем в качестве частоты МК надо брать его фактическую частоту с учетом делителей

а статусы ошибок проверяете по ходу прошивки? может пропускаете сбой и продолжаете пихать команды в МК что в итоге приводит к "случайным" командам и может иногда совпадать с командами изменения фьюзов?

у атмела все четко - малейший сбой на прошивке, процесс останавливается
именно по этому если даже я в своей программе понижаю тактовую изменяя предделитель, я не смогу прошить МК если не понижу частоту ISP ниже чем несущая МК / на мой делитель / на 8
хотя казалось бы, что после сброса мои предделители теряют силу
0
oquomoks
29.12.2014, 14:40 5
Контроль ошибок записи включен. Ошибки не фиксируются, но камни продолжают умирать. Библиотека не даёт механизма задания частоты интерфейса. Только скорость обмена. Пробовал задавать низкие скорости, 76800 и 38400, не помогло.
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
29.12.2014, 21:51 6
Вам нужно останавливать прошивку по первой ошибке
То что после ошибки идет хаотичное програмирование нет ничего удивительного
0
oquomoks
30.12.2014, 09:47 7
Так я ж говорю - нет ошибок.
oquomoks
30.12.2014, 10:55 8
Версия библиотеки 1.0.14
Версия драйвера FTDI 2.12.0
Спасайте
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
30.12.2014, 11:25 9
Я поверхностно знаю AVR, но невзлюбил их по причине, чуть что, и по последовательному протоколу их уже не зашьёшь. Требуется "паралельный" чтоб сбросить "фусы" в заводское состояние. Может это и Ваш вариант. Если же jtag (многие контроллеры могут jtag просто отключать и по нему к ним не достучишься) гарантирует программирования с любого состояния и камни становятся "мёртвым куском кремния" то тогда это наводит на мысль что убивает не прошивка. А "физика", к примеру где то не согласование уровней, наводки, статика. Просто я не слыхал что можно убить какой либо "камень" неправильностью прошивки. Можно "залочить", можно отключить интерфейсы программирования, но чтоб он становился "мёртвым куском кремния" не слыхал.
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 26
30.12.2014, 12:38 10
Цитата Сообщение от otixdos
Можно "залочить", можно отключить интерфейсы программирования, но чтоб он становился "мёртвым куском кремния" не слыхал.
AVR очень легко убить неправильными фьюзами. Так как у меги фьюзы отвечают за таймер watchdog и за тактирование, мк может пытаться получить внешнее тактирование, которого нет, или включить watchdog, который в прошивке не используется, и он будет постоянно сбрасывать мк. Вкупе с отключенными интерфейсами программирования кристалл реально становится мёртвым.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
30.12.2014, 13:07 11
Ничего личного) но кривыми руками все что угодно можно убить)
Автор же выше явно пишет, что камень умирает непроизвольным изменением фьюзов. Дело не в AVR, а в какой-то ошибке автора, которую он всех просит помочь найти
0
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 319
30.12.2014, 14:03 12
дам подсказку, ISP, он же SPI возвращает посланные ему байты. Вот и проверьте, как только не совпадение - тут же останавливайте процесс. Что-то со скоростями полюбому.
0
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
30.12.2014, 16:24 13
Цитата Сообщение от pro100votd
Цитата Сообщение от otixdos
Можно "залочить", можно отключить интерфейсы программирования, но чтоб он становился "мёртвым куском кремния" не слыхал.
AVR очень легко убить неправильными фьюзами. Так как у меги фьюзы отвечают за таймер watchdog и за тактирование, мк может пытаться получить внешнее тактирование, которого нет, или включить watchdog, который в прошивке не используется, и он будет постоянно сбрасывать мк. Вкупе с отключенными интерфейсами программирования кристалл реально становится мёртвым.
А какими это "фусами" можно умертвить кристалл atmega128? приведите с документации пожалуйста.
И как быть тут с Parallel Prokramming, его ведь отключить нельзя.
0
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 4,224
31.12.2014, 04:40 14
otixdos разве автор что то писал про использование HVPP?
0
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 26
31.12.2014, 15:21 15
Цитата Сообщение от otixdos
А какими это "фусами" можно умертвить кристалл atmega128? приведите с документации пожалуйста.
И как быть тут с Parallel Prokramming, его ведь отключить нельзя.
С параллельным программированием быть легко - автор про него не говорит, значит, у него нету параллельного программатора. Параллельное программирование, конечно, может решить любую проблему с фьюзами, ну а если его не трогать, то:
Даташит на 128 атмегу, 288 страница, говорит, что есть фьюзы JTAGEN и SPIEN, позволяющие отключить JTAG и SPI программирование. Чуть выше говорится о WDTON, который позволяет включить Watchdog. Итого, если в прошивке кристалла нету инструкции wdr (см. 54 страницу), то watchdog будет его постоянно сбрасывать. И по доступным автору JTAG и ISP до кристалла не достучаться. Кристалл мёртв (то есть молчит по интерфейсам программирования и при этом не выполняет прошивку) до тех пор, пока к нему не подключат параллельный программатор, и именно это я имел ввиду, когда говорил, что он мёртвый.

К сожалению, я не могу подсказать автору, как ему переписать свою библиотеку, чтобы всё работало, но могу посоветовать воспользоваться AVR fusebit doctor для восстановления убитых при программировании атмег.
0
0 / 0 / 0
Регистрация: 12.04.2013
Сообщений: 241
31.12.2014, 16:58 16
Цитата Сообщение от oxytt
otixdos разве автор что то писал про использование HVPP?
Если автор сам написал программу по программированию этих контролеров, то он НЕ МОЖЕТ НЕ ЗНАТЬ про HVPP. И в его устах выражение "контроллер становится мёртвым куском кремния" - однозначно я воспринимаю как "камень" сдох без возможности восстановления. Ежели он имел что либо иное под этим выражение, то уже не наши проблемы что он не смог донести свой вопрос нам. А поэтому мы отвечаем на вопрос как кто что понял. Ежели в процессоре устанавливаются "фусы" не позволяющие программировать по последовательным протоколом, то это вовсе никоим образом не означает "контроллер становится мёртвым куском кремния".
0
shirr
31.12.2014, 21:59 17
Цитата Сообщение от otixdos
Я поверхностно знаю AVR, но невзлюбил их по причине, чуть что, и по последовательному протоколу их уже не зашьёшь. Требуется "паралельный" чтоб сбросить "фусы" в заводское состояние. Может это и Ваш вариант. Если же jtag (многие контроллеры могут jtag просто отключать и по нему к ним не достучишься) гарантирует программирования с любого состояния и камни становятся "мёртвым куском кремния" то тогда это наводит на мысль что убивает не прошивка. А "физика", к примеру где то не согласование уровней, наводки, статика. Просто я не слыхал что можно убить какой либо "камень" неправильностью прошивки. Можно "залочить", можно отключить интерфейсы программирования, но чтоб он становился "мёртвым куском кремния" не слыхал.
В AVR вроде нет, а вот почитайте про CRP3 в LPC1xxx/LPC2xxx а также ProtectTivit2 в STM32 - мне крайне не
понравилось - ни прошить, ни стереть. Про TMS320F2xxxx/ BF50x вообще молчу .
0 / 0 / 0
Регистрация: 22.12.2014
Сообщений: 26
31.12.2014, 23:03 18
Цитата Сообщение от shirr
В AVR вроде нет, а вот почитайте про CRP3 в LPC1xxx/LPC2xxx а также ProtectTivit2 в STM32 - мне крайне не
понравилось - ни прошить, ни стереть. Про TMS320F2xxxx/ BF50x вообще молчу .
Это уже оффтоп, но всё-таки позволю себе спросить: разве STM32 можно залочить полностью? У него же есть нестираемый и неотключаемый boottooder, который по UART всегда даёт возможность стереть чип.
0
oquomoks
11.01.2015, 11:19 19
Странно то, что на одних машинах всё шьётся без проблем, даже ставил эксперимент - 50 перепрошивок подряд. На других - проблема при каждой попытке записи. Да и сами результаты разные. На одной машине камень умирает так, что к нему нет доступа ни по SPI, ни по JTAG, на другой просто устанавливаются лок-биты. Грешить на физику интерфейса USB или программатор, но на avrdude таких проблем нет. Самое простое объяснение - гремлины.
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2015, 11:19

Конфликт spi и i2c при чтении с множества датчиков
Собственно вопрос. Есть несколько датчиков- Акселерометров от ST . Планируется организовать чтение...

Прошивки SPI и EEPROM для ТВ
Здравствуйте.Хотелось узнать, возможно-ли прочесть на понятном языке HEX-код в прошивках.и внести...

CH341A софт для прошивки AVR по SPI этим программатором
Выкладываю на ваш суд свои модифицированные сборки программ для прошивки с помощью программатора...

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив структур. Записываю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.