реклама на сайте
подробности

 
 
9 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Как программно загнать STM32 в бутлоадер?
Golikov A.
сообщение Mar 9 2015, 20:34
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Зачем через флеш?


Цитата
Просто он так сделал, у него заработало, и менять не стал.


Ну можно и так, но мне показалось так надежнее), как и в ход в бутлоадер через рессет.

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

А тут транзакция обновления заканчивается однозначным снятием флага, и это происходит однозначно в конце процесса, и хоть обдергайся питания начал обновлять - обновляй до конца. Опять же можно отловить что кто-то хотел обновить и не смог (может быть sm.gif)
НУ и плюс при производстве, оно первый раз сразу с флагом обновления, что приемная программа на РС ловит, и прошивку ей вкабанивает... Конечно можно было остаться и по пустому флэш, но так как-то надежнее...

ровно тоже с переходом через перезагрузку. Если путь 1 его можно проверить и понять что работает, если есть ветвления - это всегда потенциальная возможность ошибки... и вариации...

Вот такие мысли...

Цитата
ни и есть Target-ы. Недавно спрашивали, зачем они. А вот зачем

А то что при отладке через жетаг для правильного хождения по командам надо иметь уровень оптимизации 0, а для работы повыше? Вас не парит все время через опшинсы руками переставлять?
А отладка в порт с кучей сообщений и режимом только ошибок переключать, не забывая дефайны пробивать?

тут взял настроил
- 0 оптимизация дебуг
- нормальная, полный дебуг
- только ошибки
- боевая конфигурация

переключил, и куча флажков и настроек встали одним движением в нормальное состояние...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 10 2015, 05:00
Сообщение #62


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



2 Golikov A.
А как это, задать бит во флэш? Целый сектор памяти стирать-программировать...
Таргеты - да, здорово расписали. Опции компилятора переключить мне не сложно, отладкой по ком-порту не пользуюсь, а вот дефайны - да, их же можно задать в свойствах проекта! Правда, отладочных дефайнов у меня с десяток...
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 10 2015, 07:09
Сообщение #63


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Mar 9 2015, 23:34) *
А то что при отладке через жетаг для правильного хождения по командам надо иметь уровень оптимизации 0


Это еще зачем?? Всегда выставлял Full optimization под IAR. Зачем чего-то отлаживать на том уровне, который все-равно не будет в релизе?? По первости делал без оптимизации, вроде все работает, потом выставляю фулл - и "привет", висим и все тут...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 10 2015, 07:26
Сообщение #64


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
А как это, задать бит во флэш? Целый сектор памяти стирать-программировать...

тут да, потеря 1 сектора из начальных маленьких...

Цитата
Это еще зачем?? Всегда выставлял Full optimization под IAR.

под кейлом если хотите иметь связь дизасемблера с исходником (хотя думаю и в IAR тоже так надо), то оптимизация должна быть в 0. Соптимизацией пропадает половина переменных, и программа идет как бы по С коду, но такие прыжки делает... В общем с оптимизацией не 0, трассировать программу невозможно.


А если у вас программа с 0 и максимальной оптимизацией работает по разному - это плохо, с этим надо бороться. Меняться может только скорость или размер программы, но никак не функциональность...

Ну и в тему таргетов, не забываем что это может быть реально один проект под разные процы, и там определяется дефайны и свойства проца.... Хотя это конечно тяжелоsm.gif
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 10 2015, 07:32
Сообщение #65


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Mar 10 2015, 10:26) *
А если у вас программа с 0 и максимальной оптимизацией работает по разному - это плохо, с этим надо бороться. Меняться может только скорость или размер программы, но никак не функциональность...


Да вот по чем зря, бывает, элементарно, не поставил volatile у какой-нить переменной и все! В нуле-то работает и не жужжит, а в фулл никак...

Цитата(Golikov A. @ Mar 10 2015, 10:26) *
Ну и в тему таргетов, не забываем что это может быть реально один проект под разные процы, и там определяется дефайны и свойства проца.... Хотя это конечно тяжело


Ну да, я так вообще никогда не делаю, это одно дело, IPстек или графическую библиотеку портировать, но весь проект - это уже больно поGNUшнински получается - или по-русски "черт ногу сломит" biggrin.gif
Go to the top of the page
 
+Quote Post
swisst
сообщение Mar 10 2015, 13:20
Сообщение #66


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Цитата(scifi @ Mar 9 2015, 11:56) *
Просто он так сделал, у него заработало, и менять не стал.
Конечно, нужно проверять регистр причины сброса, и если сброс программный, то проверять флаг в ОЗУ.


