Déploiement d’un noyau sur Snowball depuis les sources du noyau Igloo.Deploy Snowball system from Igloo kernel sources with wlan features

Voici un arbre git permettant de déployer un système avec wifi fonctionnel sur la Snowball de Calao Système en utilisant le noyau fournit par la communauté Igloo.

Pour le recupérer :

git clone https://github.com/Evanok/snowball_builder.git.

Vous pouvez aussi télécharger directement la tarball correspondant au dernier commit de l’arbre pour ne pas vous embarrasser de l’arbre git complet :

wget https://github.com/Evanok/snowball_builder/tarball/master -O snowball_builder.tar.gz

Dans l’arborescence du projet, vous trouverez un Makefile. Vous n’avez qu’a faire make pour démarrer la construction du système avec les paramètres par défauts. A savoir un noyau Android 3.3 avec une distribution Debian.

Les deux principaux éléments du projet sont le script builder.sh et le script shell config_creator. Ce sont donc ces deux fichiers que vous devrez modifier pour toute modification de la procédure.

Dans builder.sh, les étapes sont :

  • Récupération des éléments necessaires : source du noyau Igloo, compilateur croisé ARM
  • Génération du uImage à l’aide du configure donné en paramètre
  • Génération des modules noyaux
  • Génération de 3 scripts utilisés par multistrap pour générer le rootfs à l’aide de config_creator
  • Construction du rootfs à l’aide du multistrap

Description des scripts utilisés par multistrap :

snowball_multistrap_configuration 

C’est le principal script utilisé par multistrap, il fera référence aux deux autres. Vous pouvez y ajouter par exemple les paquets installés à la génération du système.

snowball_setup_script.sh

Ce script défini les opérations à effectuer sur le rootfs avant de le compresser sous la forme d’une tarball. On y défini les utilisateurs, récupère les modules du noyau, défini le fichier network/interfaces ou encore procédons à la création de certain bloc de /dev. Si vous souhaitez ajouter des élements au rootfs pendant la génération c’est ici que vous devrez effectuer vos modifications.

snowball_config_script.sh

Ce script permettra de configurer la Snowball lors du premier démarrage. On en profitera aussi pour installer le patch du package debian bluez ainsi que de proceder au test du wlan.

Le système déployée par défaut est un noyau Android et une distribution Debian Squeeze. En effet ici seul nous intéresse la fonctionnalité du WIFI.

Enfin un script permet de déployer de façon automatisée le système produit sur une micro sd. Attention votre carte micro sd devra avoir été formatée correctement auparavant en deux partitions afin d’y recueillir l’image du noyau d’un coté et le rootfs de l’autre.

Ensuite vous n’avez plus qu’a démarrer votre Snowball avec la sd carte. Attention votre Snowball doit être reliée à internet par le port Ethernet au démarrage. Une fois démarrée, vous n’avez plus qu’a lancer le script de configuration /snowball_config_script.sh

Enfin pour déployer le wifi au démarrage après chaque redémarrage de la Snowball :

  • hciattach -a 23 -n -s 115200 /dev/ttyAMA0 cg2900 115200 flow &
  • modprobe cw1200_core
  • modprobe cw1200_wlan
  • ifconfig wlan0 up

Et voila, on va pouvoir commencer à faire mumuse avec notre nouveau jouet.

This is a git tree which allow you to deploy a Snowball system from Igloo kernel sources with wlan features.

Get the git tree :

git clone https://github.com/Evanok/snowball_builder.git.

You can also download directly the tarball which fetch the last commit of the git tree to have lighter Snowball builder :

wget https://github.com/Evanok/snowball_builder/tarball/master -O snowball_builder.tar.gz

In the project tree, you will find a Makefile. You just have to run make to start the building process with default parameters. These defaults parameters are the branch linux-android-3.3 of the igloo kernel and a basic configure. The system will run with Debian Squeeze distribution.

The two most important files of the project tree are the script builder.sh and config_creator.sh. Theses two scripts must be modify if you wan customize your building process.

builder.sh steps :

  • Clone some git trees : Igloo kernel sources, cross arm compiler
  • Building uImage
  • Installing kernel modules
  • Generate scripts ubing by Multistrap
  • Building rootfs with Multistrap

