glib para sistemas embebidos

106 views
Skip to first unread message

Jonathan Marino

unread,
Aug 2, 2017, 8:37:24 AM8/2/17
to Embebidos32
Hola a todos,
Estoy desarrollando mi tesis sobre distintos frameworks que faciliten la codificacion de objetos en C y su aplicación sobre sistemas embebidos.
Ahora el framework que estoy analizando es glib, la librería de gnome.
Alguien intentó alguna vez "deployarlo" en un sistema embebido (si fuese en una CIAA mejor pero no me es indispensable)?
Qué experiencia tuvo?

Algo que me parece muy bueno de esta librería es la cantidad de comunidad, recursos y otras librerías basadas en ella, así como también una cantidad considerable de gente que trabaja en informática y que conoce glib y podría incorporarse más facilmente en el desarrollo de embebidos.

Saludos,
Jonathan Marino

Ezequiel Garcia

unread,
Aug 2, 2017, 12:28:25 PM8/2/17
to embebidos32@
Jonathan,

2017-08-02 9:37 GMT-03:00 Jonathan Marino <jonym...@gmail.com>:
> Hola a todos,
> Estoy desarrollando mi tesis sobre distintos frameworks que faciliten la
> codificacion de objetos en C y su aplicación sobre sistemas embebidos.
> Ahora el framework que estoy analizando es glib, la librería de gnome.
> Alguien intentó alguna vez "deployarlo" en un sistema embebido (si fuese en
> una CIAA mejor pero no me es indispensable)?
> Qué experiencia tuvo?
>

Glib (asi como cualquier otro framework popular, lease Qt, Boost) y
sus derivados como Gstreamer son MUY, MUY, MUY usados en
sistemas embebidos (con Linux).

Casi te diría que si uno va a empezar un proyecto lo hace con
C/glib o con C++/Qt (Qt es mucho mas que GUI [1])...
o sino en Node.js, Python, Lua, Rust, o $name_your_lang.

Más aún, considerando que los sistemas embebidos (con Linux)
suelen tener potencia de sobra para correr _cualquier cosa_,
vas a encontrar con que se corre _cualquier cosa_ en un sistema
embebido. Y casi siempre con éxito.

Pensá que ya se están usando containers para facilitar el
deployment de sistemas embebids (ver [2]).

[1] http://elinux.org/images/b/bb/Qt-for-non-graphical-applications.pdf
[2] https://resinos.io/
--
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar

Jonathan Marino

unread,
Aug 2, 2017, 1:45:14 PM8/2/17
to Embebidos32
Muchas gracias Ezequiel por tu respuesta,

De hecho mi investigación es para un desarrollo más general, sin la necesidad de tener linux.

Seguramente sea díficil tener todo glib funcionando sin linux quizas en otro os (que te parece?)

Pero mi idea es poder utilizar la parte de la librería que se encarga de la orientación a objetos 
(GType, GObject, Interfaces, Properties, (signals?))
Quizas me podrías compartir que factibilidad le ves a eso implementado para un se chico...

Saludos,

martin ribelotta

unread,
Aug 2, 2017, 1:53:01 PM8/2/17
to embebidos32@
El 2 de agosto de 2017, 14:45, Jonathan Marino <jonym...@gmail.com> escribió:
Muchas gracias Ezequiel por tu respuesta,

De hecho mi investigación es para un desarrollo más general, sin la necesidad de tener linux.

Seguramente sea díficil tener todo glib funcionando sin linux quizas en otro os (que te parece?)

Pero mi idea es poder utilizar la parte de la librería que se encarga de la orientación a objetos 
(GType, GObject, Interfaces, Properties, (signals?))
Quizas me podrías compartir que factibilidad le ves a eso implementado para un se chico...

glib/gobject depende fuertemente de sistemas posix like ya que usa fuertemente malloc/free o sus distintas formas de hacer las cosas a travez de mmap, asi que yo lo tomaria como referencia.

Yo intentaria compilar solo lo de:
Que es lo que hace la magia OO en glib, lo otro ni me molestaria porque requiere un POSIX abajo.

Vas a tener algunos problemas con las signal pero ese es codigo que puede fakearse facil o comentarlo.

Tambien tendrias que portar las primitivas de manejo de variables atomicas que usan internamente futexes del sist operativo.
 

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32+unsubscribe@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" 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 embebidos32+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Ezequiel Garcia

unread,
Aug 2, 2017, 1:55:47 PM8/2/17
to embebidos32@
2017-08-02 14:45 GMT-03:00 Jonathan Marino <jonym...@gmail.com>:
> Muchas gracias Ezequiel por tu respuesta,
>
> De hecho mi investigación es para un desarrollo más general, sin la
> necesidad de tener linux.
>

En cierto sentido, no tener Linux me parece que te lleva a un desarrollo
menos general. Linux tiene muchos puntos en contra, pero justamente
el punto a favor es la portabilidad.

> Seguramente sea díficil tener todo glib funcionando sin linux quizas en otro
> os (que te parece?)
>
> Pero mi idea es poder utilizar la parte de la librería que se encarga de la
> orientación a objetos
> (GType, GObject, Interfaces, Properties, (signals?))
> Quizas me podrías compartir que factibilidad le ves a eso implementado para
> un se chico...
>

Supongo que será factible. Como opinión personal, no me parece viable de
acuerdo a varias métricas.

Hacer un port es un costo extra, hacer un port implica un fork. Un fork
implica mantener un fork, lo que implica atarse a una versión, atarse
a un hardware. Y después tenés que pensar que tu port tiene cero testing,
vs. el testing infinito del port unix.

Supongo que no será tan así, porque glib usa una libc, y no va al hardware
directo. Como sea, es muy díficil encontrar razones para hacer un fork de algo,
o para usar algo fuera del ambiente donde fue pensado.

