Bienvenido: Ingresar
location: Diferencias para "LabElectronica/RoMAA-FW"
Diferencias entre las revisiones 11 y 42 (abarca 31 versiones)
Versión 11 con fecha 2012-05-23 19:42:12
Tamaño: 2616
Comentario:
Versión 42 con fecha 2013-01-26 15:47:38
Tamaño: 6040
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 1: Línea 1:
## page was renamed from LabElectronica/RoMAAFirmware23
Línea 5: Línea 6:
= v2.3 - Firmware del controlador embebido del robot móvil RoMAA-II =
== Firmware con kernel en tiempo real ==
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 "Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM7 y RTOS embebido. Caracterización". Tesis de grado para obtener el título de Ing. en electrónica de Santiago Pérez y Martín Baudino [[LabElectronica/FreeRTOSLpc2114Web|Ir]].
= Firmware del robot móvil RoMAA-II =
<<TableOfContents()>>
Línea 9: Línea 9:
La versión actual se encuentra en el repositorio [[http://proyectos.ciii.frc.utn.edu.ar/romaa_firmware|romaa_firmware]]. Y se puede descargar del servidor con {{{hg clone https://proyectos.ciii.frc.utn.edu.ar/hg/romaa_firmware}}} = Objetivos =
Aquí se documentarán y organizarán todas las investigaciones y desarrollos ha realizar y realizados para la optimización del firmware de la plataforma robótica móvil RoMAA-II, en su aplicación con el sistema operativo en tiempo real FreeRTOS.
Línea 11: Línea 12:
=== Organización del Código ===
La estructura de directorios es la siguiente:
= Caracteterísitcas generales del FW =
== Trabajos iniciales ==
== FreeRTOS ==
== Modo de funcionamiento ==
=== Tareas ===
= Versiones del FW =
=== v2.5 - 2012/12/20 - Final Estable ===
Esta es la versión final estable del FW del RoMAA 2012. Para ver todas las versiones y modificaciones del FW, [[http://ciii.frc.utn.edu.ar/LabElectronica/RoMAA-FW/Versiones%20FW|aquí]].
Línea 14: Línea 21:
{{attachment:romaa_firmware_structure.png}} === v2.3 - 2012/09/20 - Innovar ===
Esta es la versión estable del FW del RoMAA, utilizada en INNOVAR 2012. Para ver todas las versiones y modificaciones del FW, [[http://ciii.frc.utn.edu.ar/LabElectronica/RoMAA-FW/Versiones%20FW|aquí]].
Línea 16: Línea 24:
Las librerías CIIIEmbLibs se incluyen dentro del proyecto para comodidad en la compilación, y corresponden a la versión 1.0 revisada por Jeremías Pablo De la Cruz y Guillermo Hernán Bustos. = Información para usuarios del RoMAA-II =
== Características generales de la plataforma ==
[[CaracteristicasGenerales|Link a características generales de la plataforma. Diferencias entre RoMAAs]]
Línea 18: Línea 28:
=== Compilación ===
Para compilar el proyecto es necesario ubicarse en la carpeta "app" y ejecutar:
== Funcionamiento básico ==
[[LabElectronica/RoMAAFirmware23/FuncionamientoBasico|Funcionamiento básico]]

Encendido, apagado, reseteo, etc.

Grabación del FW

== Condiciones inicales ==
[[LabElectronica/RoMAAFirmware23/Condiciones iniciales|Condiciones iniciales]]

== Lógica simple de funcionamiento ==
[[LabElectronica/RoMAAFirmware23/LogicaFuncionamiento|Lógica simple de funcionamiento del FW]]

=== Comandos ===
[[LabElectronica/RoMAAFirmware23/Comandos|Comandos]]: Se describen todos los comandos disponibles para la utiización de la plataforma y los básicos iniciales para comenzar en cualquier aplicación de nivel superior a desarrollar.

Descripción agrupada por tipos de comandos

Detalle del efecto que tienen sobre el RoMAA, en que secuencia debería usarse

Detalle de la trama, envío y recepción a codificar

= Información para desarrolladores del FW del RoMAA-II =
== Repositorio ==
[[LabElectronica/RoMAAFirmware23/Repositorio|Repositorio]]<<BR>>Creación del tag v2.2 disponible para utilizar con ambos RoMAAs. Creación y utilización del trunk v2.3 para el desarrollo del proyecto.

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 "Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM7 y RTOS embebido. Caracterización". Tesis de grado para obtener el título de Ing. en electrónica de Santiago Pérez y Martín Baudino [[LabElectronica/FreeRTOSLpc2114Web|Ir]].

La versión en desarrollo actual (v2.4) se encuentra en el repositorio [[http://proyectos.ciii.frc.utn.edu.ar/romaa_firmware|romaa_firmware]]. Y se puede descargar del servidor con:
Línea 22: Línea 59:
romaa_freertos/app$ ./rom_arm.sh hg clone https://proyectos.ciii.frc.utn.edu.ar/hg/romaa_firmware romaa_firmware_v2.4_trunk
Línea 24: Línea 61:
(este script debe tener permisos de ejecución) == Archivos que componen el proyecto ==
== CiiiEmbLibs ==
[[LabElectronica/RoMAA-FW/CiiiEmbLibs|CiiiEmbLibs]]
Línea 26: Línea 65:
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. == FreeRTOS ==
== Funcionamiento del FW ==
=== Compilación y Makefile ===
=== Lógica general ===
=== Condiciones iniciales ===
=== Descripción por partes del FW ===
El programa principal del firmware está dividido en tres partes principales, que se describen en los links a continuación:
Línea 28: Línea 73:
Para limpiar el proyecto es necesario ejecutar:  * [[LabElectronica/RoMAA-FW/main|Main]]<<BR>>es la función principal del firmware, que de inicio a las tareas, inicializaciones de variables y configuración de hardware, ejecutándose solo una vez y finalizando con la entrega del control del flujo del programa y sincronización de tareas al scheduler del FreeRTOS.
 * [[LabElectronica/RoMAA-FW/tasks|Tareas]]<<BR>>son 5 tareas en total, que el FreeRTOS sincroniza para que funcionen en pseudoparalelo, según las prioridades asignadas a las mismas y los tiempos de repetición de cada una de ellas.
 * [[LabElectronica/RoMAA-FW/interrupts|Interrupciones]]<<BR>>se usan con dos propósitos fundamentales. Por un lado, la lectura de los encoders, único sensor de realimentación de velocidad utilizado en el movimiento de la plataforma; y por el otro lado, para el timer que utiliza el scheduler del FreeRTOS en la sincronización de todas las tareas y recursos.
Línea 30: Línea 77:
{{{
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
}}}
El comando grabar_u está configurado para utilizar por defecto el dispositivo /dev/ttyUSB0. Si el dispositivo USB se encuentra en una ubicación diferente, se debe agregar la opción USB. Por ejemplo, para grabar utilizando /dev/ttyUSB1:

{{{
romaa_freertos/app$ make grabar_u USB=/dev/ttyUSB1
}}}
==== Nota: ====
Esta información también está presente en el archivo LEAME.txt, dentro de la carpeta app.
=== Modificaciones detalladas entre versiones ===
== Cambios significativos y problemáticas resueltas relevantes ==
 1. [[LabElectronica/RoMAA-FW/Memoria|Memoria]]<<BR>>Estudiar e implementar el uso optimizado de memoria de la aplicación con FreeRTOS'''.'''
 1. [[LabElectronica/RoMAA-FW/Grabación del Firmware|Grabación del Firmware con LPC2isp]]<<BR>>Estudio y corrección de los problemas de grabación con el software LPC2isp.
 1. [[LabElectronica/RoMAA-FW/PID|PID]]<<BR>>Implementación de la codificación del PID del cuadricóptero QA3, variables, recursos del FreeRTOS e interacción con las demás tareas.
 1. [[LabElectronica/RoMAA-FW/VariosAplicacion|Varios Aplicación]]<<BR>>Optimización y utilización de varios recursos y configuraciones del FreeRTOS para la aplicación.
 1. [[LabElectronica/RoMAA-FW/Interrupciones y RTOS|Interrupciones y RTOS]]<<BR>>Estudio e implementación de las interrupciones bajo programación segura con los recursos del FreeRTOS.
 1. [[LabElectronica/RoMAA-FW/Uso y medición de los recursos del micro|Uso y medición de los recursos del micro]]<<BR>>Estudio e implementación de mediciones de recursos del micro, FreeRTOS y aplicación
 1. [[LabElectronica/RoMAA-FW/Compilacion|Compilación]]<<BR>>Errores posibles en la compilación y como solucionarlos.
 1. [[LabElectronica/RoMAA-FW/Makefile|Makefile]]<<BR>>Errores posibles en el Makefile y como solucionarlos. <<BR>>

Firmware del robot móvil RoMAA-II

Objetivos

Aquí se documentarán y organizarán todas las investigaciones y desarrollos ha realizar y realizados para la optimización del firmware de la plataforma robótica móvil RoMAA-II, en su aplicación con el sistema operativo en tiempo real FreeRTOS.

Caracteterísitcas generales del FW

Trabajos iniciales

FreeRTOS

Modo de funcionamiento

Tareas

Versiones del FW

v2.5 - 2012/12/20 - Final Estable

Esta es la versión final estable del FW del RoMAA 2012. Para ver todas las versiones y modificaciones del FW, aquí.

v2.3 - 2012/09/20 - Innovar

Esta es la versión estable del FW del RoMAA, utilizada en INNOVAR 2012. Para ver todas las versiones y modificaciones del FW, aquí.

Información para usuarios del RoMAA-II

Características generales de la plataforma

Link a características generales de la plataforma. Diferencias entre RoMAAs

Funcionamiento básico

Funcionamiento básico

Encendido, apagado, reseteo, etc.

Grabación del FW

Condiciones inicales

Condiciones iniciales

Lógica simple de funcionamiento

Lógica simple de funcionamiento del FW

Comandos

Comandos: Se describen todos los comandos disponibles para la utiización de la plataforma y los básicos iniciales para comenzar en cualquier aplicación de nivel superior a desarrollar.

Descripción agrupada por tipos de comandos

Detalle del efecto que tienen sobre el RoMAA, en que secuencia debería usarse

Detalle de la trama, envío y recepción a codificar

Información para desarrolladores del FW del RoMAA-II

Repositorio

Repositorio
Creación del tag v2.2 disponible para utilizar con ambos RoMAAs. Creación y utilización del trunk v2.3 para el desarrollo del proyecto.

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 "Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM7 y RTOS embebido. Caracterización". Tesis de grado para obtener el título de Ing. en electrónica de Santiago Pérez y Martín Baudino Ir.

La versión en desarrollo actual (v2.4) se encuentra en el repositorio romaa_firmware. Y se puede descargar del servidor con:

hg clone https://proyectos.ciii.frc.utn.edu.ar/hg/romaa_firmware romaa_firmware_v2.4_trunk

Archivos que componen el proyecto

CiiiEmbLibs

CiiiEmbLibs

FreeRTOS

Funcionamiento del FW

Compilación y Makefile

Lógica general

Condiciones iniciales

Descripción por partes del FW

El programa principal del firmware está dividido en tres partes principales, que se describen en los links a continuación:

  • Main
    es la función principal del firmware, que de inicio a las tareas, inicializaciones de variables y configuración de hardware, ejecutándose solo una vez y finalizando con la entrega del control del flujo del programa y sincronización de tareas al scheduler del FreeRTOS.

  • Tareas
    son 5 tareas en total, que el FreeRTOS sincroniza para que funcionen en pseudoparalelo, según las prioridades asignadas a las mismas y los tiempos de repetición de cada una de ellas.

  • Interrupciones
    se usan con dos propósitos fundamentales. Por un lado, la lectura de los encoders, único sensor de realimentación de velocidad utilizado en el movimiento de la plataforma; y por el otro lado, para el timer que utiliza el scheduler del FreeRTOS en la sincronización de todas las tareas y recursos.

Modificaciones detalladas entre versiones

Cambios significativos y problemáticas resueltas relevantes

  1. Memoria
    Estudiar e implementar el uso optimizado de memoria de la aplicación con FreeRTOS.

  2. Grabación del Firmware con LPC2isp
    Estudio y corrección de los problemas de grabación con el software LPC2isp.

  3. PID
    Implementación de la codificación del PID del cuadricóptero QA3, variables, recursos del FreeRTOS e interacción con las demás tareas.

  4. Varios Aplicación
    Optimización y utilización de varios recursos y configuraciones del FreeRTOS para la aplicación.

  5. Interrupciones y RTOS
    Estudio e implementación de las interrupciones bajo programación segura con los recursos del FreeRTOS.

  6. Uso y medición de los recursos del micro
    Estudio e implementación de mediciones de recursos del micro, FreeRTOS y aplicación

  7. Compilación
    Errores posibles en la compilación y como solucionarlos.

  8. Makefile
    Errores posibles en el Makefile y como solucionarlos.

None: LabElectronica/RoMAA-FW (última edición 2013-01-26 15:47:38 efectuada por SantiagoPerez)