This is the mail archive of the ecos-discuss@sourceware.org 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]
Other format: [Raw text]

Re: Huge memory footprint for a simple "hello world"


Thanks Andrew,

Certainly I am new to embedded systems indeed.  I now run:
/arm-elf-ld -nostartfiles  -nodefaultlibs  -nostdlib -s  -static
-L/opt/ecos/gnutools/arm-elf/arm-elf/lib
-L/opt/ecos/gnutools/arm-elf/lib/gcc-lib/arm-elf/3.2.1/ -o test test.o
-Ttarget.ld

So the size is now down to (~91k):
-rwxr-xr-x  1 socrates socrates 91364 Jun  6 14:07 test

which I think is still big in my opinion.

-b option: The upload always fails until I use the -r option which
forces me to use the -b option.
How do I go about getting a succesful upload without using the -r and
hence -b option?

Thanks once again.

Regards;
Soc
On 6/6/06, Andrew Lunn <andrew@lunn.ch> wrote:
On Tue, Jun 06, 2006 at 02:03:05PM +0200, Socrates Socrates wrote:
> Hi All
>
> AIM:
> I am using the EB40 board and I am trying to test a simple "hellow
> world" application.
>
> Problem:
> The memory footprint of the application is too big to fit into the
> available RAM. The failure happens during uploading of the
> application.
>
> Here's more information of my steps:
>
> 1. I used "ecoconfig EB40" to setup and build redboot for the EB40 board.
> 2. I used "arm-elf-gdb redboot.elf" , tar rdi /dev/ttyS0, set
> $cpsr=0xd3, load, cont, Crtl Z, minicom
> 3. RedBoot> load -b -m xmodem -b 0x02033428             # My notes:
> 0x02033428 is the lower range of the available RAM as reported by
> 'version' command on RedBoot
> 4. I comppile and link my test app
> /opt/ecos/gnutools/arm-elf/bin/arm-elf-gcc -c -o test.o -Wall
> -I/home/socrates/work/atmel/020606-ARM/install/include test.c
> /opt/ecos/gnutools/arm-elf/bin/arm-elf-ld -nostartfiles -nostdlibs
> -L/opt/ecos/gnutools/arm-elf/arm-elf/lib
> -L/opt/ecos/gnutools/arm-elf/lib/gcc-lib/arm-elf/3.2.1/ -o test test.o
> -T/home/socrates/work/atmel/020606-ARM/install/lib/target.ld
>
> socrates@would:~/work/atmel$ ls -l test*
> -rwxr-xr-x  1 socrates  socrates  322442 Jun  6 12:06 test
> -rw-r--r--  1 socrates  socrates     138 Jun  6 11:35 test.c
> -rw-r--r--  1 socrates  socrates     880 Jun  6 12:06 test.o
>
> Here's is my test.c file:
> *************************************************************************
> #include <cyg/infra/diag.h>
>
> char *RedBoot_version = "aslkjdahlsdfjk";
>
> int main(void)
> {
>   diag_printf("HELLO WORLD\n");
>   return 0;
> }
> **************************************************************************
>
>
> I'd really appreciate your help.
>
> Oh, I am very very new to EB40 or ecos for that matter.

And also probably very new to embedded systems and how compilers work.
This is a FAQ. Read the documentation about arm-elf-size and what an
ELF file is. The test executable contains all the debugging
information and lots of other things which are not used on the target.
gdb knows this and will download just what is needed.

Also, don't use -b 0x... eCos is not position independent. The image
has to go where the image expects to go.

Andrew


-- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


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