Como dice Martín, es posible. Pero hacerlo para un proyecto industrial,
donde vas a tener 100 o 1000 deploys?

Me parece muchísimo más viable tomar algunas ideas de glib y hacer
un framework parecido. Si te ponés a pensar, definir un par de reglas
de como hacer OO en C es bastante fácil. Por ejemplo, se pueden tomar
algunas ideas de [1].

[1] https://lwn.net/Articles/444910/

Jonathan Marino

unread,
Aug 2, 2017, 2:28:36 PM8/2/17
to Embebidos32
De nuevo gracias,

Con general no me refería a portable sino para la mayoría de las plataformas.

Quizas sea más viable compilar con un RTOS POSIX-compliant pero más chico que linux. 
(cómo lo ven? yo conozco embox, pero hay varios, quizas alguno más parecido a linux pero me gustaría que sea para un desarrollo con 1MB de RAM tmb)

completamente no quiero hacer un fork y ponerme a modificar el código de glib, quiero analizar tener GType/GObject corriendo en la mayoría de se's posibles.

Estoy estudiando varios frameworks para OO C, quizas habrá otro hilo más adelante para compartir cuales son y preguntar a la comunidad que les parecen, pero ahora lo que estoy analizando es GType/GObject.

Jonathan Marino

unread,
Aug 2, 2017, 6:49:50 PM8/2/17
to Embebidos32
Por lo que estuve investigando hay trabajo hecho para portar linux en procesadores muy reducidos (STM32F2 por ejemplo). Por lo que no hay necesidad de buscar otro RTOS.

Para hacer tests de memoria y speed podría usar el linux que se hizo para la CIAA ( felicitaciones Ezequiel! )
Sirve para la EDU-CIAA no?
Otro opción sería correr los tests en un emulador.
alguien tiene experiencia en correr linux embedded en qemu por ejemplo?

Saludos,

martin ribelotta

unread,
Aug 3, 2017, 3:09:15 PM8/3/17
to embebidos32@
El 2 de agosto de 2017, 19:49, Jonathan Marino <jonym...@gmail.com> escribió:
Por lo que estuve investigando hay trabajo hecho para portar linux en procesadores muy reducidos (STM32F2 por ejemplo). Por lo que no hay necesidad de buscar otro RTOS.

Linux en menos de 8M de RAM apesta bastante y no te da la potencia que necesitas ni loco para programar orientado a objetos en C
 
Para hacer tests de memoria y speed podría usar el linux que se hizo para la CIAA ( felicitaciones Ezequiel! )
Si tenes una CIAA u otra placa con un LPC43xx o LP18xx y mas de 8-16MB de RAM externa si.
 
Sirve para la EDU-CIAA no?
Definitivamente NO. Linux necesita RAM, MUCHA RAM, mas de 8M. Si bien la CIAA los tiene, la EDU-CIAA no.
Tampoco se le puede poner RAM porque (lamento el bardeo reiterado) no se le rutearon los pines de la memoria para afuera.
 
Otro opción sería correr los tests en un emulador.
alguien tiene experiencia en correr linux embedded en qemu por ejemplo?

A que le llamas linux embebido????
QEMU suporta todas estas arquitecturas ARM

Algunas con MMU y otras no.
Hoy una PC de escritorio puede considerarse linux embebido tranquilamente.

En cuanto a compilar glib con otra cosa que no sea Linux, bueno, creo que es mas facil correrlo bare metal -_-
Definitivamente glib esta fuertemente ligado a linux u otro sistema unix like. Sacarlo de ahi es comprarse un quilombo sin ningun beneficio.
Yo tomaria ideas de glib/gobject y otras implementaciones POO y armaria mi solucion aparte.
Tambien pensa que si POO en C fuera algo viable no existirian cosas como C++ ni glib/gtk apestaria tanto (porque apesta, vamos a decir la verdad)

Jonathan Marino

unread,
Aug 3, 2017, 3:58:55 PM8/3/17
to embeb...@googlegroups.com
jaja, sí apesta bastante, pero tmb hay varios recursos para que no apeste(ej gob). Y en el manual de desarrollo explican que tmb esto se produce por querer generar un framework que se utilice para programacion multilenguaje (poligota).
A mí me resulta bastante natural en otros frameworks o especificaciones más simplificados. Lo más sencillo es esto.
El modelo de objetos de C++ y el lenguje es bastante criticado: link 
y de hecho fue parte de la decisión de crear GObject (ver 3.1.3 de esta tesis).
Me he encontrado con frameworks que implementan modelos de objetos muy superiores a C++ y con bastante sencillez (por ejemplo cos). 

Lo que necesito es solo GType/GObject, quizas solo sea posix dependiente (???). Según los de embox sería sencillo portar glib (porque tienen soporte para portar código linux dependiente, pero no sé a qué costo). Pero igualmente decidí dejarlo aparte como "Future work". En principio lo voy a correr en QEMU con linux, lamentablemente no tengo una CIAA-NXP para mi tesis para mostrar que es posible programar en GLib-C en ella.

Ahora tengo QEMU con un Debian común sobre ARM ( la maquina que estoy usando es "virt" ). Igualmente para comparar los frameworks no sé que tanto vale correrlo sobre ARM (emulado) sobre correrlo sobre mi PC. Quizás a nivel relativo no cambien las cosas significativamente (Abro un nuevo hilo preguntando).

Gracias por el dato sobre la EDU-CIAA y sobre donde correr linux.

Saludos,

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32+unsubscribe@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito a un tema del grupo "Embebidos32" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/embebidos32/yj82LUTZQ-g/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a embebidos32+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages