<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Using the backup watchdog (coldfire v2) in MQX with a bootloader causes a freeze? in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/Using-the-backup-watchdog-coldfire-v2-in-MQX-with-a-bootloader/m-p/197027#M4157</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The problem: when the backup watchdog is 'exercised' to confirm that it is operating properly, it causes a system freeze that is not recoverable unless I cycle power. Obviously I desired it to cause the system to reset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The setup: (a bit convoluted) I have a codewarrior pre-ecliple project that is a bootloader; suffice to say that I start up the backup watchdog in this bootloader, and have test it to successfully cause a reboot. Once the system jumps from this code into my main code, which is a Codewarrior 10 project w/MQX, I continue to feed the watchdog during normal operation using identical code to that present in the bootloader:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// watchdog_task.c&lt;BR /&gt;//&lt;BR /&gt;// Task to control the hardware watchdog; will force a reset of the system if&lt;BR /&gt;// something causes this task to crash.&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;#include &amp;lt;mqx.h&amp;gt;&lt;BR /&gt;#include &amp;lt;bsp.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;#include "task_template.h"&lt;BR /&gt;#include "watchdog_task.h"&lt;BR /&gt;&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// private defines&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// point directly at the watchdog registers. For some reason MQX does not supply&lt;BR /&gt;// a way to access these particular registers within the IPSBAR&lt;BR /&gt;//#define WATCHDOG_TASK_WCR (*(volatile uint_16 *)(0x40140000))&lt;BR /&gt;//#define WATCHDOG_TASK_WMR (*(volatile uint_16 *)(0x40140002))&lt;BR /&gt;//#define WATCHDOG_TASK_WSR (*(volatile uint_16 *)(0x40140006))&lt;BR /&gt;&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// global variables&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;extern FILE_PTR g_ittyb_fptr;&lt;BR /&gt;&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// watchdog_task&lt;BR /&gt;//&lt;BR /&gt;// Handles setting up and feeding the watchdog.&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;void watchdog_task(uint_32 parameter) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VMCF5225_STRUCT_PTR mcf5225_ptr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VMCF5225_WATCHDOG_STRUCT_PTR w_ptr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;_int_disable();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// initialize the watchdog registers - grab IPSBAR&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mcf5225_ptr = _PSP_GET_IPSBAR();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr = (VMCF5225_WATCHDOG_STRUCT_PTR)0x40140000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// set BWCR register with proper values for the clock source&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mcf5225_ptr-&amp;gt;CLK.BWCR = (0 &amp;lt;&amp;lt; 0);&amp;nbsp;&amp;nbsp; &amp;nbsp;// the source for the BWT is half the system frequency&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// determine the desired timeout period and write it to WMR&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// tau = 25 nS&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// T = [(WM + 1) * 4096 + 4] * tau = 5 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WMR = 0xBEBB;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WMR = 0xBEBB;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// watch-dog timer control register&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WCR =&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 4) |&amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on STOP mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WCR =&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 4) |&amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on STOP mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 3) |&amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on WAIT mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 2) | &amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on DOZE mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 0);&amp;nbsp;&amp;nbsp; &amp;nbsp;// enable BACKUP_WATCHDOG_TIMER&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(TRUE) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;_int_disable();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// feed the watch-dog&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WSR = 0x5555;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WSR = 0xAAAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WSR = 0x5555;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WSR = 0xAAAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;_int_enable();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// wait&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf(g_ittyb_fptr, "fed\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;_time_delay(2000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was experimenting with enabling/disabling interrupts, and using the w_ptr instead of the directly accessed registers, but I get the same results either way.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Anyway, what I think the problem may be, is that when the system tries to reset once it is in the main code, it jumps somewhere incorrectly to reset; ie the reset vector is not set up properly. I don't know where this is set or how to check or change it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my linker command file for the MQX project:&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;BR /&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt;## intflash&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00000000, LENGTH = 0x00080000&lt;BR /&gt;## sram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x20000000, LENGTH = 0x00010000&lt;BR /&gt;&amp;nbsp;&amp;nbsp; vectorrom&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00008000, LENGTH = 0x00000400&lt;BR /&gt;&amp;nbsp;&amp;nbsp; cfmprotrom&amp;nbsp; (RX): ORIGIN = 0x00008400, LENGTH = 0x00000020&lt;BR /&gt;&amp;nbsp;&amp;nbsp; tramp &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00008420, LENGTH = 0x00000020&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; rom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00008440, LENGTH = 0x00077B00&amp;nbsp; # Code + Const data&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x20000000, LENGTH = 0x00010000&amp;nbsp; # SRAM - RW data&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # kernel space starts after RAM variables (Location of MQX Kernel data + MQX heap)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end_of_kd&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x2000FFF0, LENGTH = 0x00000000&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Boot stack reused by MQX Kernel data&lt;BR /&gt;&amp;nbsp;&amp;nbsp; bstack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x2000FA00, LENGTH = 0x00000200&amp;nbsp; # Boot stack&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end_bstack&amp;nbsp; (RW): ORIGIN = 0x2000FBFF, LENGTH = 0x00000000&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;KEEP_SECTION { .vectors_rom, .vectors_ram, .cfmconfig, .trampoline }&lt;BR /&gt;&lt;BR /&gt;SECTIONS&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_SRAM_BASE&amp;nbsp; = 0x20000000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_SRAM_SIZE&amp;nbsp; = 0x00010000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_FLASH_BASE = 0x00000000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_FLASH_SIZE = 0x00080000;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___IPSBAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x40000000; # Peripherals/FlexCAN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_TABLE_START&amp;nbsp; = 0x20000000; # Runtime vector table in sram&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # MQX link time configurations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___DEFAULT_PROCESSOR_NUMBER = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___DEFAULT_INTERRUPT_STACK_SIZE = 1024;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___KERNEL_DATA_VERIFY_ENABLE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Test SDRAM read/write&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Flashx configurations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___FLASHX_SECT_SIZE = 0x1000;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;.vectors :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_TABLE_ROM_START = .;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Runtime vector table in sram&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.vectors_rom)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;. = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;gt; vectorrom&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;.cfmprotect :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.cfmconfig)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;. = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;gt; cfmprotrom&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .trampoline :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.trampoline)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;. = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;gt; tramp&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; .main_application :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(KERNEL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(S_BOOT)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(IPSUM)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.text)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.init)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.fini)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.eini)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.ctors)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.dtors)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .= ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.rodata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .= ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.rdata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.exception)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_start__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXCEPTION&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_end__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___sinit__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATICINIT&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .= ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __COPY_OF_DATA = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .main_application_data : AT(__COPY_OF_DATA)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x10000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_TABLE_RAM_START = .;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Runtime vector table in sram&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.vectors_ram)&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(512);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BDT_BASE = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.usb_bdt)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BDT_END = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_DATA = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_DATA = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SDATA = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.sdata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SDATA = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE&amp;nbsp; = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE_ = __SDA_BASE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; ram&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .main_application_bss :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SBSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.sbss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(SCOMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SBSS = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.bss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(COMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt;&amp;gt; ram&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .kernel_data : #AT(ADDR(.main_application_bss) + SIZEOF(.main_application_bss))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___KERNEL_DATA_START = ALIGN(0x10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .end_of_kernel_data :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___KERNEL_DATA_END = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; end_of_kd&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .boot_stack :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stack_end = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; bstack&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .end_of_boot_stack :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stack_addr&amp;nbsp; = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SP_INIT&amp;nbsp;&amp;nbsp;&amp;nbsp; = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___BOOT_STACK_ADDRESS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; end_bstack&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Locate the ROM copy table into ROM after the initialized data&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _romp_at = __COPY_OF_DATA + SIZEOF(.main_application_data);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .romp : AT (_romp_at)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __S_romp = _romp_at;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(__COPY_OF_DATA);&amp;nbsp;&amp;nbsp; #ROM start address&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(ADDR(.main_application_data));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #RAM start address&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(SIZEOF(.main_application_data));&amp;nbsp;&amp;nbsp;&amp;nbsp; #size&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _flashx_start = __COPY_OF_DATA + SIZEOF(.main_application_data) +&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SIZEOF(.romp);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# flashx working area spans across the whole rest of Flash memory&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___FLASHX_START_ADDR = (_flashx_start + 0xfff) / 0x1000 * 0x1000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___FLASHX_END_ADDR = ___INTERNAL_FLASH_BASE + ___INTERNAL_FLASH_SIZE;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/* EOF */&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, here is my user config:&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;/**HEADER********************************************************************&lt;BR /&gt;*&lt;BR /&gt;* Copyright (c) 2008 Freescale Semiconductor;&lt;BR /&gt;* All Rights Reserved&lt;BR /&gt;*&lt;BR /&gt;***************************************************************************&lt;BR /&gt;*&lt;BR /&gt;* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR&lt;BR /&gt;* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES&lt;BR /&gt;* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. &amp;nbsp;&lt;BR /&gt;* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,&lt;BR /&gt;* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;BR /&gt;* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR&lt;BR /&gt;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)&lt;BR /&gt;* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,&lt;BR /&gt;* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING&lt;BR /&gt;* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF&lt;BR /&gt;* THE POSSIBILITY OF SUCH DAMAGE.&lt;BR /&gt;*&lt;BR /&gt;**************************************************************************&lt;BR /&gt;*&lt;BR /&gt;* $FileName: user_config.h$&lt;BR /&gt;* $Version : 3.6.33.0$&lt;BR /&gt;* $Date&amp;nbsp;&amp;nbsp;&amp;nbsp; : Jun-14-2010$&lt;BR /&gt;*&lt;BR /&gt;* Comments:&lt;BR /&gt;*&lt;BR /&gt;*&amp;nbsp;&amp;nbsp; User configuration for MQX components&lt;BR /&gt;*&lt;BR /&gt;*END************************************************************************/&lt;BR /&gt;&lt;BR /&gt;#ifndef __user_config_h__&lt;BR /&gt;#define __user_config_h__&lt;BR /&gt;&lt;BR /&gt;/* mandatory CPU identification */&lt;BR /&gt;#define MQX_CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSP_CPU_MCF52259&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** BSP settings - for defaults see mqx\source\bsp\&amp;lt;board_name&amp;gt;\&amp;lt;board_name&amp;gt;.h&lt;BR /&gt;*/&lt;BR /&gt;#define BSPCFG_ENABLE_RTCDEV&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_TTYA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_TTYB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_TTYC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_ITTYA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_ITTYB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_ITTYC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_I2C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_I2C1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_II2C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_II2C1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_SPI0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_ISPI0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_ADC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_GPIODEV&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_FLASHX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&lt;BR /&gt;#define BSPCFG_RX_RING_LEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;BR /&gt;#define BSPCFG_TX_RING_LEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;BR /&gt;&lt;BR /&gt;// added by SAM for the ADX and HLX projects&lt;BR /&gt;#define MQX_TASK_DESTRUCTION&amp;nbsp;&amp;nbsp; &amp;nbsp; 1&amp;nbsp;&amp;nbsp; &amp;nbsp;// to use _task_abort and exit handlers&lt;BR /&gt;#define MQX_EXIT_ENABLED&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0&amp;nbsp;&amp;nbsp; &amp;nbsp;// don't need to use _mqx_exit()&lt;BR /&gt;#define MQX_ROM_VECTORS&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0 &amp;nbsp;&amp;nbsp; &amp;nbsp;// not using ROM interrupt vectors (relocating into RAM)&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** board-specific MQX settings - see for defaults mqx\source\include\mqx_cnfg.h&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;#define MQX_HAS_TIME_SLICE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** board-specific RTCS settings - see for defaults rtcs\source\include\rtcscfg.h&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;#define RTCSCFG_ENABLE_ICMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define RTCSCFG_ENABLE_UDP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define RTCSCFG_ENABLE_TCP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define RTCSCFG_ENABLE_STATS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define RTCSCFG_ENABLE_GATEWAYS&amp;nbsp; 1&lt;BR /&gt;#define FTPDCFG_USES_MFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&lt;BR /&gt;#define TELNETDCFG_NOWAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FALSE&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** include common settings&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;/* use the rest of defaults from small-RAM-device profile */&lt;BR /&gt;#include "small_ram_config.h"&lt;BR /&gt;&lt;BR /&gt;/* and enable verification checks in kernel */&lt;BR /&gt;#include "verif_enabled_config.h"&lt;BR /&gt;&lt;BR /&gt;#endif&lt;BR /&gt;/* EOF */&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As you can see, I'm telling MQX not to use ROM vectors, and I have a section 'tramp' which contains the address to jump to for the bootloader.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for any help!&lt;/P&gt;&lt;P&gt;Steve&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 06 Apr 2011 20:33:22 GMT</pubDate>
    <dc:creator>samalo0</dc:creator>
    <dc:date>2011-04-06T20:33:22Z</dc:date>
    <item>
      <title>Using the backup watchdog (coldfire v2) in MQX with a bootloader causes a freeze?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Using-the-backup-watchdog-coldfire-v2-in-MQX-with-a-bootloader/m-p/197027#M4157</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The problem: when the backup watchdog is 'exercised' to confirm that it is operating properly, it causes a system freeze that is not recoverable unless I cycle power. Obviously I desired it to cause the system to reset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The setup: (a bit convoluted) I have a codewarrior pre-ecliple project that is a bootloader; suffice to say that I start up the backup watchdog in this bootloader, and have test it to successfully cause a reboot. Once the system jumps from this code into my main code, which is a Codewarrior 10 project w/MQX, I continue to feed the watchdog during normal operation using identical code to that present in the bootloader:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// watchdog_task.c&lt;BR /&gt;//&lt;BR /&gt;// Task to control the hardware watchdog; will force a reset of the system if&lt;BR /&gt;// something causes this task to crash.&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;#include &amp;lt;mqx.h&amp;gt;&lt;BR /&gt;#include &amp;lt;bsp.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;#include "task_template.h"&lt;BR /&gt;#include "watchdog_task.h"&lt;BR /&gt;&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// private defines&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// point directly at the watchdog registers. For some reason MQX does not supply&lt;BR /&gt;// a way to access these particular registers within the IPSBAR&lt;BR /&gt;//#define WATCHDOG_TASK_WCR (*(volatile uint_16 *)(0x40140000))&lt;BR /&gt;//#define WATCHDOG_TASK_WMR (*(volatile uint_16 *)(0x40140002))&lt;BR /&gt;//#define WATCHDOG_TASK_WSR (*(volatile uint_16 *)(0x40140006))&lt;BR /&gt;&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// global variables&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;extern FILE_PTR g_ittyb_fptr;&lt;BR /&gt;&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;// watchdog_task&lt;BR /&gt;//&lt;BR /&gt;// Handles setting up and feeding the watchdog.&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;void watchdog_task(uint_32 parameter) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VMCF5225_STRUCT_PTR mcf5225_ptr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VMCF5225_WATCHDOG_STRUCT_PTR w_ptr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;_int_disable();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// initialize the watchdog registers - grab IPSBAR&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mcf5225_ptr = _PSP_GET_IPSBAR();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr = (VMCF5225_WATCHDOG_STRUCT_PTR)0x40140000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// set BWCR register with proper values for the clock source&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mcf5225_ptr-&amp;gt;CLK.BWCR = (0 &amp;lt;&amp;lt; 0);&amp;nbsp;&amp;nbsp; &amp;nbsp;// the source for the BWT is half the system frequency&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// determine the desired timeout period and write it to WMR&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// tau = 25 nS&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// T = [(WM + 1) * 4096 + 4] * tau = 5 seconds&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WMR = 0xBEBB;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WMR = 0xBEBB;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// watch-dog timer control register&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WCR =&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 4) |&amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on STOP mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WCR =&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 4) |&amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on STOP mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 3) |&amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on WAIT mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 2) | &amp;nbsp;&amp;nbsp; &amp;nbsp;// stop on DOZE mode&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(1 &amp;lt;&amp;lt; 0);&amp;nbsp;&amp;nbsp; &amp;nbsp;// enable BACKUP_WATCHDOG_TIMER&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while(TRUE) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;_int_disable();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// feed the watch-dog&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WSR = 0x5555;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;w_ptr-&amp;gt;WSR = 0xAAAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WSR = 0x5555;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//WATCHDOG_TASK_WSR = 0xAAAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;_int_enable();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// wait&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;fprintf(g_ittyb_fptr, "fed\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;_time_delay(2000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;}&lt;BR /&gt;//------------------------------------------------------------------------------&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was experimenting with enabling/disabling interrupts, and using the w_ptr instead of the directly accessed registers, but I get the same results either way.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Anyway, what I think the problem may be, is that when the system tries to reset once it is in the main code, it jumps somewhere incorrectly to reset; ie the reset vector is not set up properly. I don't know where this is set or how to check or change it.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my linker command file for the MQX project:&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;BR /&gt;MEMORY&lt;BR /&gt;{&lt;BR /&gt;## intflash&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00000000, LENGTH = 0x00080000&lt;BR /&gt;## sram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x20000000, LENGTH = 0x00010000&lt;BR /&gt;&amp;nbsp;&amp;nbsp; vectorrom&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00008000, LENGTH = 0x00000400&lt;BR /&gt;&amp;nbsp;&amp;nbsp; cfmprotrom&amp;nbsp; (RX): ORIGIN = 0x00008400, LENGTH = 0x00000020&lt;BR /&gt;&amp;nbsp;&amp;nbsp; tramp &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00008420, LENGTH = 0x00000020&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; rom&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX): ORIGIN = 0x00008440, LENGTH = 0x00077B00&amp;nbsp; # Code + Const data&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x20000000, LENGTH = 0x00010000&amp;nbsp; # SRAM - RW data&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # kernel space starts after RAM variables (Location of MQX Kernel data + MQX heap)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end_of_kd&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x2000FFF0, LENGTH = 0x00000000&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Boot stack reused by MQX Kernel data&lt;BR /&gt;&amp;nbsp;&amp;nbsp; bstack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW): ORIGIN = 0x2000FA00, LENGTH = 0x00000200&amp;nbsp; # Boot stack&lt;BR /&gt;&amp;nbsp;&amp;nbsp; end_bstack&amp;nbsp; (RW): ORIGIN = 0x2000FBFF, LENGTH = 0x00000000&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;KEEP_SECTION { .vectors_rom, .vectors_ram, .cfmconfig, .trampoline }&lt;BR /&gt;&lt;BR /&gt;SECTIONS&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_SRAM_BASE&amp;nbsp; = 0x20000000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_SRAM_SIZE&amp;nbsp; = 0x00010000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_FLASH_BASE = 0x00000000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___INTERNAL_FLASH_SIZE = 0x00080000;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___IPSBAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x40000000; # Peripherals/FlexCAN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_TABLE_START&amp;nbsp; = 0x20000000; # Runtime vector table in sram&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # MQX link time configurations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___DEFAULT_PROCESSOR_NUMBER = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___DEFAULT_INTERRUPT_STACK_SIZE = 1024;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___KERNEL_DATA_VERIFY_ENABLE = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Test SDRAM read/write&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Flashx configurations&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ___FLASHX_SECT_SIZE = 0x1000;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;.vectors :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_TABLE_ROM_START = .;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Runtime vector table in sram&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.vectors_rom)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;. = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;gt; vectorrom&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;.cfmprotect :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.cfmconfig)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;. = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;gt; cfmprotrom&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .trampoline :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.trampoline)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;. = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;} &amp;gt; tramp&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; .main_application :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(KERNEL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(S_BOOT)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(IPSUM)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.text)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.init)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.fini)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.eini)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.ctors)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.dtors)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .= ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.rodata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .= ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.rdata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.exception)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_start__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXCEPTION&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_end__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___sinit__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATICINIT&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .= ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __COPY_OF_DATA = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; rom&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .main_application_data : AT(__COPY_OF_DATA)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x10000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_TABLE_RAM_START = .;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Runtime vector table in sram&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;*(.vectors_ram)&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(512);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BDT_BASE = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.usb_bdt)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __BDT_END = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_DATA = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_DATA = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SDATA = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.sdata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SDATA = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE&amp;nbsp; = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE_ = __SDA_BASE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; ram&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .main_application_bss :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SBSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.sbss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(SCOMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SBSS = .;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(.bss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(COMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt;&amp;gt; ram&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .kernel_data : #AT(ADDR(.main_application_bss) + SIZEOF(.main_application_bss))&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___KERNEL_DATA_START = ALIGN(0x10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .end_of_kernel_data :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___KERNEL_DATA_END = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; end_of_kd&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .boot_stack :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stack_end = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; bstack&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .end_of_boot_stack :&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stack_addr&amp;nbsp; = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SP_INIT&amp;nbsp;&amp;nbsp;&amp;nbsp; = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___BOOT_STACK_ADDRESS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; } &amp;gt; end_bstack&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; # Locate the ROM copy table into ROM after the initialized data&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _romp_at = __COPY_OF_DATA + SIZEOF(.main_application_data);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; .romp : AT (_romp_at)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __S_romp = _romp_at;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(__COPY_OF_DATA);&amp;nbsp;&amp;nbsp; #ROM start address&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(ADDR(.main_application_data));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #RAM start address&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(SIZEOF(.main_application_data));&amp;nbsp;&amp;nbsp;&amp;nbsp; #size&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _flashx_start = __COPY_OF_DATA + SIZEOF(.main_application_data) +&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;SIZEOF(.romp);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# flashx working area spans across the whole rest of Flash memory&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___FLASHX_START_ADDR = (_flashx_start + 0xfff) / 0x1000 * 0x1000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___FLASHX_END_ADDR = ___INTERNAL_FLASH_BASE + ___INTERNAL_FLASH_SIZE;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/* EOF */&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, here is my user config:&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;/**HEADER********************************************************************&lt;BR /&gt;*&lt;BR /&gt;* Copyright (c) 2008 Freescale Semiconductor;&lt;BR /&gt;* All Rights Reserved&lt;BR /&gt;*&lt;BR /&gt;***************************************************************************&lt;BR /&gt;*&lt;BR /&gt;* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR&lt;BR /&gt;* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES&lt;BR /&gt;* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. &amp;nbsp;&lt;BR /&gt;* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,&lt;BR /&gt;* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES&lt;BR /&gt;* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR&lt;BR /&gt;* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)&lt;BR /&gt;* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,&lt;BR /&gt;* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING&lt;BR /&gt;* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF&lt;BR /&gt;* THE POSSIBILITY OF SUCH DAMAGE.&lt;BR /&gt;*&lt;BR /&gt;**************************************************************************&lt;BR /&gt;*&lt;BR /&gt;* $FileName: user_config.h$&lt;BR /&gt;* $Version : 3.6.33.0$&lt;BR /&gt;* $Date&amp;nbsp;&amp;nbsp;&amp;nbsp; : Jun-14-2010$&lt;BR /&gt;*&lt;BR /&gt;* Comments:&lt;BR /&gt;*&lt;BR /&gt;*&amp;nbsp;&amp;nbsp; User configuration for MQX components&lt;BR /&gt;*&lt;BR /&gt;*END************************************************************************/&lt;BR /&gt;&lt;BR /&gt;#ifndef __user_config_h__&lt;BR /&gt;#define __user_config_h__&lt;BR /&gt;&lt;BR /&gt;/* mandatory CPU identification */&lt;BR /&gt;#define MQX_CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSP_CPU_MCF52259&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** BSP settings - for defaults see mqx\source\bsp\&amp;lt;board_name&amp;gt;\&amp;lt;board_name&amp;gt;.h&lt;BR /&gt;*/&lt;BR /&gt;#define BSPCFG_ENABLE_RTCDEV&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_TTYA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_TTYB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_TTYC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_ITTYA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_ITTYB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_ITTYC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_I2C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_I2C1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_II2C0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_II2C1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_SPI0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_ISPI0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_ADC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define BSPCFG_ENABLE_GPIODEV&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define BSPCFG_ENABLE_FLASHX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&lt;BR /&gt;#define BSPCFG_RX_RING_LEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;BR /&gt;#define BSPCFG_TX_RING_LEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;BR /&gt;&lt;BR /&gt;// added by SAM for the ADX and HLX projects&lt;BR /&gt;#define MQX_TASK_DESTRUCTION&amp;nbsp;&amp;nbsp; &amp;nbsp; 1&amp;nbsp;&amp;nbsp; &amp;nbsp;// to use _task_abort and exit handlers&lt;BR /&gt;#define MQX_EXIT_ENABLED&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0&amp;nbsp;&amp;nbsp; &amp;nbsp;// don't need to use _mqx_exit()&lt;BR /&gt;#define MQX_ROM_VECTORS&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 0 &amp;nbsp;&amp;nbsp; &amp;nbsp;// not using ROM interrupt vectors (relocating into RAM)&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** board-specific MQX settings - see for defaults mqx\source\include\mqx_cnfg.h&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;#define MQX_HAS_TIME_SLICE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** board-specific RTCS settings - see for defaults rtcs\source\include\rtcscfg.h&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;#define RTCSCFG_ENABLE_ICMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define RTCSCFG_ENABLE_UDP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define RTCSCFG_ENABLE_TCP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;#define RTCSCFG_ENABLE_STATS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;#define RTCSCFG_ENABLE_GATEWAYS&amp;nbsp; 1&lt;BR /&gt;#define FTPDCFG_USES_MFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;&lt;BR /&gt;#define TELNETDCFG_NOWAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FALSE&lt;BR /&gt;&lt;BR /&gt;/*&lt;BR /&gt;** include common settings&lt;BR /&gt;*/&lt;BR /&gt;&lt;BR /&gt;/* use the rest of defaults from small-RAM-device profile */&lt;BR /&gt;#include "small_ram_config.h"&lt;BR /&gt;&lt;BR /&gt;/* and enable verification checks in kernel */&lt;BR /&gt;#include "verif_enabled_config.h"&lt;BR /&gt;&lt;BR /&gt;#endif&lt;BR /&gt;/* EOF */&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As you can see, I'm telling MQX not to use ROM vectors, and I have a section 'tramp' which contains the address to jump to for the bootloader.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for any help!&lt;/P&gt;&lt;P&gt;Steve&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&lt;BR /&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 06 Apr 2011 20:33:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Using-the-backup-watchdog-coldfire-v2-in-MQX-with-a-bootloader/m-p/197027#M4157</guid>
      <dc:creator>samalo0</dc:creator>
      <dc:date>2011-04-06T20:33:22Z</dc:date>
    </item>
    <item>
      <title>Re: Using the backup watchdog (coldfire v2) in MQX with a bootloader causes a freeze?</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Using-the-backup-watchdog-coldfire-v2-in-MQX-with-a-bootloader/m-p/197028#M4158</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It happen to you because registers:&lt;/P&gt;&lt;P&gt;WMR and WCR are written only one time for Power On Reset and If you have a bootloader you should refresh it in the bootloader in other way the system hard reset each 5 seconds.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I hope it help you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Nov 2011 03:43:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Using-the-backup-watchdog-coldfire-v2-in-MQX-with-a-bootloader/m-p/197028#M4158</guid>
      <dc:creator>rpalenc</dc:creator>
      <dc:date>2011-11-22T03:43:18Z</dc:date>
    </item>
  </channel>
</rss>

