ECB-BF532/how to hello

From Wiki-linuxencaja
Jump to: navigation, search

Contents

Hello World!

En esta sección encontrará como compilar, descargar y ejecutar una aplicación simple como el clásico "Hello World".

Código Fuente

Primero se debe crear el "hello.c" con el siguiente código:

  1. #include <stdio.h>
  2.  
  3. int main() {
  4.         printf("Hello World, Welcome to Blackfin uClinux!\n");
  5.         return 0;
  6. }

Compiladores

El set de herramientas (toolchain) del compilardor GCC para Blackfin viene en tres categorías:

  1. bfin-elf-*
  2. bfin-linux-uclibc-* &
  3. bfin-uclinux-*

Los compiladores bfin-uclinux-gcc y bfin-linux-uclibc-gcc son utilizados para compilar programas que se ejecutan con el sistema operativo Linux. Estas herramientas enlazan automáticamente la aplicación con las librerías de entorno de Linux, lo que permite que la aplicación haga llamadas e interrupciones dentro de Linux cuando lo requiera, en este caso, presentar una cadena de carácteres en consola.

El compilador bfin-elf-gcc es utilizado para compilar el kernel y las aplicaciones del tipo standalone (sin S.O), por lo cual incluye otra serie de librerías.

Primero es necesario asegurarse que el compilador bfin-uclinux-gcc ha sido correctamente direccionado en el path.

  1. xxxx@linux:~> bfin-uclinux-gcc --version
  2. bfin-uclinux-gcc (ADI-2010R1-RC4) 4.3.5
  3. Copyright (C) 2008 Free Software Foundation, Inc.
  4. This is free software; see the source for copying conditions. 
  5. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Si el compilador No está apropiadamente en el path, se muestra el siguiente mensaje:

  1. xxxx@linux:~> bfin-uclinux-gcc --version
  2. bash:bfin-uclinux-gcc: command not found

En ese caso se debe modificar el PATH, para más información Instalar el Toolchain de Blackfin

Compilar como archivo FLAT

  1. xxxx@linux:~> bfin-uclinux-gcc -Wl,-elf2flt hello.c -o hello

Al ejecutar este comando la salida que se obtiene son 2 archivos:

  • hello
  • hello.gdb
  1. xxxx@linux:~> file hello
  2. hello: BFLT executable - version 4 ram
  3.  
  4. xxxx@linux:~> file hello.gdb
  5. hello.gdb: ELF 32-bit LSB executable, Analog Devices Blackfin, version 1 (SYSV), statically linked, not stripped

Compilar como archivo FDPIC

En este caso se utiliza el compilador: bfin-linux-uclibc-gcc.

  1. xxxx@linux:~> bfin-linux-uclibc-gcc hello.c -o hello

Después de ejecutarlo se obtiene el ejecutable "hello"

  1. xxxx@linux:~> ls -l hello*
  2. -rwxr-xr-x 1 xxxx users 10688 2009-04-30 11:17 hello
  3. -rw-r--r-- 1 xxxx users    87 2009-04-30 11:15 hello.c

Al compilar el código como programa FDPIC el ejecutable que se obtiene como resultado posee información para la depuración, con lo cual aumenta el tamaño, la cual no es necesaria para ejecutar esta aplicación por lo que a menudo se utilizan los programas del tipo FLAT ya que genera tanto el ejecutable "limpio" como el ejecutable con la información para el debugging

Cargar el Programa en ECB-BF532

Hay 2 opciones para lograr correr el programa en el Blackfin:

Incluir el hello en la imagen de uClinux

Este método permite guardar el programa dentro de la imagen que se genera de uClinux para luego correrlo de forma "nativa" dentro del sistema.

En el host se debe hacer:

  1. xxxx@linux:~> cp /home/user/hello blackfin-linux-dist/romfs/bin/hello
  2. xxxx@linux:~blackfin-linux-dist$ make image

Con esto se reconstruyen los archivos: /images/linux y /images/uImage.

Cargar el programa por Puerto Serial

En este caso se utiliza el puerto serial y el protocolo "z-modem", por lo cual en los opciones de creación del kernel se debe habilitar el programa "lrz" que permite la recepción por z-modem. Este protocolo es muy útil para transferir archivos desde el PC hacia la tarjeta los cuales se guardaran en el directorio "/"

  1. root:/> lrz
  2. lrz waiting to receive.**B0100000023be50

En este momento se presiona CTRL+S y se selecciona "z-modem" para luego ir al navegador de archivos y seleccionar el/los archivo que se desea transferir.

Después de que el ejecutable "hello" ha sido transferido a la board se deben modificar los permisos que tiene asignados:

  1. root:/> chmod 777 hello

Note que en caso de que la aplicación es incorporada en la imagen de uClinux No es necesario modificar estos permisos.

Ejecutar la Aplicación

Si la aplicación ha sido incluida dentro del kernel:

  1. root:/> hello
  2. Hello World, Welcome to Blackfin uClinux!

Si la aplicación ha sido cargada a la tarjeta utilizando z-modem:

  1. root:/> ./hello
  2. Hello World, Welcome to Blackfin uClinux!

Fuentes

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox