lunes, 13 de mayo de 2013

Raspberry e a utilización da Gpio


No anterior artigo comentaba como compilar un sistema operativo en tempo real para utilizar para automatización de procesos.  No meu caso a necesidade é para un proxecto de robótica sinxelo. A idea era estudar as posibilidades que ofrecía, neste caso Freertos.

Despois da compilación facer chiscar un led a través da Gpio non é nada complicado, e o exemplo ofrece un código para facelo moi sixelo. O problema é que ven desnudo, non ten nada máis que esas funcións necesarias para a saída de sinais mediante a Gpio.

Non hai posibilidade de ler sinais, non trae ningún exemplo de eso. Si se quere facer hai que escribir o código en c.  Isto require práctica de programación en c e coñecementos de harware da Raspberry.

Como conclusión Freertos ofrece a plataforma (o sistema operativo) para comezar, pero nada máis. No meu caso, que teño poucos coñecementos non me vale para empezar, magoa.  Quedará como unha futura liña de investigación.

Como o proxecto é sinxelo, si utilizo un sistema operativo de propósito xeral con multitarefa que non este moi cargado de servizos e aplicacións, podería cumprir o obxectivo. Polo que decidín utilizar un linux sen entorno gráfico. O máis rápido foi un archlinux. Rápido, rápido non, hai que pelexarse coa configuración de rede para conectarse a el mediante ssh, instalar as aplicacións básicas, etc.

Eu configurei o ssh, instalei o compilador, a utilidade git e as librerías necesarias para programar a gpio.

