Hackea la MiniBlip, repo para el hackatón CircoLab/BQ/Miniblip
Puedes ver este contenido en versión web.
La miniblip es una placa creada por BQ para wearables y lo que surja. Tiene dos botones, 5 botones capacitivos y un array de leds. Está basada en un ARM Cortex-M0 a 48MHz, el LPC11U24 que incluye 32KB FLASH y 8KB RAM y funciona a 48MHz (más detalles)
Conecta la placa a tu USB. Si pulsas el botón rectangular más cercano al
USB mientras estás enchufándolo se pondrá en "modo programación" y aparecerá en tu ordenador como
un USB drive. El fichero firmware.bin
será el que habrá que sustituir
por tus propios ficheros cuando los compiles.
Se usa el entorno de desarrollo MBED. Lo primero es darse de alta en el mismo.
Se trabaja sobre el compilador para compilar los ficheros. El tipo de plataforma es MBED LPC11U24, será la que hay que seleccionar cuando se crea un nuevo proyecto.
Podemos empezar por los
proyectos del autor de la placa, Alberto Piganti,
por ejemplo,
blip_rainbow
. Se
importa en el compilador pulsando en "Import this program", recordando
seleccionar la plataforma anterior si te lo pide e importando las
librerías, en este caso PixelLibrary, también si lo pide.
Se compila pulsando en el botón correspondiente y se descarga el fichero.
- Mira donde se ha montado la placa escribiendo
mount
- Una vez sabemos donde está nuestra miniblip (en mi caso /dev/sdb)
sudo dd if=nuevo_firmware.bin of=/dev/sdb bs=512 seek=4 conv=notrunc
- Finalmente, desmontamos la miniblip, bien con el entorno gráfico o con terminal
umount /dev/sdb
Usando el script miniblip_loader podemos cargar nuestros programas automáticamente
$ miniblip_loader.sh + [firmware.bin]`
Al conectar de nuevo el sistema empezará a funcionar el nuevo programa.
Puedes ver los binarios en este repositorio. Si quieres subir el tuyo propio, haz un fork, incorpora tu binario siguiendo las instrucciones y haz un pull request.
Hacer un fork. Una vez hecho
git remote add upstream git@github.com:hack-miniblip/hack-miniblip.github.io.git
(o equivalente en https
).
Y recordad antes de hacer cualquier cambio y subirlo
git pull upstream master
Podéis hacer un pull request a este repo o un simple enlace a este README.
Cookbook con cosillas
Te puedes descargar el programa completo del entorno pulsando con el botón de la derecha y dándole a "Export program", pero necesitarás algo más para compilar.
En este tutorial vienen instrucciones para crear el entorno de programación local.
-
Instálate el entorno de programación siguiendo estas instrucciones. En esa página hay enlaces a un PPA (para instalación y actualización desde repo) o te lo puedes bajar en .zip. En algunas versiones de Ubuntu no será necesario, basta con hacer
sudo apt-get install gcc-arm-none-eabi binutils-arm-none-eabi
-
Descomprime el .zip que te hayas bajado del entorno en un fichero. Edita el
Makefile
y edita esta línea para ponerGCC_BIN = /usr/bin/
que es donde se instala el compilador.
Puede que te dé algún problema del estilo
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: colorines.elf section `.text' will not fit in region `FLASH'
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: region `FLASH' overflowed by 208 bytes
En cuyo caso tendrás que recortar el tamaño del fichero, quitando variables e info de depuración, por ejemplo.
Si no te da ningún problema, te generará un .bin
. Ya casi estás. Tendrás que pillarte el programa crcset.c
y compilarlo. Este programa pone los bits de comprobación correctamente, para evitar el error que sale al final:
*****
***** You must modify vector checksum value in *.bin and *.hex files.
*****
Con eso, ya haces
./crcset nombre-del-programa.bin
¡Y ya estás listo! El programa crcset
está incluido en este repo.
En el
repositorio de CirCoLab
tienes también un ejemplo, colorines
, con todos los ficheros
necesarios. Simplemente edita el programa main.cpp
en ese directorio
y escribe Make para crear el fichero de salida; aún así, tendrás que
tener los compiladores necesarios instalados.