Перейти к содержанию
    

Доброго дня всем...

Камень mega32. Загрузка ПО через бутлоадер. Все нормально работает. Но... если создавать помехи быстрым включением и выключением изделия может слетать флэш. Это выглядет примерно так-- изделие либо полностью не рабочее , либо не работает подсветка или индикатор или любая другая часть функций. При этом если прочитать флэш через програматор, то часть оказывается не такой как исходный файл. Причем в разных случаях разная степень подпорченности.

Питание -- стабилизатор 5 В с обвязкой.

Сектор бутлоадера 512 слов. Бут закрыт от записи чтения. Программный сектор не закрыт.

Никто не сталкивался с подобным явлением?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Включите BOD. Это раз. Во вторых - было бы правильно проверить в бутлоадере CRC основной программы, а не запускать наобум.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Портится если в процессе программирования питание дергать или просто при работе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Портится если в процессе программирования питание дергать или просто при работе?

В работе.

 

Включите BOD. Это раз. Во вторых - было бы правильно проверить в бутлоадере CRC основной программы, а не запускать наобум.

BOD ставил 2.7В и 4В -- никак не повлияло.

CRC загрузчик проверяет. Еще - если после загрузки через Bootloader прочитать программный сектор, то совпадает с исходником полностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте залить основной код программатором. При этом вместо бутлоадера пусть будут 0xFF. Затем попробуйте пощелкать питание. По результатам будем думать дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В работе.

Тогда ищите источник помехи, который может вам флешь сбивать. Тут была ветка автором которой был некий Дон Амброзио, вот он поднимал подобный вопрос. И там даже следи множества буков, вроде , были какие то рецепты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте залить основной код программатором. При этом вместо бутлоадера пусть будут 0xFF. Затем попробуйте пощелкать питание. По результатам будем думать дальше.

Дело в том , что я это уже делал. Действительно я не добился выхода из строя при прошивке через SPI. Но системы никакой не отслеживается. Флэш слетает не всегда. Может слететь , а может и нет. Изначально все изделия прошивались на параллельном программаторе. Примрно 20 % из них вышли из строя. После перешивки через bootloader они опять работали... Но могли через некоторое время слететь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что, если обычным программатором запрограммировть, при аналогичных экспериментах флэш не портится?

Вы на одном процессоре ставили опыты или перебрали несколько?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

у меня такое тоже было, но питание нарастало медленно, убрал электролиты вроде работает, тьфу-тьфу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том , что я это уже делал

 

Понятно. Схему с номиналами в студию. И разводку.

 

у меня такое тоже было, но питание нарастало медленно

 

Если BOD включен, то должно быть пофиг. Автору топика: проверьте еще раз, точно ли включен BOD у Вас.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут была ветка автором которой был некий Дон Амброзио, вот он поднимал подобный вопрос.

там все же больше насчет магического кода который сам способен отдетектить свою правильность :)

 

Причина слетов здесь - отсутствие или неправильная работа супервизора.

Не верится, что BOD у автора включен.

 

Но системы никакой не отслеживается. Флэш слетает не всегда. Может слететь , а может и нет.

Причина - кривая разводка, отстутствие блокировочных емкостей по питанию, кривой DC/DC, кривой супервизор питания. Других причин здесь нет.

 

Workaround - поставить delay несколько десятков/сотен ms перед выполнением команды SPM (это по крайней мере вдвое снизит вероятность появления проблемы. При сбое на отключении питания SPM просто не успеет выполниться).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Какая у вас частота процессора.

2) Какое напряжение.

3) Что подводится на ножки SPI (Програмирования)

 

Сделай задержку в 0.5 секунды при старте программы и лоадера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что, если обычным программатором запрограммировть, при аналогичных экспериментах флэш не портится?

Вы на одном процессоре ставили опыты или перебрали несколько?

На 4-х с камнями из разных серий...

 

у меня такое тоже было, но питание нарастало медленно, убрал электролиты вроде работает, тьфу-тьфу

Я не могу электролиты убрать помехи слишком большие будут...

 

Схема питается от импульсного источника питания?

Нет. Обычный 7805

 

1) Какая у вас частота процессора.

2) Какое напряжение.

3) Что подводится на ножки SPI (Програмирования)

 

Сделай задержку в 0.5 секунды при старте программы и лоадера.

4МГц

PB5,6,7 -- транзисторы подсветки.

Загрузчик начинает работать на запись только когда связался с компом и получил верные данные для записи страницы... То есть , загрузчик посылает байт запроса, получает три байта в ответ. Если они совпали , то загрузчик посылает подтверждение компу. Дальше команда адрес и сразу 128 байт в буфер с проверкой CRC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...