Description of scripts using by Multistrap

snowball_multistrap_configuration 

Main script using by Multistrap, you can find for example debian package installed in the Snowball system

snowball_setup_script.sh

This script define command to run before compress the rootfs. We will define users, copying kernel modules in rootfs, define some configurations files like network/interfaces… If you want add some directory to the rootfs, you must customize this script !

snowball_config_script.sh

This script will allow to configure the Snowball system at the first booting. For example we will mount /proc or installing bluez package patch for hciattach command.

Finaly a script which allow to deploy Snowball system on micro sd card. Be carefull, your sd card must be partionned correctly. You must have two partitions, in one hand, a partition for kernel image and in the other hand a partition for the rootfs.

Ensuite vous n’avez plus qu’a démarrer votre Snowball avec la sd carte. Attention votre Snowball doit être reliée à internet par le port Ethernet au démarrage. Une fois démarrée, vous n’avez plus qu’a lancer le script de configuration /snowball_config_script.sh

Next you just have to boot yoour Snowball with micro sd card. With some Snowball you must use Ethernet cable to connect your Snowball to Internet to boot it correctly. After booting, you just have to run the configuration script : /snowball_config_script.sh which configure the rootfs the first time that you start your system board.

To enable wlan, command are :

  • hciattach -a 23 -n -s 115200 /dev/ttyAMA0 cg2900 115200 flow &
  • modprobe cw1200_core
  • modprobe cw1200_wlan
  • ifconfig wlan0 up

And now we can start to play we our new toy !

Promotion sur la carte Snowball de Calao System sur 500 unités

Attention, chaud devant la promo, en réponse à la concurrence de la pandaboard, Calao System a décidé de vendre ses Snowballs à 144 Euros HT au lieu de 240 Euros. Il s’agit ici de la version SDK bien entendu.

Avec le minimum ( antenne, cable d’alimentation, etc..), cela revient a commencer une snowball pour environ 250 Euros TTC ! Je conseil a ceux qui souhaite acquérir ce joli jouet de ne pas trainer sachant que la promotion ne concerne que 500 unités !

Voici un lien vers le magasin en ligne de Calao :
http://shop.strato.com/epages/61428605.sf/en_GB/?ObjectPath=/Shops/61428605/Products/905-00024-B11

Enfin il faut savoir que même si la Snowball peut sembler cher a coté d’une Pandaboard, elle possède nettement plus de périphériques, capteur GPS, Wifi intégré, Magnétomètre, Capteur de pression, acceleromètre, gyromètre, port HDMI, Ethernet, etc… et 4GO d’emmc présentant l’avantage de se priver de l’usage d’une SD card.

Schéma de la Snowball :

Schéma de la Pandaboard :

Ajout d’un repo pour le projet et avancement

Suite au conseil qu’on m’a donné, j’ai opté pour deux capteurs disposés a l’avant de façon à détecter les objets sur la gauche et sur la droite à 45 degrés de l’avant de ma plateforme. Les résultats sont plutot encourageant. La Snowball sera commandée d’ici quelques jours.

En attendant j’ai mis mon code sous git et ajouter un repo à github pour me faciliter la vie.
Lien du gitweb : https://github.com/Evanok/telesurveillance

De plus en ayant marre de toutes ces windowseries et de java, je développe dorénavant sur ma debian squeeze, surtout que je ne peux travailler sur ma snowball que depuis un linux.

Enfin la encore pour une meilleur lisibilitée, l’IDE Arduino direction la poubelle pour être remplacé par un bon vieux Makefile.

La prochaine étape est la mise en place d’un Bus I2C entre ma carte arduino Romeo et la snowball n’ayant pas de RS232 sous la main. Pour cela je me suis procuré des résistances et une plaque d’essai. Le cablage semble simple, le plus dur étant surment le software surtout coté Snowball ou il n’existe probablement pas de bibliothèque de haut niveau qui gère l’I2C. Au moins ca m’apportera une bonne compréhension du protocole.

Voici une vidéo de la plateforme en action après l’intégration d’un second capteur :

Il commence à bien gérer les obstacles mais il est beaucoup plus lent.

Pour finir, vous trouverez un lien vers le repo dans le menu sur la droite grace à une magnifique extension WordPress nommée Github WordPress Widget.