Difference between revisions of "HelloWorld"

From ArmadeusWiki
Jump to: navigation, search
(To avoid strange read/write don't avoid mcpu option)
m (Compilation)
Line 18: Line 18:
  
 
==Compilation==
 
==Compilation==
The C cross compiler is installed in ''armadeus/buildroot/build_arm/staging_dir/bin/'' and is named ''arm-linux-gcc''
+
The C cross compiler is installed in ''armadeus/buildroot/build_armv4t/staging_dir/bin/'' and is named ''arm-linux-gcc''
 
There are 2 possibilities to use it:
 
There are 2 possibilities to use it:
* either add ''armadeus/buildroot/build_arm/staging_dir/usr/bin/'' to your ''PATH'' environment variable and then call ''arm-linux-gcc'' instead of ''gcc''
+
* either add ''armadeus/buildroot/build_armv4t/staging_dir/usr/bin/'' to your ''PATH'' environment variable and then call ''arm-linux-gcc'' instead of ''gcc''
* or call directly ''armadeus/buildroot/build_arm/staging_dir/usr/bin/arm-linux-gcc''
+
* or call directly ''armadeus/buildroot/build_armv4t/staging_dir/usr/bin/arm-linux-gcc''
  
 
So to compile your small program do (here hello.c was saved in armadeus/target/demos/ directory):
 
So to compile your small program do (here hello.c was saved in armadeus/target/demos/ directory):
  [host demos]$ ../../buildroot/build_arm/staging_dir/bin/arm-linux-gcc -mcpu=arm920t -o hello hello.c
+
  [host demos]$ ../../buildroot/build_armv4t/staging_dir/bin/arm-linux-gcc -mcpu=arm920t -o hello hello.c
  
 
==Running==
 
==Running==

Revision as of 00:25, 7 December 2008

On this page you will learn how to create your first C application for your Armadeus board

Source code

First take your favorite editor/IDE and create the following program:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    printf( "APF9328 says: Hello World ! ;-)\n" );
    exit(0);
}

Save it as hello.c

Compilation

The C cross compiler is installed in armadeus/buildroot/build_armv4t/staging_dir/bin/ and is named arm-linux-gcc There are 2 possibilities to use it:

  • either add armadeus/buildroot/build_armv4t/staging_dir/usr/bin/ to your PATH environment variable and then call arm-linux-gcc instead of gcc
  • or call directly armadeus/buildroot/build_armv4t/staging_dir/usr/bin/arm-linux-gcc

So to compile your small program do (here hello.c was saved in armadeus/target/demos/ directory):

[host demos]$ ../../buildroot/build_armv4t/staging_dir/bin/arm-linux-gcc -mcpu=arm920t -o hello hello.c

Running

Copy your hello executable on your board either through TFTP or NFS

TFTP

Be sure to have TFTP server installed, if not it's explained here
Copy hello to TFTP directory:

[host demos]$ cp hello /tftpboot/

Load your executable on the target (here my host IP is 192.168.0.2):

# tftp -g -r hello -l /usr/bin/hello 192.168.0.2

Give it executable rights, if lost during TFTP transfer:

# chmod a+x /usr/bin/hello

Launch it:

# /usr/bin/hello
APF9328 says: Hello World ! ;-)
#

Now it's up to you ! ;-)

NFS

Be sure to have NFS server installed, if not it's explained here
I assume that your NFS drive is accessible from /mnt/host Launch your prog:

[target]# /mnt/host/hello

Putting it all together in a Makefile

You can put your program compiling and copying in a Makefile to make things cleaner:

CC=arm-linux-gcc
CFLAGS=-W -Wall
LDFLAGS=
EXEC=hello
SRC= $(wildcard *.c)
OBJ= $(SRC:.c=.o)

all: $(EXEC)

hello: $(OBJ)
    $(CC) -o $@ $^ $(LDFLAGS)

%.o: %.c
    $(CC) -o $@ -c $< $(CFLAGS)

.PHONY: clean install

clean:
    rm -rf *.o
    rm -f $(EXEC)

install: all
    cp -f $(EXEC) /tftpboot/

!! If you do a cut & paste with previous commands, don't forget to check TABS for each target (Makefiles are using TABS and not SPACES) !! In that case make will complains about a missing separator line 11

Then, just do:

[host demos]$ make clean install

Links

Other languages:

English Flag.svg English  •  French Flag.svg Français