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

 
 
 
Reply to this topicStart new topic
> NVIC_SystemReset - куда?
Allregia
сообщение Oct 20 2016, 06:22
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Не очень пойму из документации - NVIC_SystemReset полностью сбрасывает процессор (типа аппаратного ресета), или только перезапускает текущую программу по ее ресет-вектору?

Иными словами - если в прошивке внизу висит бутлоадер а выше основная программа, то вызов NVIC_SystemReset в бутлоадере понятно что приведет к его перезапуску, а куда приведет его вызов в основной программе - к переходу на ее ресет-вектор, т.е. ее перезапуску, или к начальному ресет-вектору проца, т.е. запуску бутлоадера?
Если первй вариант, то как сделать второй, т.е. как перейти к бутлоадеру из основной прграммы?
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 20 2016, 06:38
Сообщение #2


Гуру
******

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



Цитата(Allregia @ Oct 20 2016, 09:22) *
Не очень пойму из документации - NVIC_SystemReset полностью сбрасывает процессор (типа аппаратного ресета), или только перезапускает текущую программу по ее ресет-вектору?

Плохо читаете документацию. Моя документация говорит следующее:
Цитата
Causes a signal to be asserted to the outer system that indicates a reset is requested.
Intended to force a large system reset of all major components except for debug.
Setting this bit does not prevent Halting Debug from running.
Go to the top of the page
 
+Quote Post
Alechek
сообщение Oct 20 2016, 06:39
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Насколько я помню, NVIC_SystemReset делает сброс почти полностю.
По крайней мере VTOR точно сбросится.
Если есть всякие MEMMAP, то для уверенности перед сбросом установить их в нужное значение.

Но не у всех ядер есть NVIC_SystemReset.
А WDT сбросит однозначно!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 20 2016, 06:50
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Я не знаю, что делает NVIC_SystemReset, но установка бита SYSRESETREQ в регистре SCB_AIRCR сбрасывает все кроме RTC и содержимого регистра RCC_CSR. Не сбрасывается только состояние "залочен" у STM32F03x, т.е. для окончания процедуцры снятия защиты от чтения у этих кристаллов необходимо передернуть питание. У всех остальных достаточно взвести этот бит системного сброса.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 20 2016, 07:02
Сообщение #5


Гуру
******

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



Цитата(Сергей Борщ @ Oct 20 2016, 09:50) *
Я не знаю, что делает NVIC_SystemReset, но установка бита SYSRESETREQ в регистре SCB_AIRCR сбрасывает все кроме RTC и содержимого регистра RCC_CSR.

Не спешите с выводами. Как-то раз на STM32 по ошибке подтянул сигнал RST вверх (сильно подтянул). SYSRESETREQ дёргал его вниз, но не получалось. Соответственно, никакого сброса не было laughing.gif
Опять же, теоретически речь может идти о процессоре, встроенном в самодельную систему на FPGA. Там сигнал программного сброса может делать всё, что угодно, например, моргать лампочкой biggrin.gif
Go to the top of the page
 
+Quote Post
gerber
сообщение Oct 20 2016, 07:26
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(scifi @ Oct 20 2016, 10:02) *
Не спешите с выводами. Как-то раз на STM32 по ошибке подтянул сигнал RST вверх (сильно подтянул). SYSRESETREQ дёргал его вниз, но не получалось. Соответственно, никакого сброса не было laughing.gif

Согласен, сам на такое нарывался на STM32 (вместо open-drain супервизора запаяли по ошибке push-pull). В STM32 программный RESET выводится на ногу RESET, что позволяет сбрасывать не только сам контроллер, но и подключенную внешнюю периферию, если она есть.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 20 2016, 07:48
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Allregia @ Oct 20 2016, 09:22) *
Не очень пойму из документации - NVIC_SystemReset полностью сбрасывает процессор (типа аппаратного ресета), или только перезапускает текущую программу по ее ресет-вектору?
Иными словами - если в прошивке внизу висит бутлоадер а выше основная программа, то вызов NVIC_SystemReset в

NVIC_SystemReset - это что? ISR? Или нет? Если ISR, то с какого бодуна он должен что-то сбрасывать или перезапускать?
Если нужен сброс МК, то самый надёжный путь - через WDT.

Цитата(Сергей Борщ @ Oct 20 2016, 09:50) *
Я не знаю, что делает NVIC_SystemReset, но установка бита SYSRESETREQ в регистре SCB_AIRCR сбрасывает все кроме RTC и содержимого регистра RCC_CSR. Не сбрасывается только состояние "залочен" у STM32F03x, т.е. для окончания процедуцры снятия защиты от чтения у этих кристаллов необходимо передернуть питание. У всех остальных достаточно взвести этот бит системного сброса.

Не спешите с выводами. Может конкретно у этого STM32 это и так, но сиё не верно для всех Cortex-M. Что за МК у автора как всегда остаётся только гадать (когда уже наконец-то чайники научатся указывать о каком МК, компиляторе и т.п. вопрос??? как будто форум здесь для телепатов...).

SYSRESETREQ на Tiva работает вроде нормально. А вот на NXP разных серий (LPC17xx, LPC43xx) у меня были какие-то проблемы с ним. Точно не помню, но на LPC43xx вроде вообще не работает, а на LPC17xx там вроде не всё сбрасывается. Так что на LPC использую WDT.
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 20 2016, 08:07
Сообщение #8


Гуру
******

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



Цитата(jcxz @ Oct 20 2016, 10:48) *
NVIC_SystemReset - это что? ISR? Или нет? Если ISR, то с какого бодуна он должен что-то сбрасывать или перезапускать?
Если нужен сброс МК, то самый надёжный путь - через WDT.

Не позорьтесь, коллега. Пятисекундный поиск в гугле сразу показывает, что за зверь этот NVIC_SystemReset.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 20 2016, 08:33
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(scifi @ Oct 20 2016, 11:07) *
Не позорьтесь, коллега. Пятисекундный поиск в гугле сразу показывает, что за зверь этот NVIC_SystemReset.

А в чём позор-то? В том что я не использую никакие сторонние библиотеки для работы с периферией (и прочие CMSIS)? И не гадаю потом как они работают? Хорошо - тогда и дальше буду позориться.
Что такое SYSRESETREQ в ядре я знаю, о чём и написал выше. И использовал его иногда.
Да и при программировании гугл не использую, а только IDE да юзермануалы...
Go to the top of the page
 
+Quote Post
Allregia
сообщение Oct 20 2016, 19:07
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(jcxz @ Oct 20 2016, 09:33) *
В том что я не использую никакие сторонние библиотеки для работы с периферией (и прочие CMSIS)? И не гадаю потом как они работают?


А хидеры с адресами регистров и их битами Вы тоже сами пишете для всех процессоров?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 20 2016, 19:15
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Allregia @ Oct 20 2016, 22:07) *
А хидеры с адресами регистров и их битами Вы тоде сами пишете для всех процессоров?

Да. Только биты не пишу.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Oct 20 2016, 20:43
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(jcxz @ Oct 20 2016, 20:15) *
Да. Только биты не пишу.


А биты как, "магическими числами"?

Не поделитесь таким хидером для STM32F767 ?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Oct 20 2016, 21:05
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Allregia @ Oct 20 2016, 23:43) *
Не поделитесь таким хидером для STM32F767 ?

Не использовал такой.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 20 2016, 21:11
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
Не поделитесь таким хидером для STM32F767 ?

генерите кубом проект - в целевом каталоге образуется комплект, включает stm32f7xx.h и искомый stm32f767xx.h

Сообщение отредактировал Genadi Zawidowski - Oct 20 2016, 21:12
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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