Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NVIC_SystemReset - куда?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Allregia
Не очень пойму из документации - NVIC_SystemReset полностью сбрасывает процессор (типа аппаратного ресета), или только перезапускает текущую программу по ее ресет-вектору?

Иными словами - если в прошивке внизу висит бутлоадер а выше основная программа, то вызов NVIC_SystemReset в бутлоадере понятно что приведет к его перезапуску, а куда приведет его вызов в основной программе - к переходу на ее ресет-вектор, т.е. ее перезапуску, или к начальному ресет-вектору проца, т.е. запуску бутлоадера?
Если первй вариант, то как сделать второй, т.е. как перейти к бутлоадеру из основной прграммы?
scifi
Цитата(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.
Alechek
Насколько я помню, NVIC_SystemReset делает сброс почти полностю.
По крайней мере VTOR точно сбросится.
Если есть всякие MEMMAP, то для уверенности перед сбросом установить их в нужное значение.

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

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

Согласен, сам на такое нарывался на STM32 (вместо open-drain супервизора запаяли по ошибке push-pull). В STM32 программный RESET выводится на ногу RESET, что позволяет сбрасывать не только сам контроллер, но и подключенную внешнюю периферию, если она есть.
jcxz
Цитата(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.
scifi
Цитата(jcxz @ Oct 20 2016, 10:48) *
NVIC_SystemReset - это что? ISR? Или нет? Если ISR, то с какого бодуна он должен что-то сбрасывать или перезапускать?
Если нужен сброс МК, то самый надёжный путь - через WDT.

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

А в чём позор-то? В том что я не использую никакие сторонние библиотеки для работы с периферией (и прочие CMSIS)? И не гадаю потом как они работают? Хорошо - тогда и дальше буду позориться.
Что такое SYSRESETREQ в ядре я знаю, о чём и написал выше. И использовал его иногда.
Да и при программировании гугл не использую, а только IDE да юзермануалы...
Allregia
Цитата(jcxz @ Oct 20 2016, 09:33) *
В том что я не использую никакие сторонние библиотеки для работы с периферией (и прочие CMSIS)? И не гадаю потом как они работают?


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

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


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

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

Не использовал такой.
Genadi Zawidowski
Цитата
Не поделитесь таким хидером для STM32F767 ?

генерите кубом проект - в целевом каталоге образуется комплект, включает stm32f7xx.h и искомый stm32f767xx.h
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.