FreeRTOS and Secondary Bootloader Fail

slicetex wrote on Monday, February 08, 2010:

Hi,

I cannot get a FreeRTOS system to work from starting
address 0x8000 with a secondary bootloader.
I’m using a NXP LPC2148 microcontroller.

My application program crash when vTaskStartScheduler()
is called.

If application program is located on flash address 0x0000,
FreeRTOS works.

Anyone did something like this ?.

NOTES:

1) vTaskStartScheduler() is called in supervisor mode.
Interrupt disabled.

2) Interrupt vector table is remaped to RAM with MEMMAP=2.
First 64 bytes, from address 0x8000 are copied to RAM
address 0x40000000.

3) Linker script memory areas:
MEMORY
{
flash (rx): ORIGIN = 0x00008000, LENGTH = 468K
ram_ivt(rwx): ORIGIN = 0x40000000, LENGTH = 64
ram (rwx): ORIGIN = 0x40000040, LENGTH = 32K-64
}

4) Secondary bootloader, jumps to user program (0x8000)
in supervisor mode also.

5) FreeRTOS version: 6.0.2

6) Toolchain: GCC 4.1.1

7) MCU: LPC2148.

Thanks in advance.

Regards,
Boris Estudiez.-


Slicetex Electronics
www.slicetex.com.ar

preetpal wrote on Tuesday, March 09, 2010:

I am using LPC2148 with Secondary bootloader from SJvalley.com and it works perfectly.  Secondary bootloader is of 4k in size and FreeRTOS works great.  I think you might not be allocating correct supervisor stack or not entering supervisor mode before calling vTaskStartScheduler()

slicetex wrote on Friday, March 12, 2010:

Hi preetpal,

Are you using GCC ?.

Could you share your linker script and c-runtime assembler files, please ?.

Thanks in advance.

Regards,
Boris Estudiez.-


Slicetex Electronics
www.slicetex.com.ar

Thanks a lot

preetpal wrote on Friday, March 12, 2010:

I’m using GNUARM 4.3.2.  Since I have WINARM installed, it grabs the cygwin sh/make.exe etc. from there.

Preet