Proyecto romaa_freertos
---------------------------------------------------------------------------------------------------
El código que actualmente se utiliza tanto en el RoMAA II como en el RoMAA original esta basado en
el desarrollado para el proyecto final de Martín Baudino y Santiago Pérez.

* Organización del Código

  El código está dividido en tres directorios:

    - app: Código de aplicación
    - ciiiemblibs_pre_rev0: Librerías CIIIEmbLibs
    - kernel: Código del FreeRTOS


  Las librerías CIIIEmbLibs se incluyen dentro del proyecto porque son una versión anterior a la
  revisión 0 (la más antigua disponible en los repositorios) y esto significa que contiene 
  implementaciones incompatibles con las librerías que tienen mantenimiento hoy en día.

  El principal cambio que habría que llevar a cabo para actualizar el proyecto a las nuevas 
  CIIIEmbLibs es modificar las interrupciones para que utilicen callbacks.


* Versiones del robot RoMAA

  En este momento hay 3 versiones del hardware del robot RomAA:

    - RoMAA Prototipo: Es la version original, que tiene encoders de 100 pulsos/vuelta y una
                       reducción en los motores de 16.

    - RoMAA II: Es la versión estándar sobre la que se generarán las mejoras. Tiene encoders de
                1000 pulsos/vuelta y no tiene reducción en los motores.

    - RoMAA Chaco: Es una versión del RoMAA II que tiene invertido el manejo de los encoders.

  Para tener en cuenta las tres versiones a la hora de mantener el código, se agregaron una serie
  de etiquetas que definen el código a ser compilado de forma condicional.


* Compilación

  Para compilar el proyecto es necesario ubicarse en la carpeta "app" y ejecutar:

  - RoMAA II: romaa_freertos/app$ ./rom_arm.sh

  - RoMAA Chaco: romaa_freertos/app$ ./rom_arm.sh chaco

  - RoMAA Prototipo:  romaa_freertos/app$ ./rom_arm.sh proto

  Este script define una serie de variables de entornos para que el código sea generado en modo
  ARM, sin optimización, y preparado para ser grabado en memoria flash.

  Cualquier otra opción pasada como parámetro al script generará un error.


* Limpieza del Proyecto

  Ejecutar: romaa_freertos/app$ make clean

  De esta forma se borran todos los objetos generados en toda la estructura de directorios.


* Grabación del Firmware:

  Luego de una compilación exitosa, se generará un archivo llamado "romaii.hex", que es donde se
  encuentra el programa compilado y linkeado. Dependiendo del cable utilizado, hay dos formas de
  grabar el firmware en el microcontrolador:

    - Cable RS232: 
                    romaa_freertos/app$ make grabar_s

    - Cable USB: 
                    romaa_freertos/app$ make grabar_u
