From 229dc61c6530375efd3419a152929b60f6e70187 Mon Sep 17 00:00:00 2001 From: Thomas Roell Date: Sat, 25 Feb 2017 07:34:22 -0700 Subject: [PATCH] Add IWDG as STM32.wdtEnable(timeout) / STM32.wdtReset() --- cores/stm32l4/STM32.cpp | 18 +++++++ cores/stm32l4/STM32.h | 4 ++ cores/stm32l4/stm32l4_wiring_private.h | 1 + system/STM32L4xx/Include/stm32l4_iwdg.h | 51 ++++++++++++++++++ system/STM32L4xx/Lib/boot_stm32l432.o | Bin 19015 -> 19031 bytes system/STM32L4xx/Lib/boot_stm32l433.o | Bin 19015 -> 19031 bytes system/STM32L4xx/Lib/boot_stm32l476.o | Bin 19431 -> 19447 bytes system/STM32L4xx/Lib/libstm32l432.a | Bin 1135098 -> 1139482 bytes system/STM32L4xx/Lib/libstm32l433.a | Bin 1200558 -> 1204942 bytes system/STM32L4xx/Lib/libstm32l476.a | Bin 1303800 -> 1308184 bytes system/STM32L4xx/Source/Makefile | 1 + system/STM32L4xx/Source/boot_stm32l4xx.c | 2 +- system/STM32L4xx/Source/stm32l4_iwdg.c | 66 +++++++++++++++++++++++ system/STM32L4xx/Source/stm32l4_system.c | 14 +++-- 14 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 system/STM32L4xx/Include/stm32l4_iwdg.h create mode 100644 system/STM32L4xx/Source/stm32l4_iwdg.c diff --git a/cores/stm32l4/STM32.cpp b/cores/stm32l4/STM32.cpp index 0a672255..e943390b 100644 --- a/cores/stm32l4/STM32.cpp +++ b/cores/stm32l4/STM32.cpp @@ -45,6 +45,13 @@ uint64_t STM32Class::getSerial() return (((uint64_t)serial0 << 16) | ((uint64_t)serial1 >> 16)); } +void STM32Class::getUID(uint32_t uid[3]) +{ + uid[0] = *((uint32_t*)0x1fff7590); + uid[1] = *((uint32_t*)0x1fff7594); + uid[2] = *((uint32_t*)0x1fff7598); +} + float STM32Class::getVBAT() { int32_t vbat_data, vref_data, vrefint; @@ -196,6 +203,17 @@ void STM32Class::reset() stm32l4_system_reset(); } +void STM32Class::wdtEnable(uint32_t timeout) +{ + stm32l4_iwdg_enable(timeout); +} + +void STM32Class::wdtReset() +{ + stm32l4_iwdg_reset(); +} + + bool STM32Class::flashErase(uint32_t address, uint32_t count) { if (address & 2047) { diff --git a/cores/stm32l4/STM32.h b/cores/stm32l4/STM32.h index d8f0cac5..5b5bea2c 100644 --- a/cores/stm32l4/STM32.h +++ b/cores/stm32l4/STM32.h @@ -56,6 +56,7 @@ class STM32Class { public: uint64_t getSerial(); + void getUID(uint32_t uid[3]); float getVBAT(); float getVREF(); @@ -72,6 +73,9 @@ class STM32Class { void shutdown(uint32_t pin, uint32_t mode, uint32_t timeout = 0); void reset(); + void wdtEnable(uint32_t timeout); + void wdtReset(); + bool flashErase(uint32_t address, uint32_t count); bool flashProgram(uint32_t address, const void *data, uint32_t count); diff --git a/cores/stm32l4/stm32l4_wiring_private.h b/cores/stm32l4/stm32l4_wiring_private.h index 4cbe7182..3487f6af 100644 --- a/cores/stm32l4/stm32l4_wiring_private.h +++ b/cores/stm32l4/stm32l4_wiring_private.h @@ -51,6 +51,7 @@ extern "C" { #include "stm32l4_flash.h" #include "stm32l4_sdmmc.h" #include "stm32l4_sdspi.h" +#include "stm32l4_iwdg.h" #define STM32L4_SVCALL_IRQ_PRIORITY 15 #define STM32L4_PENDSV_IRQ_PRIORITY 15 diff --git a/system/STM32L4xx/Include/stm32l4_iwdg.h b/system/STM32L4xx/Include/stm32l4_iwdg.h new file mode 100644 index 00000000..4de2212d --- /dev/null +++ b/system/STM32L4xx/Include/stm32l4_iwdg.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2017 Thomas Roell. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal with the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimers. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimers in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Thomas Roell, nor the names of its contributors + * may be used to endorse or promote products derived from this Software + * without specific prior written permission. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * WITH THE SOFTWARE. + */ + +#if !defined(_STM32L4_IWDG_H) +#define _STM32L4_IWDG_H + +#include + +#include "stm32l4xx.h" + +#ifdef __cplusplus + extern "C" { +#endif + +extern void stm32l4_iwdg_enable(uint32_t timeout); + +static inline void stm32l4_iwdg_reset(void) +{ + IWDG->KR = 0xaaaa; +} + +#ifdef __cplusplus +} +#endif + +#endif /* _STM32L4_NVIC_H */ diff --git a/system/STM32L4xx/Lib/boot_stm32l432.o b/system/STM32L4xx/Lib/boot_stm32l432.o index 26267d63c19ecf832671392938a8beb589a9cb0d..4197436df7095dcdfa9bc635b751c1d85031cc34 100644 GIT binary patch delta 495 zcmZwDPe{{Y7zgn8dAHx3`R`}Wma=41@x@Sbn{$jh=sHXV+3Zq!h=~XjqY%8OHwP0p zzC&~;yV(sY=nq?2}1uJQ6M z?efQdDe1JO7T(r(4(hSt*lf`{zgY|~ZWiAxT0;@I$Q6n3u}rKvZ<4`0$xO77`wQ;Z zWh3{gvYXvZG<+_eWeZaF7UWnhr{iF@AmrW2J(DWGPjMw^F1#KI4$0w>1(oB{a%cy&`S5_NG51vTWIXn4YpEFd$ zCI0BMq%?*+EwqejkD?q_JPNwE5;>299^#Z!)N6*#+e&K)col77jO{?2E#V{k3P0Ho zpl(G6XlH+8_`h}}yLHa*IG^Av+mACgfCitUS@f}&nDi-2lS2rT8B4xqI>tILx8lU7 zr1dH8^tAE6+&zlEV}yNyIW~d!>^64UEH2o8aQPM8#{k=pX}_IDjky1LMeSpg;6Vs6 Yaa}bb=8Uu8uj}c33yl*O_rN{60)mUH)Bpeg delta 502 zcmXxgPe{{Y7zgn8d4JpThsJ(VXv{^wP3c7nWc%%pK?mIklMZtzNC#tOfgS=6ArwLA z$wR@`*NdaW4iS2kpWsBHq=f`3ii(H@bxIGy90Mmv_N4V5KF{}gUU*-4w#R8{oYE$J z%J};Ag7ai+qmnj_%$rwq1JiVg?!iaCCrQ4@4)}|jj1@^{Qy$L8oady6^V%H4N@LY4h~x_i3X1G``A{jmnrAD-X%fToc7Ae>Uaf|E}0e z6mcNmQe*3`eZ66ngrIldbRpa;PL6kG#rZLMaM2i`FZQr8Sxt-fHSavRh6A}a>9&7e zy)DsW8VH$Q8nu&Vhx_cs_bquzuhAE5q%n*H6%{bWrm@cYaU4`w3)bMK<)s`tEd|qZ z;F;A#O_;D0?O~C9jD2(4&eD5MZltpKZlR nw4S=`iD++iZAcSBI)r%exAM+j*c9J&@E*Q*^b?o%&N})7mHVn( diff --git a/system/STM32L4xx/Lib/boot_stm32l433.o b/system/STM32L4xx/Lib/boot_stm32l433.o index d38c2e6ae9e7a030419a808a0eaa821c427c9fcd..163110c13159b01a8c96cfc03b1b5ce7c308df5a 100644 GIT binary patch delta 495 zcmZwDPe{{Y7zgn8dH4IRsg*x!nwVwr~_~az~?lEE{hrSY)U`G8=2+{+#WvY~n=g%(D%vz1&X06UNR6zotz(|Iz4EsC^X?;wI#)a2>vM&x zxg&|^gJ|?CnnfRbfhoVTHamr|Xjt;M&=J;nxedpD zC2jqv?7qkU@^mZuhEa9|b8Hgt*-dP-Ih?b9;SMOegF$ux(*XyKnTf#Ds+t~);6Vs6 Yd0BNK=FF4O;pOzch9`)NXRv|(0cCQk^#A|> delta 502 zcmXxgUr5tY6bJBo?r)p^P}oltjXCkRC0!yxw%`63_@EnM;=>vV)kCqgKpz4hLMQ^! zCm#&9zP>no*h7Rp%1>xwP~t*@3PnRi0(-KcV2(i>NOmf{51;cr=fb^kcIRkgj?yN* z&G<(2g7f(Eb|q~ZnWvL<2}{&SgYc2>ev&V;qyC~MV?~nLl!tSb^NRFvepYjKn@uIk z;(DPZwce5(_HcI)FO-DVI=1hmos(a`PZH$^@lQP2uFROR^0-{*nkd%#vndz#Csk$;V7(RB?eFA0=-6GM9~|Ju~(5{pJ0W}<14!iJ*wy@0&FdAvE7)8 nw$L?uK6<0BA*2Z*9YWmsTX|=XZHn(Zcn@FtM~F+`Kr{UTz{{$9 diff --git a/system/STM32L4xx/Lib/boot_stm32l476.o b/system/STM32L4xx/Lib/boot_stm32l476.o index 58760e3c143587b59f51533b4a04ab94a60f6e63..6ee0cb0ebea9935ebe3715de53a72907c884e9ef 100644 GIT binary patch delta 521 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 Z+1GSTP*StJQPhaYAk*b3MNvl*{~t+n1oZ#_ delta 19060 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

rAAD~&jkv=lA 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 JGWLVy{|1p8{LBCV diff --git a/system/STM32L4xx/Lib/libstm32l433.a b/system/STM32L4xx/Lib/libstm32l433.a index 8f64a13b0991f89898760dfd4d673abe7106107b..62607a8e7d42bd2148c0d2da48f92b5be6ef578e 100644 GIT binary patch delta 21579 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 E0Yr5vG5`Po diff --git a/system/STM32L4xx/Lib/libstm32l476.a b/system/STM32L4xx/Lib/libstm32l476.a index c4138f461e7526b7312df8fc74bff7e1658876eb..563e6dd75df2124edf03930aa439ad4cb1fc7c5a 100644 GIT binary patch delta 21076 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 diff --git a/system/STM32L4xx/Source/Makefile b/system/STM32L4xx/Source/Makefile index 69557bfe..8ac07035 100644 --- a/system/STM32L4xx/Source/Makefile +++ b/system/STM32L4xx/Source/Makefile @@ -51,6 +51,7 @@ LSRCS = \ stm32l4_exti.c \ stm32l4_flash.c \ stm32l4_i2c.c \ + stm32l4_iwdg.c \ stm32l4_gpio.c \ stm32l4_nvic.c \ stm32l4_qspi.c \ diff --git a/system/STM32L4xx/Source/boot_stm32l4xx.c b/system/STM32L4xx/Source/boot_stm32l4xx.c index 650722b6..a1e2a055 100644 --- a/system/STM32L4xx/Source/boot_stm32l4xx.c +++ b/system/STM32L4xx/Source/boot_stm32l4xx.c @@ -163,7 +163,7 @@ __attribute__((naked)) void reset_stm32l4xx(void) FLASH->ACR = FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_2WS; - if (!(PWR->SR1 & PWR_SR1_SBF)) + if (!(PWR->SR1 & PWR_SR1_SBF) && !(RCC->CSR & (RCC_CSR_LPWRRSTF | RCC_CSR_WWDGRSTF | RCC_CSR_IWDGRSTF | RCC_CSR_BORRSTF | RCC_CSR_OBLRSTF | RCC_CSR_FWRSTF))) { stm32l4_iap(); } diff --git a/system/STM32L4xx/Source/stm32l4_iwdg.c b/system/STM32L4xx/Source/stm32l4_iwdg.c new file mode 100644 index 00000000..e85a0739 --- /dev/null +++ b/system/STM32L4xx/Source/stm32l4_iwdg.c @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2017 Thomas Roell. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal with the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimers. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimers in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Thomas Roell, nor the names of its contributors + * may be used to endorse or promote products derived from this Software + * without specific prior written permission. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * WITH THE SOFTWARE. + */ + +#include + +#include "stm32l4xx.h" +#include "stm32l4_iwdg.h" + +#include "armv7m.h" + +void stm32l4_iwdg_enable(uint32_t timeout) +{ + uint32_t iwdg_pr, iwdg_rl, iwdg_sr; + + if (timeout > 32000) + { + timeout = 32000; + } + + iwdg_pr = 0; + iwdg_rl = (timeout * 32768) / (4 * 1000); + + while (iwdg_rl > 4096) + { + iwdg_pr++; + iwdg_rl >>= 1; + } + + IWDG->KR = 0xcccc; + IWDG->KR = 0x5555; + IWDG->PR = iwdg_pr; + IWDG->RLR = iwdg_rl -1; + + do + { + iwdg_sr = IWDG->SR; + } + while (iwdg_sr & (IWDG_SR_WVU | IWDG_SR_RVU | IWDG_SR_PVU)); + + IWDG->KR = 0xaaaa; +} diff --git a/system/STM32L4xx/Source/stm32l4_system.c b/system/STM32L4xx/Source/stm32l4_system.c index 415712a0..82eb777f 100644 --- a/system/STM32L4xx/Source/stm32l4_system.c +++ b/system/STM32L4xx/Source/stm32l4_system.c @@ -651,27 +651,27 @@ void stm32l4_system_initialize(uint32_t hclk, uint32_t pclk1, uint32_t pclk2, ui stm32l4_system_device.reset = SYSTEM_RESET_OTHER; } - if (RCC->CSR & RCC_CSR_FWRSTF) + else if (RCC->CSR & RCC_CSR_FWRSTF) { stm32l4_system_device.reset = SYSTEM_RESET_FIREWALL; } - if (RCC->CSR & RCC_CSR_BORRSTF) + else if (RCC->CSR & RCC_CSR_BORRSTF) { stm32l4_system_device.reset = SYSTEM_RESET_BROWNOUT; } - if (RCC->CSR & (RCC_CSR_IWDGRSTF | RCC_CSR_WWDGRSTF)) + else if (RCC->CSR & (RCC_CSR_IWDGRSTF | RCC_CSR_WWDGRSTF)) { stm32l4_system_device.reset = SYSTEM_RESET_WATCHDOG; } - if (RCC->CSR & RCC_CSR_SFTRSTF) + else if (RCC->CSR & RCC_CSR_SFTRSTF) { stm32l4_system_device.reset = SYSTEM_RESET_SOFTWARE; } - if (RCC->CSR & RCC_CSR_PINRSTF) + else if (RCC->CSR & RCC_CSR_PINRSTF) { stm32l4_system_device.reset = SYSTEM_RESET_EXTERNAL; } @@ -852,6 +852,10 @@ void stm32l4_system_initialize(uint32_t hclk, uint32_t pclk1, uint32_t pclk2, ui CoreDebug->DEMCR &= ~0x01000000; } + /* Avoid IWDG/WWDG triggering reset while debugging. + */ + DBGMCU->APB1FZR1 |= (DBGMCU_APB1FZR1_DBG_IWDG_STOP | DBGMCU_APB1FZR1_DBG_WWDG_STOP); + RCC->AHB1SMENR &= ~(RCC_AHB1SMENR_FLASHSMEN | RCC_AHB1SMENR_SRAM1SMEN);