X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=examples%2Ftriface%2Fboot%2Fmain.c;h=1382ab9e55ca2867d4c17c9508c01925d9ab0b34;hb=5f884bba3f826f323189c1109aa3eae33d4c5a1d;hp=dc105baf0374a10c02de0ee5ce608012b89edc5b;hpb=24c21c92d29b76a3f0de0a107f4bafef7bb0f812;p=bertos.git diff --git a/examples/triface/boot/main.c b/examples/triface/boot/main.c index dc105baf..1382ab9e 100644 --- a/examples/triface/boot/main.c +++ b/examples/triface/boot/main.c @@ -46,21 +46,47 @@ * \author Daniele Basile */ +#include "hw/hw_boot.h" +#include "cfg/cfg_ser.h" + #include + #include #include #include /* BV() */ -#include #include #include #include -#include "hw/hw_boot.h" -#include "cfg/cfg_boot.h" - #include +#include + +/* + * Watchdog disable. + * + * This function disable the watchdog timer, after a reset. + * We should do it after the software reset (do with watchdog), + * because in new AVR core do not reset the watchdog after + * a cpu reset, so the watchdog timer remain enable resetting + * every timeout time the cpu. This is necessary only with new + * AVR core, for the other core this no have effect. + * + * \{ + */ +// Function prototype of watchdog reset. +void wdt_init(void) __attribute__((naked)) __attribute__((section(".init3"))); +// Function implementation of watchdog reset. +void wdt_init(void) +{ + MCUSR = 0; + wdt_disable(); + + return; +} +/* \} */ + int main(void) { FlashAvr flash; @@ -77,11 +103,10 @@ int main(void) kdbg_init(); timer_init(); - /* Open the main communication port */ - ser_init(&ser, CONFIG_SER_HOSTPORT); - ser_setbaudrate(&ser, CONFIG_SER_HOSTPORTBAUDRATE); + ser_init(&ser, CONFIG_BOOT_PORT); + ser_setbaudrate(&ser, CONFIG_BOOT_BAUDRATE); xmodem_recv(&ser, &flash.fd); kfile_close(&flash.fd);