Que librerías preciso? Estudando como utilizar a Gpio, cheguei a este enlace (http://elinux.org/RPi_Low-level_peripherals) onde ademais de describir como están conectados os pines, expón varios exemplos de librerías para varios linguaxes de programación.

Como o comezo do proxecto foi automatizando mediante a plataforma Arduino a elección pareceume clara, a biblioteca wiringPi. A biblioteca está completa e ten tódalas funcións que podes precisar para utilizar a Gpio e outros recursos da Raspberry.

Si programastes coa plataforma Arduino é igual de fácil, coa diferenza que non temos o coñecido IDE de Arduino detrás.  Neste caso temos que aprender a utilizar algún editor de texto en liña de comandos de linux. Isto pode ser un camiño máis árido, xa que hai editores difíciles de usar, pero a súa vez máis potente que o sinxelo IDE de Arduino.

Se programa en C pero coas funcións que tiñamos co arduino (este utiliza a biblioteca wiring). Os que programáchedes en Arduino notaredes que non hai a función setup e loop. Isto se resolve na función main inicializando os recursos o principio da función e despois para substituír a función loop un bucle for infinito. 

A librería wiringPi é fácil de instalar. Esta mantida mediante a plataforma GIT, polo que hai que utilizar a utilidade git clone:

git clone git://git.drogon.net/wiringPi

Unha vez o temos na nosa Raspberry só temos que actualizar a librería mediante

cd wiringPi
git pull origin

E finalmente compilar lanzando o scrip:

./build

Non poño exemplos de como probar a librería, xa que igual que Arduino, wirinPi trae moitos exemplos de utilización das funcións. 


En resumo poderíamos dicir que utilizar wirinPi con a Raspberry fronte a Arduino ten a seguintes vantaxes e desvantaxes

Vantaxes:
  • A potencia do procesador da Raspberry frente o Arduino.
  • Podes ter algo máis de información por pantalla para depurar (no Arduino tiñas que enviala polo porto serie). 

Desvantaxes:
  • O entorno de desenvolvemento
  • E un pouco máis complicado de conectar. Hai que ter en conta que a Gpio da Raspberry traballa a 3,3.
  • Non ten conversores AD.
  • As saídas que poden utilizarse como PWM son moi limitadas na Raspberry. 
  • Tes un sistema operativo, coa sobrecarga da planificación e outros servizos do mesmo, que retardan o tempo de proceso do programa a executar.
  • Hai que utilizar editores de texto e compilar na liña de comandos.
  • Precisas coñecementos de linux.


domingo, 28 de abril de 2013

Compilación e instalación de Freertos na Raspberry Pi

Freertos e un sistema operativo en tempo real que pode ser instalado sobre a Raspberry Pi. A diferencia fundamental con respecto a outros sistemas operativos como por exemplo o Raspibian é que nos sistemas operativos de tempo real podes saber que o tempo de proceso do programa vai a ter unha duración dentro dun límite de tempo, o cal permite unha resposta adecuada para unha automatización dun proceso crítico. Nun sistema operativo multitarefa, de propósito xeral, o tempo de proceso non se pode asegurar, depende da prioridade da tarefa, do número tarefas en execución, etc.

Para elo é necesario baixarse unha serie de ferramentas e arquivos que dependen do sistema operativo onde se compilen. Os arquivos necesarios para a compilación se poden encontrar neste repositorio https://github.com/jameswalmsley/RaspberryPi-FreeRTOS. O programa proposto é simplemente un "Ola mundo" pero en harware (un led que parpadea). Hai que baixar os arquivos do repositorio, facendo un git clone.

Como é probable que compilemos os arquivos en un dispositivo distinto da Rasberry pi é necesario utilizar o "toolchain" (non se me ocorre como traducilo) para que a compilación non sexa co xogo de instruccións do procesador do equipo no que imos facer o proceso. O meu procesador, un x86 compila código para outro procesador, un ARM. De non facelo así, o compilar co make nos dará un erro de código 127 por que non encontra o gcc adecuado para compilar o código.

usuario@equipo:/datos/robotica/RaspberryPi-FreeRTOS$ make
 Dark Builder - Unified Build Environment
 Version (1.0.0 - Armstrong)
  [CC]    [RaspberryPi BSP] port.o
make: arm-none-eabi-gcc: Comando non atopado
make: *** [/datos/robotica/RaspberryPi-FreeRTOS/build/FreeRTOS/Source/portable/GCC/RaspberryPi/port.o] Erro 127



A Raspberry utiliza un procesador Broadcom BCM2835 SoC, que a súa vez está formado por varios módulos. O módulos máis importante é o procesador da CPU, un ARM1176JZF 700 MHz. Temos que instalar o compilador adecuado para este procesador que se pode obter do seguinte enlace https://launchpad.net/gcc-arm-embedded/. Ademais temos que especificarlle no makefile o camiño para que encontre os arquivos que precise. A continuación podedes ver como exemplo a ruta que eu tiña no meu equipo.

kernel.elf: LDFLAGS += -L"/datos/robotica/gcc-arm-none-eabi-4_7-2012q4/lib/gcc/arm-none-eabi/4.7.3/" -lgcc
kernel.elf: LDFLAGS += -L"/datos/robotica/gcc-arm-none-eabi-4_7-2012q4/arm-none-eabi/lib/" -lc


Unha vez executado o comando make créase no directorio un arquivo chamado kernel.img. Para poder utilizar ese kernel o máis fácil é nunha instalación de calquera distribución para a Raspberry sustituir o kernel orixinal polo kernel do Freertos. Neste documento podedes consultar como arrinca a Rasberry e o proceso de instalación do Freertos https://abacus.abo.fi/ro.nsf/141b8735bd22ff31c225700600473a01/6bb4b57f4db82685c2257aec0052581e/$FILE/ex5_2013.pdf

Unha vez feito isto, poderedes desfrutar do marabilloso chiscar do led verde  da Raspberry pi.

viernes, 26 de abril de 2013

Xustifiquemonos primeiro

Por que Barbies, e por que furancheiras.

O das Barbies non é por que me gusten, a min paréceme una loira, anoréxica, nórdica. Tampouco e que sexa un depravado sexual e me faga gracia xogar con elas, aínda que me divertín moito facendo a foto da portada do caderno de bitácora.

A verdade e que me parecen unha aberración, sendo un canon de beleza que evito como referente das miñas nenas (que por certo son as donas das amigas da portada). Por moito que intentes non telas, mercando outro tipo de bonecas (non hai moitas alternativas), sempre hai alguén que ten o detalle de agasallarlle algunha.

Sendo xustos é certo que Barbies hai moitas, pero aquí so se vende case só dun modelo ou tipo, delgada e loira. As alternativas son para outros mercados é como mostra deixo este enlace onde unha amiga mostra parte da súa colección de bonecas negras, algunhas realmente impresionantes.

Os furanchos si me gustan. Non é que o seu viño sexa algo como para despertar o máis profundo dos sentidos, nalgúns casos o resultado e meritorio, en moitos un perfora estomagos. O que me gusta deles é a hostalería amateur, o camareiro aficionado, a cociña caseira (de verdade), o aire vintage e o agradable trato dos seus donos. 

Tamén me parece importante a aportación que teñen o coidado da paixaxe e a cultura do viño tradicional, a de toda a vida. E non me refiro a moderna visión do viño e dos colleiteiros, narcos, deseñadores de moda, directores de cine, etc senon persoas que como o meu pai, meu avó fixeron o seu viño toda a vida. A cultura do viño de taza frente a do viño de copa.

Cal é o nexo de unión entre Barbies e furanchos. Un dia en casa estaban as miñas nenas xogando coas bonecas. Case sempre é un complexo e intenso xogo, onde cada boneca cumpre un papel familiar, hai unha situación prantexada e a fantasía misturase coa realidade máis cércana. E ese dia as Barbies, esas chicas da modernidade, sempre incribles, con profesións de exito, mozos perfectos, ían de furancho,  viño ácido, hule sobre a mesa, panos de papel e chan de cemento.

Pareceume unha metáfora perfecta do que tempo que me tocou vivir. No mundo das novas tecnoloxías, economias de mercado, da eterna xuventude frente o mundo de onde veñen as miñas referencias culturais a dependencia da terra, a cultura agricola o mundo rural.

Por iso o título do caderno de bitácora.