HelloWorld

From ArmadeusWiki
Revision as of 14:53, 3 October 2011 by FabienM (Talk | contribs)

Jump to: navigation, search
Update.png This page is too old and need some updates. Informations on this page are not guaranteed !! Update.png

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

 [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:

 [demos]$ make clean install

Links