Firmware v3 y novedades

193 views
Skip to first unread message

Eric Pernia

unread,
Mar 21, 2018, 6:23:09 PM3/21/18
to ciaa-coo...@googlegroups.com, CIAA-Firmware, Martin Ribelotta, Pablo Ridolfi, Pablo Gomez, Juan Manuel Cruz Beaufrere, Esteban Volentini, Comunidad Posgrado Embebidos
Buenas tardes, con Martín Ribelotta hemos trabajado en la siguiente estructura (pensando en Firmware v3 que charlamos en el SASE 2017):


El nombre del repo es porque estamos utilizando este proyecto para las materias de especialización de la UBA.

Tiene las siguientes características:
  • Se incluyen las bibliotecas:
    • LPCOpen v3.01
    • sAPI r0.5.0.
    • FreeRTOS Kernel V10.0.1
  • Una única sAPI ya sea que se utilice con o sin freeRTOS a diferencia de Firmware v2 que tiene los fuentes repetidos (estaba el tema del SysTick_Handler duplicado).
  • La carpeta libs permite incluir una nueva bilioteca de 2 formas:
    • Biblioteca sencilla, una carpeta con adentro de libs que en su interior contenga una carpeta "src" con los archivos .c y una carpeta "inc" con los archivos .h. Este tipo de biblioteca se compila automáticamente por como está definido el makefile.
    • Biblioteca avanzada, una biblioteca compleja como LibUSB o cosas raras con una esturtura complicada de carpetas y subcarpetas. En este caso hay que hacerle un pequeño makefile que agregue dichas rutas y particularidades. Se pueden usar de ejemplos los makefiles que hay en las 3 bibliotecas que trae.
  • Esta estructura de proyecto es mucho más sencilla de generar automáticamente desde un wizzad que las anteriores (Firmware v1 y Firmware v2).
  • También es más sencilla para la búsqueda de dependencias automatizada, y la búsqueda de símbolos (control+click en Eclipse). Contiene makefiles no recursivos.
  • Por ahora da soporte únicamente a la EDU-CIAA-NXP y CIAA-NXP.  Estamos viendo como conviene agregar las otras arquitecturas o si será un repositorio por MCU que soportamos.
  • Está pensada para ser utilizada como multiproyecto al estilo Firmware o Firmware v2, o como un único proyecto de manera más sencilla. De este modo se pueden utilizar las bibliotecas por defecto que vienen en varios proyectos, o bien, compiar este proyecto y modificar las bibliotecas a gusto para usarlo de molde.
  • Uso:
    • El archivo project.mk permite elegir el proyecto y ruta del mismo que se desea utilizar.
    • Cada proyecto es una carpeta que incluye dentro sus carpetas src (archivos .c), inc (archivos .h) y un archivo config.mk, donde se ponen algunos parámetros de compilación y se elige qué bibliotecas incluirá el proyecto.
  • Usando este proyecto desde las plantillas de Embedded IDE es factible configurar todos los parámetros del project.mk y del config.mk desde un wizzard sencillo para generar un nuevo proyecto en base a esta estructura.
  • Los ejemplos de la carpeta examples son programas sencillos que muestran diferentes combinaciones de lenguajes y bibliotecas en ellos. La idea es sumar a estos todos los ejemplos de Firmware v2, cuyos proyectos son compatibles a excepción de que hay que agregarle el config.mk.
Nota: 
No se van a tocar los repositorios de Firmware y Firmware v2 para que el que los usa pueda seguir haciéndolo con normalidad, pero si proponemos al menos que prueben la esturctura nueva para que nos hagan llegar sus comentarios.

En otras novedades además de Eclipse y Embedded IDE hemos estado utilizando vsCode con buenos resultados como IDE para C/C++.

@Ruso, algo más que me olvide?


Saludos.
Eric Pernia.
Coordinador General del Proyecto CIAA.

Ariel Lutenberg

unread,
Mar 21, 2018, 6:34:02 PM3/21/18
to Eric Pernia, ciaa-coo...@googlegroups.com, CIAA-Firmware, Martin Ribelotta, Pablo Ridolfi, Pablo Gomez, Juan Manuel Cruz Beaufrere, Esteban Volentini, Comunidad Posgrado Embebidos
QUE BUENO!!!!
Felicitaciones!!!
Abrazos,
Ariel.

--
Has recibido este mensaje porque estás suscrito al grupo "CIAA-Coordinacion" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a ciaa-coordinacion+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a ciaa-coordinacion@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

martin ribelotta

unread,
Mar 22, 2018, 7:57:06 PM3/22/18
to Eric Pernia, ciaa-coo...@googlegroups.com, CIAA-Firmware, Pablo Ridolfi, Pablo Gomez, Juan Manuel Cruz Beaufrere, Esteban Volentini, Comunidad Posgrado Embebidos
El 21 de marzo de 2018, 19:23, Eric Pernia <ericp...@gmail.com> escribió:
Agrego que anoche le agregamos soporte de C++ y corregimos algunos bugs.
El ejemplo es bastante simplón y genera muy buen código (comparable a C plano):
#include <program.h>

using namespace sapi;

DEBUG_PRINT_ENABLE
CONSOLE_PRINT_ENABLE

