Hi Guile, I should have said "power on reset". I removed the problem (was not keen on solving it at that time) by avoiding use of GPIO pins that the boot loader has allocated for purposes of "external boot" feature (something that is not necessary and hence of dubious value in the context of embedded systems). I believe there are some registers that the boot loader fiddles with which exhibit "stuck zero" behaviour -- when one writes a zero, these bits stays zero until power on reset event. In the 2292 that I am now working on for POE application, I found that if you do not re-map interrupt vectors to your own memory space, UND, PRE, and ABT type exceptions can also cause the system to lock up in similar ways. Power on reset got me out each time this happened. Jaya > Date: Tue, 07 Feb 2006 13:07:11 -0000 > From: "Guillermo Prandi" <yahoo.messenger@...> >Subject: Re: Bootloader not always invoked after reset with P0.14 low > >Hi, Jayasooriah. What do you mean by "hard reset"? If you mean having >the reset pin low, then I *am* performing a hard reset. The problem >shows up when I attempt to access ISP via serial port (DTR goes to >RESET, RTS goes to P0.14). > >Guille Send instant messages to your online friends http://au.messenger.yahoo.com

Bootloader not always invoked after reset with P0.14 low
Started by ●February 6, 2006
Reply by ●February 7, 20062006-02-07
Reply by ●February 7, 20062006-02-07
Ooof... seems like a stinky sticking problem. I'll better attack it only if it becomes a real PITA. For the moment, instructing the programming operator to do a power-on reset by hand is perfectly acceptable. Thanks a lot. Guille --- In lpc2000@lpc2..., Jayasooriah <jayasooriah@...> wrote: > > Hi Guile, I should have said "power on reset". > > I removed the problem (was not keen on solving it at that time) by avoiding > use of GPIO pins that the boot loader has allocated for purposes of > "external boot" feature (something that is not necessary and hence of > dubious value in the context of embedded systems). > > I believe there are some registers that the boot loader fiddles with which > exhibit "stuck zero" behaviour -- when one writes a zero, these bits stays > zero until power on reset event. > > In the 2292 that I am now working on for POE application, I found that if > you do not re-map interrupt vectors to your own memory space, UND, PRE, and > ABT type exceptions can also cause the system to lock up in similar > ways. Power on reset got me out each time this happened. > > Jaya > > > Date: Tue, 07 Feb 2006 13:07:11 -0000 > > From: "Guillermo Prandi" <yahoo.messenger@> > >Subject: Re: Bootloader not always invoked after reset with P0.14 low > > > >Hi, Jayasooriah. What do you mean by "hard reset"? If you mean having > >the reset pin low, then I *am* performing a hard reset. The problem > >shows up when I attempt to access ISP via serial port (DTR goes to > >RESET, RTS goes to P0.14). > > > >Guille > > Send instant messages to your online friends http://au.messenger.yahoo.com >
Reply by ●February 22, 20062006-02-22
Hello Guille,
In case of a watchdog triggered reset, P0.14 pin is ignored by the
bootloader and the valid user application is executed. If valid user
application is not found then only isp is entered. In LPC2138 the WDT
flag is not cleared by pin reset. POR reset clears the WDT flag. What
you are observing is expected behavior. I am assuming that WD reset
happened since you have mention it.
Regards
Philips Apps
--- In lpc2000@lpc2..., "Guillermo Prandi"
<yahoo.messenger@...> wrote:
>
> Hi, I wonder if anyone has seen this before.
>
> While developing the firmware for my LPC2138-featured board, I noticed
> that the bootloader is not always invoked after a reset with P0.14 low.
> Even when the bootloader is not invoked, the device still responds to
> reset.
>
> I tested with the Philips bootloader utility, which, measured at the
> reset and P0.14 pins, gives me:
>
> 1) At T+0, P0.14 goes down from 3.3V to 0V sharply.
> 2) At T+0, Reset starts going down from 3.3V to 0V in an RC-type curve
> of 750S.
> 3) At T+750S both Reset and P0.14 are now 0V.
> 4) At T+500 mS reset starts going up, having been effectively low for
> 499mS. The rising curve is also RC-type and takes about 2 mS to reach
> 85%.
> 5) At T+840 mS, P0.14 goes up sharply. This is 338 mS *after* reset
> went high.
>
> By the spec, these figures should be large enough to trigger the
> bootloader, and it does, except when I've been playing around with my
> firmware for a while (several cycles of compile+flash programming,
> tests, an occasional crash, watchdog triggered, etc.). When the
> bootloader stops responding, the only way to regain the bootloader is
> by removing power.
> Any ideas?
>
> Guille
>
Reply by ●February 23, 20062006-02-23
My code is clearing the RISR flags at boot time by doing: #define RSIR (*((volatile unsigned char *) 0xE01FC180)) RSIR = 0x0f; After that, the boards still ignores P0.14 after a watchdog reset. Since I cleared the watchdog reset flag, I expected the bootloader to invoke ISP. Is there anything else I could do from software in order to make the bootloader honor the P0.14 pin? Guille --- In lpc2000@lpc2..., "philips_apps" <philips_apps@...> wrote: > > Hello Guille, > > In case of a watchdog triggered reset, P0.14 pin is ignored by the > bootloader and the valid user application is executed. If valid user > application is not found then only isp is entered. In LPC2138 the WDT > flag is not cleared by pin reset. POR reset clears the WDT flag. What > you are observing is expected behavior. I am assuming that WD reset > happened since you have mention it. > > Regards > Philips Apps > > --- In lpc2000@lpc2..., "Guillermo Prandi" > <yahoo.messenger@> wrote: > > > > Hi, I wonder if anyone has seen this before. > > > > While developing the firmware for my LPC2138-featured board, I noticed > > that the bootloader is not always invoked after a reset with P0.14 low. > > Even when the bootloader is not invoked, the device still responds to > > reset. > > > > I tested with the Philips bootloader utility, which, measured at the > > reset and P0.14 pins, gives me: > > > > 1) At T+0, P0.14 goes down from 3.3V to 0V sharply. > > 2) At T+0, Reset starts going down from 3.3V to 0V in an RC-type curve > > of 750S. > > 3) At T+750S both Reset and P0.14 are now 0V. > > 4) At T+500 mS reset starts going up, having been effectively low for > > 499mS. The rising curve is also RC-type and takes about 2 mS to reach > > 85%. > > 5) At T+840 mS, P0.14 goes up sharply. This is 338 mS *after* reset > > went high. > > > > By the spec, these figures should be large enough to trigger the > > bootloader, and it does, except when I've been playing around with my > > firmware for a while (several cycles of compile+flash programming, > > tests, an occasional crash, watchdog triggered, etc.). When the > > bootloader stops responding, the only way to regain the bootloader is > > by removing power. > > Any ideas? > > > > Guille > > >
Reply by ●February 23, 20062006-02-23
Hi Guile, If you look at the user manual for WTOF bit which the boot loader checks, it is quite clear that "external reset" will clear this bit. Can you try without arming the watchdog to see if the problem goes away? Jaya --- In lpc2000@lpc2..., "Guillermo Prandi" <yahoo.messenger@...> wrote: > > My code is clearing the RISR flags at boot time by doing: > > #define RSIR (*((volatile unsigned char *) 0xE01FC180)) > > RSIR = 0x0f; > > After that, the boards still ignores P0.14 after a watchdog reset. > Since I cleared the watchdog reset flag, I expected the bootloader to > invoke ISP. Is there anything else I could do from software in order > to make the bootloader honor the P0.14 pin? > > Guille > > --- In lpc2000@lpc2..., "philips_apps" <philips_apps@> > wrote: > > > > Hello Guille, > > > > In case of a watchdog triggered reset, P0.14 pin is ignored by the > > bootloader and the valid user application is executed. If valid user > > application is not found then only isp is entered. In LPC2138 the > WDT > > flag is not cleared by pin reset. POR reset clears the WDT flag. > What > > you are observing is expected behavior. I am assuming that WD reset > > happened since you have mention it. > > > > Regards > > Philips Apps Send instant messages to your online friends http://au.messenger.yahoo.com
Reply by ●February 23, 20062006-02-23
Hi, Jayasooriah. Indeed the watchdog is the problem. At this stage of development I am only using the watchdog to provide a software reset function. Apparently this behavior is triggering only after using this function. And yes, you are right; the bit should be cleared by the external reset. It looks like this behavior is 'by design' so there is no other workaround than switching off the unit. Guille --- In lpc2000@lpc2..., Jayasooriah <jayasooriah@...> wrote: > > Hi Guile, > > If you look at the user manual for WTOF bit which the boot loader checks, > it is quite clear that "external reset" will clear this bit. > > Can you try without arming the watchdog to see if the problem goes away? > > Jaya > > --- In lpc2000@lpc2..., "Guillermo Prandi" <yahoo.messenger@> wrote: > > > > My code is clearing the RISR flags at boot time by doing: > > > > #define RSIR (*((volatile unsigned char *) 0xE01FC180)) > > > > RSIR = 0x0f; > > > > After that, the boards still ignores P0.14 after a watchdog reset. > > Since I cleared the watchdog reset flag, I expected the bootloader to > > invoke ISP. Is there anything else I could do from software in order > > to make the bootloader honor the P0.14 pin? > > > > Guille > > > > --- In lpc2000@lpc2..., "philips_apps" <philips_apps@> > > wrote: > > > > > > Hello Guille, > > > > > > In case of a watchdog triggered reset, P0.14 pin is ignored by the > > > bootloader and the valid user application is executed. If valid user > > > application is not found then only isp is entered. In LPC2138 the > > WDT > > > flag is not cleared by pin reset. POR reset clears the WDT flag. > > What > > > you are observing is expected behavior. I am assuming that WD reset > > > happened since you have mention it. > > > > > > Regards > > > Philips Apps > > Send instant messages to your online friends http://au.messenger.yahoo.com >
Reply by ●February 23, 20062006-02-23
The bootloader does not look at the RISR register. It looks at the WDTOF flag in WDMOD register. Even clearing of watchdog flag in user application may not help (if timeout is too small) because the bootloader runs before application. If you are using the watchdog only to trigger ISP then Reinvoke ISP command might be a better choice. This was added to 213x,214x devices. Restore Timer1 to reset state if your application uses it. Refer to Table 218 on page 235 of the user manual http://www.semiconductors.philips.com/acrobat_download/usermanuals/UM10120_1.pdf The LPC213x/214x user manual will be updated to reflect the WTOF clear conditions. Regards Philips Apps --- In lpc2000@lpc2..., "Guillermo Prandi" <yahoo.messenger@...> wrote: > > My code is clearing the RISR flags at boot time by doing: > > #define RSIR (*((volatile unsigned char *) 0xE01FC180)) > > RSIR = 0x0f; > > After that, the boards still ignores P0.14 after a watchdog reset. > Since I cleared the watchdog reset flag, I expected the bootloader to > invoke ISP. Is there anything else I could do from software in order > to make the bootloader honor the P0.14 pin? > > Guille > > --- In lpc2000@lpc2..., "philips_apps" <philips_apps@> > wrote: > > > > Hello Guille, > > > > In case of a watchdog triggered reset, P0.14 pin is ignored by the > > bootloader and the valid user application is executed. If valid user > > application is not found then only isp is entered. In LPC2138 the > WDT > > flag is not cleared by pin reset. POR reset clears the WDT flag. > What > > you are observing is expected behavior. I am assuming that WD reset > > happened since you have mention it. > > > > Regards > > Philips Apps > > > > --- In lpc2000@lpc2..., "Guillermo Prandi" > > <yahoo.messenger@> wrote: > > > > > > Hi, I wonder if anyone has seen this before. > > > > > > While developing the firmware for my LPC2138-featured board, I > noticed > > > that the bootloader is not always invoked after a reset with > P0.14 low. > > > Even when the bootloader is not invoked, the device still > responds to > > > reset. > > > > > > I tested with the Philips bootloader utility, which, measured at > the > > > reset and P0.14 pins, gives me: > > > > > > 1) At T+0, P0.14 goes down from 3.3V to 0V sharply. > > > 2) At T+0, Reset starts going down from 3.3V to 0V in an RC-type > curve > > > of 750�S. > > > 3) At T+750�S both Reset and P0.14 are now 0V. > > > 4) At T+500 mS reset starts going up, having been effectively low > for > > > 499mS. The rising curve is also RC-type and takes about 2 mS to > reach > > > 85%. > > > 5) At T+840 mS, P0.14 goes up sharply. This is 338 mS *after* > reset > > > went high. > > > > > > By the spec, these figures should be large enough to trigger the > > > bootloader, and it does, except when I've been playing around > with my > > > firmware for a while (several cycles of compile+flash > programming, > > > tests, an occasional crash, watchdog triggered, etc.). When the > > > bootloader stops responding, the only way to regain the > bootloader is > > > by removing power. > > > Any ideas? > > > > > > Guille > > > > > >
Reply by ●February 23, 20062006-02-23
Oh, thanks Richard! After your words, the following sequence in my startup code seems to do the trick: WDMOD = 0; // I don't know if this is actually required WDFEED = 0xaa; WDFEED = 0x55; Guille --- In lpc2000@lpc2..., "philips_apps" <philips_apps@...> wrote: > > The bootloader does not look at the RISR register. It looks at the > WDTOF flag in WDMOD register. > Even clearing of watchdog flag in user application may not help (if > timeout is too small) because the bootloader runs before application. > > If you are using the watchdog only to trigger ISP then Reinvoke ISP > command might be a better choice. This was added to 213x,214x devices. > Restore Timer1 to reset state if your application uses it. > Refer to Table 218 on page 235 of the user manual > http://www.semiconductors.philips.com/acrobat_download/usermanuals/UM1 0120_1.pdf > > The LPC213x/214x user manual will be updated to reflect the WTOF clear > conditions. > > Regards > Philips Apps > > --- In lpc2000@lpc2..., "Guillermo Prandi" > <yahoo.messenger@> wrote: > > > > My code is clearing the RISR flags at boot time by doing: > > > > #define RSIR (*((volatile unsigned char *) 0xE01FC180)) > > > > RSIR = 0x0f; > > > > After that, the boards still ignores P0.14 after a watchdog reset. > > Since I cleared the watchdog reset flag, I expected the bootloader to > > invoke ISP. Is there anything else I could do from software in order > > to make the bootloader honor the P0.14 pin? > > > > Guille > > > > --- In lpc2000@lpc2..., "philips_apps" <philips_apps@> > > wrote: > > > > > > Hello Guille, > > > > > > In case of a watchdog triggered reset, P0.14 pin is ignored by the > > > bootloader and the valid user application is executed. If valid user > > > application is not found then only isp is entered. In LPC2138 the > > WDT > > > flag is not cleared by pin reset. POR reset clears the WDT flag. > > What > > > you are observing is expected behavior. I am assuming that WD reset > > > happened since you have mention it. > > > > > > Regards > > > Philips Apps > > > > > > --- In lpc2000@lpc2..., "Guillermo Prandi" > > > <yahoo.messenger@> wrote: > > > > > > > > Hi, I wonder if anyone has seen this before. > > > > > > > > While developing the firmware for my LPC2138-featured board, I > > noticed > > > > that the bootloader is not always invoked after a reset with > > P0.14 low. > > > > Even when the bootloader is not invoked, the device still > > responds to > > > > reset. > > > > > > > > I tested with the Philips bootloader utility, which, measured at > > the > > > > reset and P0.14 pins, gives me: > > > > > > > > 1) At T+0, P0.14 goes down from 3.3V to 0V sharply. > > > > 2) At T+0, Reset starts going down from 3.3V to 0V in an RC- type > > curve > > > > of 750�S. > > > > 3) At T+750�S both Reset and P0.14 are now 0V. > > > > 4) At T+500 mS reset starts going up, having been effectively low > > for > > > > 499mS. The rising curve is also RC-type and takes about 2 mS to > > reach > > > > 85%. > > > > 5) At T+840 mS, P0.14 goes up sharply. This is 338 mS *after* > > reset > > > > went high. > > > > > > > > By the spec, these figures should be large enough to trigger the > > > > bootloader, and it does, except when I've been playing around > > with my > > > > firmware for a while (several cycles of compile+flash > > programming, > > > > tests, an occasional crash, watchdog triggered, etc.). When the > > > > bootloader stops responding, the only way to regain the > > bootloader is > > > > by removing power. > > > > Any ideas? > > > > > > > > Guille > > > > > > > > > >
Reply by ●February 24, 20062006-02-24
Hi Guile, I am looking at what appears to be a different manifestation of the problem you encountered in that power cycling is required to recover form a lockup in order to transfer control to ISP by pulling P0.14 low. Philips explains this happens can if "timeout value is too small". The user manual seems to say writing anything less than 0xff will result in minimum timeout of PCLK x 256 x 4. The test code below then should create the lockup scenario, but it does not on my 2292. I cannot see where I got it wrong. Can you try this on your board please? Thanks. Jaya GNU Source: >@ =====================================================================>@ Interrupt Vectors > > .code 32 > > @ entry points vector >start: > ldr pc, =error > ldr pc, =error > ldr pc, =error > ldr pc, =error > ldr pc, =error > ldr pc, =error > ldr pc, =error > ldr pc, =error > > .ltorg > >@ End of Interrupt Vectors >@ =====================================================================> > >@ =====================================================================>@ Error Scenario > > .code 32 > >error: > @ force reset > ldr r0, =WATCH_DOG > mov r1, #3 > str r1, [r0, #0] > str r1, [r0, #4] @ WDTC = 3 > mov r1, #0xaa > str r1, [r0, #8] @ WDFEED = 0xaa > mov r1, #0x55 > str r1, [r0, #8] @ WDFEED = 0x55 > b . > >@ End Error Scenario >@ ===================================================================== HEX Binary: (vectors not check-sum patched) >:1000000018F09FE514F09FE510F09FE50CF09FE5D8 >:1000100008F09FE504F09FE500F09FE504F01FE580 >:10002000240000000E02A0E30310A0E3001080E50E >:10003000041080E5AA10A0E3081080E55510A0E3A5 >:08004000081080E5FEFFFFEA55 >:00000001FF >Message: 17 > Date: Thu, 23 Feb 2006 12:30:37 -0000 > From: "Guillermo Prandi" <yahoo.messenger@yaho...> >Subject: Re: Bootloader not always invoked after reset with P0.14 low > >Hi, Jayasooriah. Indeed the watchdog is the problem. At this stage of >development I am only using the watchdog to provide a software reset >function. Apparently this behavior is triggering only after using >this function. And yes, you are right; the bit should be cleared by >the external reset. > >It looks like this behavior is 'by design' so there is no other >workaround than switching off the unit. > >Guille >Message: 8 > Date: Thu, 23 Feb 2006 23:28:38 -0000 > From: "philips_apps" <philips_apps@phil...> >Subject: Re: Bootloader not always invoked after reset with P0.14 low > >The bootloader does not look at the RISR register. It looks at the >WDTOF flag in WDMOD register. >Even clearing of watchdog flag in user application may not help (if >timeout is too small) because the bootloader runs before application. Send instant messages to your online friends http://au.messenger.yahoo.com
Reply by ●February 25, 20062006-02-25
I don't understand very well what is it that you want me to test. By clearing the watchdog flags my problem went away. Guille --- In lpc2000@lpc2..., Jayasooriah <jayasooriah@...> wrote: > > Hi Guile, > > I am looking at what appears to be a different manifestation of the problem > you encountered in that power cycling is required to recover form a lockup > in order to transfer control to ISP by pulling P0.14 low. > > Philips explains this happens can if "timeout value is too small". The > user manual seems to say writing anything less than 0xff will result in > minimum timeout of PCLK x 256 x 4. > > The test code below then should create the lockup scenario, but it does not > on my 2292. I cannot see where I got it wrong. > > Can you try this on your board please? > > Thanks. > > Jaya > > GNU Source: > > >@ =====================================================================> >@ Interrupt Vectors > > > > .code 32 > > > > @ entry points vector > >start: > > ldr pc, =error > > ldr pc, =error > > ldr pc, =error > > ldr pc, =error > > ldr pc, =error > > ldr pc, =error > > ldr pc, =error > > ldr pc, =error > > > > .ltorg > > > >@ End of Interrupt Vectors > >@ =====================================================================> > > > > >@ =====================================================================> >@ Error Scenario > > > > .code 32 > > > >error: > > @ force reset > > ldr r0, =WATCH_DOG > > mov r1, #3 > > str r1, [r0, #0] > > str r1, [r0, #4] @ WDTC = 3 > > mov r1, #0xaa > > str r1, [r0, #8] @ WDFEED = 0xaa > > mov r1, #0x55 > > str r1, [r0, #8] @ WDFEED = 0x55 > > b . > > > >@ End Error Scenario > >@ =====================================================================> > HEX Binary: (vectors not check-sum patched) > > >:1000000018F09FE514F09FE510F09FE50CF09FE5D8 > >:1000100008F09FE504F09FE500F09FE504F01FE580 > >:10002000240000000E02A0E30310A0E3001080E50E > >:10003000041080E5AA10A0E3081080E55510A0E3A5 > >:08004000081080E5FEFFFFEA55 > >:00000001FF > > > >Message: 17 > > Date: Thu, 23 Feb 2006 12:30:37 -0000 > > From: "Guillermo Prandi" <yahoo.messenger@...> > >Subject: Re: Bootloader not always invoked after reset with P0.14 low > > > >Hi, Jayasooriah. Indeed the watchdog is the problem. At this stage of > >development I am only using the watchdog to provide a software reset > >function. Apparently this behavior is triggering only after using > >this function. And yes, you are right; the bit should be cleared by > >the external reset. > > > >It looks like this behavior is 'by design' so there is no other > >workaround than switching off the unit. > > > >Guille > > > >Message: 8 > > Date: Thu, 23 Feb 2006 23:28:38 -0000 > > From: "philips_apps" <philips_apps@...> > >Subject: Re: Bootloader not always invoked after reset with P0.14 low > > > >The bootloader does not look at the RISR register. It looks at the > >WDTOF flag in WDMOD register. > >Even clearing of watchdog flag in user application may not help (if > >timeout is too small) because the bootloader runs before application. > > > > Send instant messages to your online friends http://au.messenger.yahoo.com >
