Difference between revisions of "HelloWorld"

From ArmadeusWiki
Jump to: navigation, search
m (Putting it all together in a Makefile)
(Putting it all together in a Makefile)
Line 89: Line 89:
 
all: $(EXEC)
 
all: $(EXEC)
 
   
 
   
hello: $(OBJ)
+
$(EXEC): $(OBJ)
 
     $(CC) -o $@ $^ $(LDFLAGS)
 
     $(CC) -o $@ $^ $(LDFLAGS)
 
   
 
   

Revision as of 16:00, 27 October 2009

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( "APF says: Hello World ! ;-)\n" );
    exit(0);
}
  • Save it as hello.c

Compilation

The C cross compiler is installed in armadeus/buildroot/build_armvXX/staging_dir/usr/bin/ and is named arm-linux-gcc. You can access it with the $ARMADEUS_TOOLCHAIN_PATH environment variable:

 $ make shell_env
 $ . ./armadeus_env.sh
 $ echo $ARMADEUS_TOOLCHAIN_PATH

There are 2 possibilities to use it:

  • either add $ARMADEUS_TOOLCHAIN_PATH to your PATH environment variable and then call arm-linux-gcc instead of gcc
  • or call directly $ARMADEUS_TOOLCHAIN_PATH/arm-linux-gcc

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

 [demos]$ $ARMADEUS_TOOLCHAIN_PATH/arm-linux-gcc -o hello hello.c

or

 [demos]$ export PATH=$PATH:$ARMADEUS_TOOLCHAIN_PATH
 [demos]$ arm-linux-gcc -o hello hello.c

Running

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

TFTP

[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 now assume that your server has 192.168.0.2 as IP address and /local/exports/ as NFS export directory.
  • Copy your executable:
 $ cp hello /local/exports/
  • Mount NFS on your target (I assume that your NFS drive is accessible from /mnt/host on the target):
 # mount -t nfs 192.168.0.2:/local/exports /mnt/host
  • Launch your prog:
 # /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)
 
$(EXEC): $(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/
Warning Warning: 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