Cold start not working on LPC2368

kenmosher wrote on Tuesday, July 28, 2009:

This one is kind of weird … we have a FreeRTOS project that runs find on an LPC2388 board, but when we ported it to an LPC2368 (by changing the memory allocation from 64K to 32K) it runs normally ONLY when you hit the RESET button.

With the 2388, you flash the board (we’re using an MCB2300 Keil Eval board for both), the flash finishes and then app comes up running (and everything works fine … LEDs, CAN, etc.).  We do the same thing with the 2368 … flash the board but it just looks like it “stops” … push the RESET button and everything comes up and runs just fine.

I’ve combed thru the FreeRTOSConfig.h file and it is the same for both (and looks reasonable).

The  lpc2368.ld file has only one small difference for the Memory:
    flash    : ORIGIN = 0x00000000, LENGTH = 500K
    ram    : ORIGIN = 0x40000000, LENGTH = 32K
    usbram   : ORIGIN = 0x7FD00000, LENGTH = 8K
    ethram   : ORIGIN = 0x7FE00000, LENGTH = 16K

__stack_end__ = 0x40000000 + 32K - 4;

**** Note 32K is for the 2368 … we use 64K for the 2388 ****

… and the boot.s file is the same for both 2368/88 and we have pretty small little stacks defined:

/* Stack Sizes */
    .set  UND_STACK_SIZE, 0x00000004
    .set  ABT_STACK_SIZE, 0x00000004
    .set  FIQ_STACK_SIZE, 0x00000004
    .set  IRQ_STACK_SIZE, 0X00000100
    .set  SVC_STACK_SIZE, 0x00000100

Any clues out there?  THANKS!

kenmosher wrote on Tuesday, July 28, 2009:

Couldn’t find a way to edit, so I need to correct something above (the board isn’t right here with me, so I was going by what I remembered …).

I’m told that the 2368 actually does the following:
1.  Flashes and starts running just fine (disregard above)
2.  On unplugging/restoring power it comes up basically ready to receive a new Flash image (like holding the RESET and INTO buttons on the eval board normally does). 
3.  If you hit the RESET button, it comes up and goes on it’s merry way …

Sorry 'bout the confusion!

rtel wrote on Wednesday, July 29, 2009:

Are you using Rowley Crossworks?  If so then you need to defined STARTUP_FROM_RESET for your release builds.


kenmosher wrote on Wednesday, July 29, 2009:

No, we’re just using the GCC toolchain.