User Tools

Site Tools


Writing /var/lib/dokuwiki/data/meta/teaching/ie0117/proyectos/2012/i/linux/casa_inteligente/interfaz_software_hardware.meta failed
teaching:ie0117:proyectos:2012:i:linux:casa_inteligente:interfaz_software_hardware

Compilación Cruzada (Cross-compiling)


La compilación cruzada permite crear código ejecutable para otra plataforma distinta a aquélla en la que él se ejecuta. Esta herramienta es útil cuando quiere compilarse código para una plataforma a la que no se tiene acceso, o cuando es incómodo o imposible compilar en dicha plataforma (como en el caso de los sistemas embebidos o empotrados).

El proceso de compilación básicamente sigue los siguientes pasos:

Este tipo de compilación genera binarios para una arquitectura distinta a la que estamos utilizando para compilar. Por ejemplo, generar un ejecutable para un procesador ARM desde una arquitectura IA-32 o AMD64.

Para esto existen las llamadas toolchain o cadena de herramientas. Un toolchain se suele componer de un compilador, utilidades para el manejo de ficheros binarios (ensamblador, enlazador, etc.) y un depurador. Se denomina cadena porque se suelen aplicar estas herramientas en ese orden, como una cadena.

Por estas razones GNU/Linux es muy utilizado para este propósito ya que cuenta con una extensa galería de recursos destinados a este fin. En nuestro caso utilizaremos:

GCC (GNU Compiler Collection)


GCC es un conjunto de compiladores creados por el proyecto GNU. Una de las ventajas de GCC es que es software libre. Se comenzó a escribir en 1985 por Richard Stallman y tiene como objetivo mejorar el proceso de compilación de los en los sistemas GNU.

Una de las importancias de GCC es que permite utilizarlo en un entorno de desarrollo abierto y soporta muchas plataformas con el fin de que los funcionen en diferentes arquitecturas (ARC,  ARM,  GNU/Linux,  MIPS,  MMIX,  MN10300,  Morpho MT,  Motorola M680x0,  Motorola 88000,  PA-RISC,  PDP-11,  SPARC, TMS320C3x/C4x,  V850,  x86,  x86-64,  Xstormy16, Xtensa, zSeries, etc. ) y diferentes entornos (C, Java, C++, Fortran, etc.), y más aún, para extender y mejorar las características de GCC.

Etapa de Interfaz Software-Control


En este proyecto como control e interfaz entre el software y la parte de potencia de los sistemas de luces se utilizara un microcontrolador ARM Cortex-M3.


El ARM Cortex-M3 (Hoja de Datos: https://www.olimex.com/Products/ARM/ST/STM32-H103/resources/STM32-H103.pdf) es una de las últimas generaciones de procesadores ARM para sistemas embebidos. Se desarrollado para proporcionar una plataforma de bajo costo que satisface las necesidades de implementación MCU, con una cantidad de pines reducido y bajo consumo de energía, al tiempo que ofrece un excelente rendimiento computacional y un avanzado sistema de respuesta a las interrupciones. La ARM Cortex-M3 de 32 bit RISC características excepcionales de código eficiencia, entregando el alto rendimiento que se espera de un núcleo ARM en el tamaño de la memoria asocia generalmente con 8 - y 16-bit de los dispositivos.

La línea de actuación STM32F103 tiene un núcleo ARM incorporado y es compatible con todas las herramientas ARM y software. Combina el alto rendimiento ARM Cortex-M3 CPU con una amplia gama de funciones periféricas y capacidades de E / S mejorada. STM32-H103 es un panel de bajo costo para el desarrollo de la nueva ST Cortex-M3 basado en microcontrolador STM32F103RBT6. Esta tarjeta es la solución perfecta para el desarrollo periférico USB. Todos los puertos del microcontrolador están disponibles en los conectores de extensión.

La programación de dicho dispositivo se llevará a cabo en el Lenguaje de programación C.

C (Lenguaje de Programación)

Lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje fuertemente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas.

teaching/ie0117/proyectos/2012/i/linux/casa_inteligente/interfaz_software_hardware.txt · Last modified: 2022/09/20 00:08 (external edit)