что Вы имеете в виду под программным сбросом ?
у меня, например, LPC1769 (суть не в камне, а в подходе) - в регистре источника сброса 4 флага: power-on reset, external reset, WDT reset, BOD reset
могу ли я читая другой регистр понять, что сброс был программный ?

если передавать флаг программного сброса через озу (например, совместно с WDT reset), то описано ли в каком нибудь документе то, что содержимое озу не портится во время reset ?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 10 2015, 13:36
Сообщение #67


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(swisst @ Mar 10 2015, 16:20) *
что Вы имеете в виду под программным сбросом ?
у меня, например, LPC1769 (суть не в камне, а в подходе) - в регистре источника сброса 4 флага: power-on reset, external reset, WDT reset, BOD reset

И если ни один из них не установлен, тогда какой был сброс? rolleyes.gif
Go to the top of the page
 
+Quote Post
swisst
сообщение Mar 10 2015, 13:53
Сообщение #68


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Цитата(ViKo @ Mar 10 2015, 15:36) *
И если ни один из них не установлен, тогда какой был сброс? rolleyes.gif


спасибо. попробую и перепишу bootloader.

вопрос с передачей флага "нужно прошиваться" через SRAM актуален
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Mar 10 2015, 13:56
Сообщение #69


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(swisst @ Mar 10 2015, 08:20) *
если передавать флаг программного сброса через озу (например, совместно с WDT reset), то описано ли в каком нибудь документе то, что содержимое озу не портится во время reset ?


Таких документов много. Но сама программа, как правило прежде чем дойдет до main()
установит озу в нужное состояние. Чтобы этого не было, в IAR, например надо добавлять __no_init
перед обьявлением переменной.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 10 2015, 15:18
Сообщение #70


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(swisst @ Mar 10 2015, 16:20) *
описано ли в каком нибудь документе то, что содержимое озу не портится во время reset ?

Наверное, не написано, но это и так все знают biggrin.gif
Нужно очень постараться, чтобы затереть статическое ОЗУ одномоментно, не снимая питание.
Go to the top of the page
 
+Quote Post
mantech
сообщение Mar 10 2015, 15:41
Сообщение #71


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(swisst @ Mar 10 2015, 16:20) *
если передавать флаг программного сброса через озу (например, совместно с WDT reset), то описано ли в каком нибудь документе то, что содержимое озу не портится во время reset ?


Ну сами подумайте, у статики нет инициализации и тактировки, как у динамики, затереть ее может только сама программа, да и то, если не используете монитор питания.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 10 2015, 20:44
Сообщение #72


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



а как при старте инициализируемые 0 переменные становятся нулевыми? Сброс то у памяти может и быть, а его могу и дергать.

Я не люблю использовать фишки, которые явно не описаны в документации, как минимум это дает мне право искренне возмущаться "а че не работает то?", нежели если недокументированное юзать...
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 10 2015, 20:52
Сообщение #73


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Golikov A. @ Mar 10 2015, 23:44) *
а как при старте инициализируемые 0 переменные становятся нулевыми?

Оч. смешно. Цикл зануляет соответствующие ячейки памяти, если вы ещё не в курсе.

Цитата(Golikov A. @ Mar 10 2015, 23:44) *
Сброс то у памяти может и быть, а его могу и дергать.

Примеры - в студию! Это будет открытие века!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 10 2015, 20:52
Сообщение #74


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Golikov A. @ Mar 10 2015, 23:44) *
а как при старте инициализируемые 0 переменные становятся нулевыми? Сброс то у памяти может и быть, а его могу и дергать.

Программно. Сброса нет. Если бы вдруг был, непременно бы такую фишку задокументировали, не сомневайтесь sm.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 10 2015, 21:38
Сообщение #75


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Оч. смешно. Цикл зануляет соответствующие ячейки памяти, если вы ещё не в курсе.


Достаточно весело. У вас в main есть такой цикл? Это я к тому что советуя передать переменную через память сквозь ресет, надо еще уточнить где и что задушить, чтобы человек не бился с 0 переменной как рыба об лед.

Цитата
Примеры - в студию! Это будет открытие века!

как-то свой проц сделал на FPGA, у него был сброс. Такой пример пойдет? я совершил открытие?

Цитата
Сброса нет.

жаль.... sm.gif
Go to the top of the page
 
+Quote Post

9 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016