Smartphone abierto con Linux - Openmoko Neo FreeRunner

13 de enero de 2010

Lang: cs en de es

Cómo programar fácil y eficazmente para Neo FreeRunner

Con un sistema construido sobre Linux, GNU y otros proyectos libres, puedes programar en muchos lenguajes y usar muchas librerías para el programa resultante y usar componentes móviles modernos lo hace muy fácil.
Puedes programar en C/C++, por supuesto, que está muy extendido y es adecuado para dispositivos como el Neo FreeRunner, porque el programa resultante suele ser más rápido.
Una opción interesante es el nuevo lenguaje Vala, que lo hace mucho más fácil de trabajar que C++, y sin embargo el programa resultante es casi tan rápido como C++, porque también se compila en código nativo del procesador.

Ya que queremos empezar a programar de forma rápida y sencilla, sin adquirir y configurar ningún recurso de desarrollo específico para nuestro dispositivo, como bibliotecas y un compilador, elegimos el lenguaje de programación Python. Este lenguaje de programación es de scripting y, por lo tanto, se compila en tiempo de ejecución, por lo que es posible programar en el editor más corriente y en cualquier SO (incluso en Windows en el Bloc de Notas :-D). Al mismo tiempo es más fácil desarrollar en él que en C.

El control de periféricos y otros HW se puede hacer fácilmente usando DBUS.
Para programas gráficos, el toolkit preferido de SHR es Elementary. (OpenMoko wiki Elementary) , que está adaptado para dispositivos móviles con una pequeña pantalla táctil.
El programa Python se puede probar directamente en FreeRunner sin modificaciones. Cómo mover fácilmente los archivos modificados? Finalmente llego a una solución en la que uso NFS para montar el directorio desde el escritorio, que contiene el proyecto en desarrollo, por lo que en realidad no hay necesidad de copiar nada ;-) .

Usuario Miss Neo:
slecna Neo

Se puede controlar FreeRunner con bastante facilidad por ejemplo desde la consola usando bash y mdbus (o mdbus2)
Podemos averiguar los servicios que proporciona nuestro sistema con el comando:

mdbus -s
Para saber qué objetos proporciona un servicio concreto, utilizaremos el comando:
mdbus -s org.freesmartphone.odeviced
Y luego podemos llamar a los métodos de cada objeto del servicio. Por ejemplo, para encender el botón rojo AUX, podemos usar simplemente este comando:
mdbus -s org.freesmartphone.odeviced \
  /org/freesmartphone/Device/LED/gta02_aux_red \
  org.freesmartphone.Device.LED.SetBlinking 100 100
A continuación, apague el parpadeo:
mdbus -s org.freesmartphone.odeviced \
  /org/freesmartphone/Device/LED/gta02_aux_red \
  org.freesmartphone.Device.LED.SetBrightness 0

En Python puedes controlar los LEDs así: Otros programas sencillos que pueden servir de modelo:
Un ejemplo de programa gráfico en Python usando Elementary.
Programa de control de diodos.
Programa para controlar el modo USB.
Programa que detecta llamadas entrantes/salientes/.., versiones tanto para Elementary como para GTK.

Ver la documentación del framework FSO que media esta comunicación con HW, llamadas, contactos y hace otras cosas.

Debugboard para OpenMoko Neo Freerunner

Por fin le he echado el guante debugboard para OpenMoko Neo Freerunner. Así que estoy deseando que llegue el invierno, la estación de las largas tardes en las que uno no puede salir tanto y por lo tanto tiene más tiempo para hackear. Con esta placa especial, uno puede hackear el FreeRunner perfectamente al nivel más bajo. Por ahora planeo sólo usar las salidas SPI y conectar el FreeRunner directamente al módulo IQRF. Después de todo, ¿por qué conectar el dispositivo a través de USB cuando se puede conectar el módulo directamente? Porque USB no es una interfaz nativa para IQRF, por lo que se necesita hardware USB adicional en ambos lados. Como resultado, se ahorran dos piezas de controlador USB y tampoco es necesario un controlador USB. Para el uso diario, el módulo podría entonces ser conectado directamente a un teléfono móvil.
Por supuesto, esta solución se puede portar a tablet TouchBook, que también tiene una línea SPI y definitivamente suficiente espacio en su interior.
Simplemente una solución más limpia que conectar un módulo IQRF al FreeRunner usando IQRF develop board. o simple placa de comunicación de bajo coste.
openmokodebugboard

Artículos sobre un tema similar

Análisis de la asignación y fijación de precios del desarrollo de proyectos de software
Programa Python para controlar Docker mediante la API
Cómo utilizar MailCatcher para probar correos electrónicos
API OpenAI de Python
Creación de una aplicación web WebSocket y configuración de un proxy
Gestión de proyectos: desarrollo ágil de software
Cómo ejecutar aplicaciones PHP antiguas
Lo que debe saber un buen programador
Lenguaje de programación Rust
NodeJS: desarrollo, configuración del servidor
Fallo de seguridad de Nette CVE-2020-15227
API REST: API de plataforma
Alojamiento web y de correo personalizado con el software ISP Config
Programación en SQL: PostgreSQL, MySQL/MariaDB
HTTPS: web segura
Base de datos NoSQL Mongo DB
Connecting to Microsoft SQL Server from Linux
¿Cuál es la descripción del trabajo de un programador?
Localización de aplicaciones Python
Qué correo y alojamiento web elegir
Digispark - Programar microcontrolador Atmel ATtiny con Arduino IDE
Desarrollo para procesadores ARM con Arduino IDE
Cómo programar el procesador WiFi ESP8266

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+