This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: forwarded message from Simpkins, Andy


Configuration of the system
	Target Platform : Custom board (ARM7TDMI core)
	Development Host: Windows NT 4 sp6, cygwin, eCos 1.3.1, GCC 2.95.2
	
This is the current test file I am using:

main.cpp (entire file)

	/* INCLUDES */
	
	#include <stdio.h>                      /* printf */
	#include <string.h>                     /* strlen */
	#include <cyg/kernel/kapi.h>            /* All the kernel specific
stuff */
	#include <cyg/io/io.h>                  /* I/O functions */
	#include <cyg/hal/hal_arch.h>           /*
CYGNUM_HAL_STACK_SIZE_TYPICAL */
	#include <cyg/infra/diag.h>             /* diag_printf */
	#include <cyg/hal/t3.h>                 /* LED Control */
	#include <stdlib.h>
	
	
	void __attribute__ ((section (".2ram.flash_query"), long_call))
flash_query(void)
	{
	   for (int i=0; i < 0xffff; i++);
	}
	
	
	extern "C" int main(void)
	{   
	   flash_query();
	 
	   return 0;
	}

the build process (with errors returned)

	$ cd /z/TMCB/Build/ARM/eCos/app/testFLASH
	$ rm *.o
	$ arm-elf-gcc -c -I /i/eCOSbuilds/a161_install/include/
../../../../../source/app/testFLASH/*.cpp -fno-rtti -fno-exceptions
	../../../../../source/app/testFLASH/main.cpp: In function `void
flash_query()':
	../../../../../source/app/testFLASH/main.cpp:14: warning:
`long_call' attribute directive ignored
	$ arm-elf-gcc *.o -L /i/eCOSbuilds/a161_install/lib/ -Ttarget.ld
-nostdlib -Xlinker -Map -Xlinker mapfile.txt
	main.o: In function `main':
	main.o(.text+0x10): relocation truncated to fit: R_ARM_PC24
flash_query(void)
	collect2: ld returned 1 exit status

and to round things off the mods to arm.ld (extract) as suggested by
Jesper...

	#define SECTION_data(_region_,  _vma_, _lma_) \
	    .data _vma_ : _lma_ \
	    { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1)
MERGE_IN_RODATA \
	    _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.);
\
	    _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.);
\
	    . = ALIGN (4); \
	    __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*)))
__DEVTAB_END__ = ABSOLUTE (.); \
	    __NETDEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.netdevtab*)))
__NETDEVTAB_END__ = ABSOLUTE (.); \
	    __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*)))
__CTOR_END__ = ABSOLUTE (.); \
	    __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*)))
__DTOR_END__ = ABSOLUTE (.); \
	    *(.dynamic) *(.sdata*) *(.sbss*)  \
	    . = ALIGN (4); *(.2ram.*) } \
	    > _region_ \
	    __rom_data_start = LOADADDR (.data); \
	    __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .;
PROVIDE (edata = .); \
	    PROVIDE (__rom_data_end = LOADADDR (.data) + SIZEOF(.data));



---
Transcomm UK Ltd.   DDI : +44 (0)23 80662155
Yeoman Park         Fax : +44 (0)23 80662120
Test Lane 
Southampton         www.transcomm.uk.com
SO16 9JX 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]