struct {
   GpioIn button;
   GpioOut led;
} io[] = {
   { { TEC2 }, { LED1 } },
   { { TEC3 }, { LED2 } },
   { { TEC4 }, { LED3 } },
   { { TEC1 }, { LEDR } },
};

int main( void )
{
   GpioOut blinkLed(LEDB);
   while( true ) {
      for( auto& e: io )
         e.led = not e.button;

if( blinkLed.toggle().isOn() ) { debugPrintlnString( "Blinking led encendido." ); consolePrintlnString( "Blinking led encendido." ); } else { debugPrintlnString( "Blinging led apagado." ); consolePrintlnString( "Blinging led apagado." ); }
delay( 100 ); } return 0; }
GpioIn y GpioOut son solo wrappers slim sobre sAPI que se usan como ejemplo.
Estamos abiertos a quien quiera colaborar con un wrapper de C++ (eso si, tiene que saber lo que esta haciendo) para sAPI o cualquier aporte en el area de C++ que quieran hacer.
Mi idea es soportar tanto C++ como en un futuro rust.

Por el lado del IDE estoy en proceso de refactorización de cara a la futura v0.7 que debe incluir debugger y solucionar varios problemas con el indexado de codigo y autocompletado.

Pablo Ridolfi

unread,
Mar 22, 2018, 8:01:07 PM3/22/18
to martin ribelotta, CIAA-Firmware, Comunidad Posgrado Embebidos, Eric Pernia, Esteban Volentini, Juan Manuel Cruz Beaufrere, Pablo Gomez, ciaa-coo...@googlegroups.com
Excelente!!! 👏👏👏

Felix Safar

unread,
Mar 22, 2018, 8:05:50 PM3/22/18
to Eric Pernia, ciaa-coo...@googlegroups.com, ciaa-f...@googlegroups.com, Martin Ribelotta, Pablo Ridolfi, Pablo Gomez, Juan Manuel Cruz Beaufrere, Esteban Volentini, Comunidad Posgrado Embebidos

Eric, Martin,
que buen laburo, felicitaciones !!

Abz, Felix


--
Has recibido este mensaje porque estás suscrito al grupo "CIAA-Firmware" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a ciaa-firmwar...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/ciaa-firmware.

Matias Loiseau

unread,
Mar 23, 2018, 10:46:08 AM3/23/18
to CIAA-Firmware
Excelente gente ! ! +10

Bioing. Juan Manuel Reta

unread,
Mar 23, 2018, 1:40:11 PM3/23/18
to Matias Loiseau, CIAA-Firmware
Excelente laburo!!!
Muy bueno lo de la configuración de módulos por proyecto.

Felicitaciones!

Saludos, 




Mg. Bioing. Juan Manuel Reta
Profesor Titular Exclusivo
Electrónica Programable - Departamento Electrónica
Director - Laboratorio de Prototipado Electrónico y 3D
Universidad Nacional de Entre Ríos
tel: 0343 4975101 int 156
http://ingenieria.uner.edu.ar/grupos/prototipado/

El 23 de marzo de 2018, 11:46, Matias Loiseau <matias...@gmail.com> escribió:
Excelente gente ! ! +10

--
Has recibido este mensaje porque estás suscrito al grupo "CIAA-Firmware" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a ciaa-firmware+unsubscribe@googlegroups.com.

Eric Pernia

unread,
Mar 29, 2018, 7:57:19 AM3/29/18
to ciaa-coo...@googlegroups.com, CIAA-Firmware, Martin Ribelotta, Pablo Ridolfi, Pablo Gomez, Juan Manuel Cruz Beaufrere, Esteban Volentini, Comunidad Posgrado Embebidos
Se portaron muchos de los ejemplos de Firmware v2 al v3, ante el cambio de versión de FreeRTOS hay que revisar todos los ejemplos del libro que había portado Juan Manuel (con FreeRTOSv7) ya que este Firmware tiene el FreeRTOS v10.

De FreeRTOS funcionan los ejemplos de:

examples/sAPI/operating_systems/freeRTOS/freeRTOS_01_blinky El ejemplo básico
examples/languages_and_libs/C_FreeRTOS_sAPI El ejemplo con FreeRTOS estatico que armó Martín.

Tambien se agregó la documentación de las placas en la raiz del repo en la carpeta documentación.

Saludos y felices pascuas!
Eric.

El 21 de marzo de 2018, 19:23, Eric Pernia <ericp...@gmail.com> escribió:

Juan Manuel Cruz Beaufrere

unread,
Mar 29, 2018, 8:08:09 AM3/29/18
to Eric Pernia, ciaa-coo...@googlegroups.com, CIAA-Firmware, Martin Ribelotta, Pablo Ridolfi, Pablo Gomez, Esteban Volentini, Comunidad Posgrado Embebidos

Eric, el lunes comienzo a revisar los ejemplos del libro, buen finde, abrazo.    Juan

Eric Pernia

unread,
Mar 29, 2018, 8:47:31 AM3/29/18
to Juan Manuel Cruz Beaufrere, ciaa-coo...@googlegroups.com, CIAA-Firmware, Martin Ribelotta, Pablo Ridolfi, Pablo Gomez, Esteban Volentini, Comunidad Posgrado Embebidos
Gracias Juan!

Abrazo.
Eric.
Reply all
Reply to author
Forward
0 new messages