| Автор |
Съобщение |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Софтуерен ресет на STM32F407.
Контролерът е STM32F407 ( от Discovery board ). Как е най-добре да се саморесетира ? Т.е най-бързо може да се стигне до ресет ?
|
| Нед Мар 22, 2015 3:22 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: Софтуерен ресет на STM32F407.
Въпросът е твърде общ... имаш много неща дето могат да се ресетват и по различни начини. Ако питаш за тотален ресет, само чрез шалтер на захранването. Принципно идеята на куртексите е да не се ползват тотални ресети, просто софта трябва да може да инициализира всичко, без да разчита че всичко е в някакво дефолт състояние. За повечето периферии имаш бит в системния контролер и може да ги ресетваш и е за препоръчване преди да почнеш да си играеш с тях да им биеш профилактично един ресет. Имаш и една стандартна периферия наречена SCB (system control blok) и в нея имаш един регистър application interrupt/reset control май се казваше и там има бит за системен ресет. Но за да го вдигнеш в старшата част се пишеше парола. Сега съм на таблет и ми е трудно да ти ровя точния адрес на регистъра и какво се пишеше... Но това е универсален начин да ресетнеш софтуерно един куртекс.
|
| Нед Мар 22, 2015 4:21 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
 Re: Софтуерен ресет на STM32F407.
не ползвам ST, но в Kinetis K60F (M4F) има регистър в за целта void Cpu_SystemReset(void) { /* SCB_AIRCR: VECTKEY=0x05FA,SYSRESETREQ=1 */ SCB_AIRCR = (uint32_t)((SCB_AIRCR & (uint32_t)~(uint32_t)( SCB_AIRCR_VECTKEY(0xFA05) )) | (uint32_t)( SCB_AIRCR_VECTKEY(0x05FA) | SCB_AIRCR_SYSRESETREQ_MASK )); /* Request system reset */ while(1) { /* Wait until reset */ } } ако няма подобна възможност, обикновенно ползвам watchdog-а за ресет (пишейки невалидни стойности в рег)
|
| Нед Мар 22, 2015 5:01 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: Софтуерен ресет на STM32F407.
_________________ main[-1u]={1};
|
| Нед Мар 22, 2015 8:38 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Re: Софтуерен ресет на STM32F407.
И аз това направих - питах Гугъл и избрах готовата библиотечната функция. Като дойдат по-добри времена може и да напиша и ползвам нещо мое. Въпросът ми беше, ако някой вече се е спрял на просто и "красиво" решение.
|
| Нед Мар 22, 2015 9:10 pm |
|
 |
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 1:59 pm Мнения: 3867 Местоположение: Габрово
|
 Re: Софтуерен ресет на STM32F407.
|
| Нед Мар 22, 2015 10:43 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Софтуерен ресет на STM32F407.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Нед Мар 22, 2015 11:06 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: Софтуерен ресет на STM32F407.
и с кучето става, обаче някои библиотечки/rtos си следят reset cause-a и ще ви напсуват, ако разлаете някое куче 
|
| Пон Мар 23, 2015 10:07 am |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Софтуерен ресет на STM32F407.
Ами тогава викаш reset() функцията на библиотечките/rtos и всички са доволни.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Пон Мар 23, 2015 2:08 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: Софтуерен ресет на STM32F407.
I/O пин към RESET сигнала и шунтираш цялата какафония с буболечки и библиотечки
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Мар 23, 2015 6:00 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
 Re: Софтуерен ресет на STM32F407.
Това не работи (надеждно) - не можеш да осигуриш минимален импулс.
|
| Пон Мар 23, 2015 6:11 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
 Re: Софтуерен ресет на STM32F407.
Защо ? Съмнясва ме да не работи надежно - RESET линията ще възприеме сигнала като RESET след определено време, а докато не го възприеме професора би трябвало да работи и I/O пина да си стои в зададеното RESET ниво.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Пон Мар 23, 2015 6:24 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8382 Местоположение: София
|
 Re: Софтуерен ресет на STM32F407.
Ако занулиш програм каунтъра (R15) кво ще стане? 
|
| Вто Мар 24, 2015 4:49 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: Софтуерен ресет на STM32F407.
боза  Ресет вектора на този проц е нула, обаче при куртексите ресет вектора сочи към табличка с 2 елемента - стек поинтер и начален адрес. Демек на адрес 0 нямаш код, а данни така че не е добра идея да джъмпваш към адрес 0. Но дори и към правилния адрес на ресет вектора пак не е добра идея просто така да джъмпваш... Курът има нещо като хардуерен стек за ексепшъните, в който се пъха текущия приоритет при влизане в ексепшън (прекъсване). Задължително като влизаш, трябва да влизаш в по-висок приоритет. И обратно при излизане се следи дали излизаш в по-нисък. Това нещо няма заобикаляне и ако все пак се опиташ да го прескочиш ти гърми с hard fault ексепшън. Та ако искаш да рестартираш без да ресетваш нищо трябва да се погрижиш да симулираш "излизания" докато нивото падне до нулево и чак тогава може да джъмпнеш към ресет процедурата. Ако някой се интересува ще му дам код за чистенето... но по принцип по-добре да се мине през софтуерен или хардуерен ресет. Изключение се налага само ако умишлено искаш да избегнеш ресети.
|
| Вто Мар 24, 2015 5:06 pm |
|
 |
|
woody
Ранг: Форумен бог
Регистриран на: Вто Юли 31, 2007 2:55 pm Мнения: 1792 Местоположение: София
|
 Re: Софтуерен ресет на STM32F407.
Ресетирането вътре е доволно сложно - комбинация от синхронно и асинхронно, с автомат (FSM) да вкарва ред. Така най-вероятно ще се получи глич, който ще обърка всичко.
|
| Вто Мар 24, 2015 10:46 pm |
|
|