argo777 wrote on Monday, December 31, 2007:
Hi,
i’ve tried to build FreeRtos for pic 18f4550 but I faced the following problem:
Using the following modified linker script and FreeRTOSConfig.h from the demo:
// File: 18f4550.lkr
// Sample linker script for the PIC18F4550 processor
LIBPATH .
FILES c018i.o
FILES clib.lib
FILES p18f4550.lib
CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED
CODEPAGE NAME=page START=0x2A END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=gpr0 START=0x60 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED
DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
STACK SIZE=0x100 RAM=gpr3
and setting the Heap Size to 512 in FreeRTOSConfig.h
#define configTOTAL_HEAP_SIZE ( ( size_t ) 512 )
I get this error:
Error - section ‘.udata_heap_1.o’ can not fit the section. Section ‘.udata_heap_1.o’ length=0x00000404
I can’t understand why the heap is still at 0x404 since i configured it to be 512 bytes long
Moreover if i use the following linker script:
// File: 18f4550.lkr
// Sample linker script for the PIC18F4550 processor
LIBPATH .
FILES c018i.o
FILES clib.lib
FILES p18f4550.lib
CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED
CODEPAGE NAME=page START=0x2A END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=BIG_BLOCK START=0x60 END=0x5FF
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
STACK SIZE=0x60 RAM=BIG_BLOCK
(always with the heap set at 512)
The program links correctly and the map file still shows a lenght of 1024 for the heap.
Can anyone help me? Thanks and happy new year.
Stefano