HelloWorld
From ArmadeusWiki
(Redirected from Hello world)
On this page you will learn how to create your first C application for your Armadeus board
Contents
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 in YOUR_ARMADEUS_PROJECT_PATH/target/demos/ directory.
Compilation
The C cross compiler is installed in buildroot/output/host/usr/bin/ and is named arm-linux-gcc. You can access it with the $ARMADEUS_TOOLCHAIN_PATH environment variable:
$ cd YOUR_ARMADEUS_PROJECT_PATH/ $ make shell_env $ source ./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:
$ cd YOUR_ARMADEUS_PROJECT_PATH/target/demos/ $ $ARMADEUS_TOOLCHAIN_PATH/arm-linux-gcc -o hello hello.c
or
$ export PATH=$PATH:$ARMADEUS_TOOLCHAIN_PATH $ cd YOUR_ARMADEUS_PROJECT_PATH/target/demos/ $ arm-linux-gcc -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 your TFTP directory:
$ 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 APF 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/
Then, just do:
$ make clean install