Publié le par admin | Laisser un commentaire

Et pourquoi pas gouzi-phone ?

L’académie française aime proposer des traductions d’anglicismes bizarrement alambiqués que personne n’utilise jamais. En informatique ces traductions sont en général particulièrement loufoques. On ne compte plus les articles s’en moquant.

Dans le cas du «smartphone» l’académie française nous a évité la traduction littérale québécoise de «téléphone intelligent» et a préféré le qualificatif d’«ordiphone». En effet, je peux vous garantir qu’un téléphone n’a rien d’intelligent, même s’il y a un ordinateur dedans, cela reste une brique de métal, plastique et silicium qui exécute stupidement ce que les programmeurs lui ont demandé de faire. Au final, qualifier d’ordiphone un téléphone-avec-un-ordinateur-dedans n’est pas si mal, mais on peut certainement faire mieux.

Ayons un regard extérieur sur les gens possédant un ordiphone, que font ils principalement avec ?

Image d'un caresse-phone en train d'être chatouillé
Gouzi gouzi

Ils le caressent bien sûr ! Du coup pourquoi ne pas parler de «téléphone-à-caresser» ou mieux, de «caresse-phone» ?

Mais les experts pointilleux me feront remarquer à raison que ça n’est pas de cette façon que l’on fait des caresses. Là on est plutôt dans la chatouille.

Parfait disons «chatouille-phone» ou plutôt «gouzi-phone» alors. De cette manière on se rapproche plus des réalités de l’usage des «ordiphones» non ?

Ça me fait penser que mon téléphone-machine-à-laver est en train de rendre l’âme, du coup je vais devoir me pencher sur l’achat d’un gouzi-phone moi aussi ;)

Publié dans En bref, humeur, informatique | Laisser un commentaire

Flattez moi !

Flattr est un système de micro-dons en ligne. Il suffit de s’inscrire sur le site de flattr puis d’assigner une somme mensuelle d’argent que vous souhaitez donner.

Au gré de vos pérégrinations sur le web vous pouvez ensuite décider de «flattr» (flatter) un article, une vidéo, une image, … En cliquant sur le bouton flattr identique au bouton se trouvant au bas de cet article.

Chaque fin de mois, le flattr divisera la somme que vous avez assignée par le nombre le flattr que vous avez fait et donnera l’argent correspondant à chacune des personnes flattées.

De cette manière il est possible de faire des micro-dons pour financer une cause, une idée ou simplement un site internet qui vous plaît sans qu’il soit parasité par de la publicité (qui est un veritable fléaux) et sans avoir de minimum de don.

Par exemple si vous pensez que les œuvres du domaine public numérisées par la BNF doivent rester accessible à tout les citoyens librement (sachant que la numérisation a été payée par nos impôts tout de même) vous pouvez aller flatter l’article de la quadrature du net qui dénonce l’affaire pour les soutenir :

Non à la privatisation du domaine public par la Bibliothèque nationale de France !

Si un de mes articles vous plaît beaucoup vous pouvez aussi bien sur le flatter, en cliquant sur le bouton vert en bas de l’article. Par contre pas moyen de me taxer si vous voyez des fôtes d’orthographes ;)

Publié dans Non classé, politique | Laisser un commentaire

Genèse d’un pilote Linux (Part3)

Nous voici dans l’écriture proprement dite du driver. Comme expliqué auparavant, nous allons nous inspirer du driver du ds1374. La stratégie consiste à copier/coller le code rtc-ds1374.c puis en modifier le code:

$ cp linux-2.6.38.8/drivers/rtc/rtc-ds1374.c
linux-2.6.38.8/drivers/rtc/rtc-mcp7940x.c 

Puis chercher/remplacer tous les ds1374 par mcp7940x dans le fichier rtc-mcp7940x.c nouvellement créé. Ce qui se fait dans vim par la commande :%s/ds1374/mcp7940x/g

Une fois cela fait on va pouvoir commencer à adapter notre driver. 

Notre chip mcp7940x est un composant qui se connecte sur le bus I²C pour «exporter» une interface d’horloge nommé RTC. Le rôle du driver est donc de faire le liens entre le bus i²c et la RTC. On peut résumer cela visuellement avec l’image suivante

Dessin représentant le driver du mcp79400

On commence toujours la lecture d’un driver par la fin, passons sur le nom de l’auteur et la licence. Et intéressons nous à la connexion au bus.

On charge le driver en le connectant au bus i²c, pour se faire, on utilise la structure i2c_driver que l’on ajoute sur le bus au moment du chargement du driver:


static int __init mcp7940x_init(void)
{
    return i2c_add_driver(&mcp7940x_driver);
}

Structure que l’on supprime au déchargement du driver bien évidemment:


static void __exit mcp7940x_exit(void)
{
    i2c_del_driver(&mcp7940x_driver);
}

Cette structure déclare un certain nombre de fonctions et de structures propres au mcp7940x:


static struct i2c_driver mcp7940x_driver = {
    .driver = {
        .name = "rtc-mcp7940x",
        .owner = THIS_MODULE,
    },
    .probe = mcp7940x_probe,
    .suspend = mcp7940x_suspend,
    .resume = mcp7940x_resume,
    .remove = __devexit_p(mcp7940x_remove),
    .id_table = mcp7940x_id,
};

Ce qui nous intéresse particulièrement pour l’instant c’est le probe et le driver.name. En effet c’est tout simplement le point d’entrée de notre driver. Une fois le driver chargé dans le kernel, Linux observe le bus i²c et guette le nom des périphériques (struct devices) que l’on charge dessus. Dès qu’un périphériques avec le nom « rtc-mcp7940x » se pointe, le kernel appel la fonction de probe mcp7940x_probe.

La structure de description du périphérique présent physiquement sur le bus est quelques chose qui doit être chargé dans le noyau. En règle générale les périphériques du bus i²c ne sont pas plug&play et sont donc présent sur la carte électronique dès le démarrage du kernel.

C’est pour cette raison qu’on a l’habitude de charger les devices dans le fichier dit de «plate-forme». Dans le cas de l’apf51dev, ce fichier de plate-forme se nomme apf51dev-baseboard.c et se trouve dans le répertoire

buildroot/output/build/linux-2.6.38.8/arch/arm/mach-mx5/

Dans ce fichier, le device se déclare simplement avec sont adresse sur le bus, et son nom bien sur:


static struct i2c_board_info apf51dev_i2c2_devices[] __initdata = {
    {
        I2C_BOARD_INFO("mcp79400", 0x6f),
    },
};

Revenons à notre probe

 static int mcp7940x_probe(struct i2c_client *client,
            const struct i2c_device_id *id)
{
    struct mcp7940x *mcp7940x;
    int ret;

    mcp7940x = kzalloc(sizeof(struct mcp7940x), GFP_KERNEL);
    if (!mcp7940x)
        return -ENOMEM;

C’est la fonction d’initialisation de notre driver. C’est dans cette fonction que l’on va démarrer le mcp7940x et allouer la mémoire pour la structure mcp7940x. C’est aussi dans cette fonction que l’on va rattacher notre driver à l’interface RTC.

L’interface Linux pour la RTC est extrêmement simpliste dans notre cas. En effet on cherche juste à lire l’heure et la date dans le composant et à l’écrire (Le mcp7940x à plein d’autre fonctionnalités mais mon besoin n’est que l’heure). Nous n’aurons donc que les fonctions read_time et set_time à écrire dans la structure rtc_class_ops du driver:


static const struct rtc_class_ops mcp7940x_rtc_ops = {
    .read_time = mcp7940x_read_time,
    .set_time = mcp7940x_set_time,
};

Structure que l’on enregistre à la fin de la fonction probe:


    mcp7940x->rtc = rtc_device_register(client->name, &client->dev,
                                      &mcp7940x_rtc_ops, THIS_MODULE);
    if (IS_ERR(mcp7940x->rtc)) {
        ret = PTR_ERR(mcp7940x->rtc);
        dev_err(&client->dev, "unable to register the class device\n");
        goto out_free;
    }

L’écriture de la fonction read_time se résume ensuite à lire les valeurs des registres du composant au moyen de la fonction i2c_smbus_read_byte_data() et de renseigner la structure rtc_time passée en paramètre.

Et pour la fonction set_time on fait l’inverse. On récupère les valeurs se trouvant dans la structure rtc_time passée en paramètre et on écrit les valeurs dans le composant au moyen de la fonction i2c_smbus_write_byte_data().

Et voila !

En réalité le driver n’est que partiellement écrit vu que le composant dispose de bien plus de fonctionnalités que simplement lire/écrire l’heure. Le driver pourrait notament être étendu pour gérer les deux alarmes, la gestion du signal de clock de sortie et surtout la SRAM, qui permet de stocker des variables quand l’appareil est éteint.

Et non ça n’est pas terminé ! Il reste encore à publier ce driver pour armadeus, et plus (mainline kernel) si affinité !

Maintenant publions le tout

Maintenant que nous avons écrit notre driver, l’objectif va être de le publier sur le git Armadeus. Pour cela il faut que nous finalisions le patch que nous avions commencé dans la partie 2 de cet article. Si tout a bien été fait dans la partie 2 il n’y a plus qu’à rafraichir le patch quilt:

$ cd buildroot/output/build/linux-2.6.38.8/
$ quilt refresh
Refreshed patch 450-armadeus-add_mcp7940x_rtc_driver.patch

Puis modifier l'entête du patch pour y mettre son nom (pour qu'on connaisse le coupable ;) :


$ vim patches/450-armadeus-add_mcp7940x_rtc_driver.patch

et


Add mcp79400 Linux driver

Signed-off-by: Fabien Marteau fabien.marteau@armadeus.com


Index: linux-2.6.38.8/drivers/rtc/Kconfig ...

Notre patch est prêt, on peut maintenant le proposer à la communauté Armadeus en le postant sur la liste de diffusion armadeus-forum@lists.sourceforge.net.

Bon j'avoue, vu que j'ai les droits sur le git je l'ai commité directement ;) Mais, pour ceux qui n'ont pas les droits, c'est la procédure qu'il faudrait respecter. Du coup pour voir le code complet du driver c'est par

Publié dans Non classé | 2 commentaires

Genèse d’un pilote Linux (Part2)

Dans l’épisode précédent nous avons pu démontrer fonctionnement du MCP79400 sur une AFP51, nous allons maintenant pouvoir l’intégrer au kernel Linux avec un driver adequate.

Plongée dans l’univers du kernel: fouinons !

L’idée consiste à écrire le moins possible de code et à copier au maximum ce qui existe déjà dans le kernel. Pour cela un petit tour dans le code de Linux s’impose. Dans le cas d’Armadeus le code du kernel (patché pour le projet se trouve dans le répertoire buildroot/output/build/linux-2.6.38.8 on peut aussi browser le net à la recherche de driver similaire, mais il est important d’essayer de coller au kernel utilisé.

Le MCP79400 est une RTC, et nous avons de la chance l’api RTC est déjà supporté depuis longtemps dans Linux, donc nous avons une bonne documentation dans le code : Documentation/rtc.txt

Mais comme on ne veut surtout pas se fouler, l’objectif est de trouver un composant très proche du notre et de le recopier à coup de cherher/remplacer.

Résumons:

  • Notre composant est une rtc: allons voir dans le répertoire Drivers/rtc/ si nous n’y trouverions pas notre bonheurs.
  • $ ls linux-2.6.38.8/drivers/rtc
    class.c           rtc-ds1511.c    rtc-max8998.c       rtc-rs5c313.c
    hctosys.c         rtc-ds1553.c    rtc-mc13xxx.c       rtc-rs5c348.c
    rtc-ab8500.c      rtc-ds3232.c    rtc-mpc5121.c       rtc-rx8581.c
    rtc-at32ap700x.c  rtc-ds3234.c    rtc-mrst.c          rtc-s35390a.c
    rtc-at91rm9200.c  rtc-efi.c       rtc-msm6242.c       rtc-s3c.c
    rtc-at91sam9.c    rtc-ep93xx.c    rtc-mv.c            rtc-sa1100.c
    rtc-au1xxx.c      rtc-fm3130.c    rtc-mxc.c           rtc-sh.c
    rtc-bfin.c        rtc-generic.c   rtc-mxc_v2.c        rtc-starfire.c
    rtc-bq32k.c       rtc-imxdi.c     rtc-nuc900.c        rtc-stk17ta8.c
    rtc-bq4802.c      rtc-isl12022.c  rtc-omap.c          rtc-stmp3xxx.c
    rtc-cmos.c        rtc-isl1208.c   rtc-pcap.c          rtc-sun4v.c
    rtc-coh901331.c   rtc-jz4740.c    rtc-pcf2123.c       rtc-sysfs.c
    rtc-davinci.c     rtc-lib.c       rtc-pcf50633.c      rtc-test.c
    rtc-dev.c         rtc-lpc32xx.c   rtc-pcf8563.c       rtc-twl.c
    rtc-dm355evm.c    rtc-m41t80.c    rtc-pcf8583.c       rtc-tx4939.c
    rtc-ds1216.c      rtc-m41t94.c    rtc-pl030.c         rtc-v3020.c
    rtc-ds1286.c      rtc-m48t35.c    rtc-pl031.c         rtc-vr41xx.c
    rtc-ds1302.c      rtc-m48t59.c    rtc-proc.c          rtc-wm831x.c
    rtc-ds1305.c      rtc-m48t86.c    rtc-ps3.c           rtc-wm8350.c
    rtc-ds1307.c      rtc-max6900.c   rtc-pxa.c           rtc-x1205.c
    rtc-ds1374.c      rtc-max6902.c   rtc-r9701.c
    rtc-ds1390.c      rtc-max8925.c   rtc-rp5c01.c
  • Le nombre de composant supporté est relativement élevé, voyons voir ceux qui sont piloté par bus i²c comme le notre :
  • 
    $ grep -Rn "i2c.h" *
    rtc-bq32k.c:12:#include  <linux/i2c.h>
    rtc-ds1307.c:16:#include <linux/i2c.h>
    rtc-ds1374.c:23:#include <linux/i2c.h>
    rtc-ds1672.c:12:#include <linux/i2c.h>
    rtc-ds3232.c:21:#include <linux/i2c.h>
    rtc-fm3130.c:13:#include <linux/i2c.h>
    rtc-isl12022.c:14:#include <linux/i2c.h>
    rtc-isl1208.c:14:#include <linux/i2c.h>
    rtc-m41t80.c:17:#include <linux/i2c.h>
    rtc-max6900.c:15:#include <linux/i2c.h>
    rtc-max8925.c:13:#include <linux/i2c.h>
    rtc-max8998.c:16:#include <linux/i2c.h>
    rtc-pcf8563.c:17:#include <linux/i2c.h>
    rtc-pcf8583.c:16:#include <linux/i2c.h>
    rtc-rs5c372.c:13:#include <linux/i2c.h>
    rtc-rx8025.c:26:#include <linux/i2c.h>
    rtc-rx8581.c:16:#include <linux/i2c.h>
    rtc-s35390a.c:14:#include <linux/i2c.h>
    rtc-x1205.c:20:#include <linux/i2c.h>
    
  • Cela réduit déjà le nombre cela reste élevé. Le composant de chez Dallas DS1374 semble néanmoins assez intéressant car il est court et surtout il est déjà utilisé dans certain projet Armadeus donc bien connu.

Notre nouveau driver devrait donc pouvoir s’insérer dans ce répertoire sans problème, appelons le rtc-mcp7940x.c histoire de coller aux autres. Pour l’ajouter, trois fichiers doivent-être modifiés:

  • drivers/rtc/KConfig: Pour ajouter le driver dans le menuconfig de linux
  • [...]
          watchdog timer in the ST M41T60 and M41T80 RTC chips series.
    
    config RTC_DRV_MCP7940X
        tristate "Microchip MCP7940X"
        depends on RTC_CLASS &#038;&#038; I2C
        help
          If you say yes here you get support for Microchip
          MCP7940x real-time clock chips.
          The alarm functionality is not supported.
    
          This driver can also be built as a module. If so, the module
          will be called rtc-mcp7940x.
    
    config RTC_DRV_BQ32K
    [...]    
  • drivers/rtc/Makefile:
  • [...]
    obj-$(CONFIG_RTC_DRV_MC13XXX)   += rtc-mc13xxx.o
    obj-$(CONFIG_RTC_DRV_MCP7940X)  += rtc-mcp7940x.o
    obj-$(CONFIG_RTC_DRV_MSM6242)   += rtc-msm6242.o
    [...]
  • drivers/rtc/rtc-mcp7940x.c: le source du driver proprement dit

Un bon développeur kernel porte le quilt chez Armadeus.

On vient juste de voir quels fichiers il était nécessaire de modifier pour ajouter notre driver, néanmoins notre objectif final est quand même de partager ce driver et, dans un premier temps, de le proposer à la communautée d’Armadeus Project. Pour cela nous allons avoir besoin de réaliser un patch.

Le kernel utilisé pour le projet armadeus est déjà noyé de patches, si bien qu’il est difficile de gérer son pauvre petit patches parmis les autres. Il est donc conseillé d’utiliser le programme Quilt pour gérer des piles de patche.

quilt est relativement bien intégré au projet; pour s’en servir il est nécessaire de quiltifier Linux avec la commande suivante à la racine du projet :

$ ./scripts/quiltify
--- What do you want to quiltify today ? ;-) 
1) Linux
2) Buildroot
3) U-Boot
> 1

Le script va empiler tous les patches nécessaire au projet armadeus puis recompiler Linux. Une fois fait nous n’avons plus qu’à nous rendre dans l’arborescence du code:

$ cd buildroot/output/build/linux-2.6.38.8
buildroot/output/build/linux-2.6.38.8$ quilt applied
[...]
442-freescale-0034-ENGR00126692-3-1-add_drivers_mxc_directory.patch
442-freescale-0034-ENGR00126692-3-add_hw-events_and_srtc_drivers.patch
442-freescale-0034-ENGR00126692-3-add_hw-vpu_driver.patch
442-freescale-0034-ENGR00126692-3-add_iim_driver.patch
442-freescale-0034-ENGR00126692-3-add_mx23_mx25_mx28_security_stuff.patch
442-freescale-0197-ENGR00131650-add_scc2_and_sahara_drivers_without_rng.patch
442-freescale-0535-ENGR00136875-1-Add-function-pgprot_writethru.patch
442-freescale-0536-ENGR00136875-2-make-video-buffer-cacheable-to-improv.patch
444-armadeus-sunrpc-silent_annoying_svc_message_when_mounting_NFS_drives.patch
445-armadeus-add_freescale_mxc_dvfs_driver.patch
446-armadeus-add_freescale_ipu3_driver.patch
447-armadeus-add_freescale_ipu_based_framebuffer_driver.patch
448-armadeus-pps51-adding_HX8369_display_driver.patch
449-armadeus-add_pps51_baseboard.patch
[...]

La commande quilt applied affiche tous les patches appliqués au noyau. Pour ajouter notre driver nous allons donc créer un nouveau patche:

$ quilt new 450-armadeus-add_mcp7940x_rtc_driver.patch

Et ajouter les fichiers que nous allons modifier avant de les modifier.


$ quilt add drivers/rtc/Makefile
$ quilt add drivers/rtc/Kconfig
$ quilt add drivers/rtc-mcp7940x.c

Nous sommes maintenant prêt à écrire le code proprement dit, comme nous allons le voir dans le prochain épisode

[À suivre ...]

Publié dans Non classé | 2 commentaires

Genèse d’un pilote Linux (Part1)

  • — Quelle heure il est ?
  • — l’heure d’t'acheter un MCP79400.
  • — Rhaa, mais y a pas le driver pour Linux !
  • — Tu sais ce qui te reste à faire…

Un MCP79400 est une RTC de chez microchip. Une RTC est un composant qui permet de garder l’heure sur un système, même quand celui-ci est éteint (on utilise généralement une pile bouton pour alimenter le chip).

C’est un composant assez classique, qui d’habitude est bien reconnue par Linux. Hélas pour nous il se trouve que ce n’est pas le cas du MCP79400 dont nous avons besoin pour un projet.

Bon c’est pas tellement dramatique, une RTC est un composant relativement simpliste en général. C’est l’occasion de réveiller un peu ce blog et de raconter un peu ma vie palpitante de développeur de pilotes pour Linux ;)

Branchons le composant sur une AFP51Dev

La première étape dans le développement de driver consiste en général à réaliser un petit montage électronique pour essayer de communiquer avec.

Le MCP79400 communique au moyen d’un bus i²c, manque de chance, la carte de développement APF51Dev ne possède pas de connecteurs avec l’i²c. On le trouve par contre sur le connecteur caméra CSI, il faut donc faire un petit montage aérien pour extraire les deux signaux SDA et SCL du CSI et les souder sur un plaque d’essais avec un MCP79400.

photo du branchement du mcp79400 sur une apf51dev

Premier contact avec le chip

Ok nous avons branché le mcp79400, nous allons maintenant essayer de voir comment se comporte la bestiole sur le bus i²c.

Ce qui est bien avec le bus i²c c’est qu’il existe de nombreux outils permettant de l’utiliser en mode utilisateur (userland) hérité du projet lm-sensors.

La carte étant démarrée, nous allons tout d’abord scanner le bus i²c numéro 1 sur lequel se trouve notre composant au moyen de la commande i2cdetect :


Welcome to the Armadeus development environment.
armadeus login: root
# i2cdetect 1
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- UU -- 38 -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 6f 
70: -- -- -- -- -- -- -- --

On voit qu’il y a plusieurs composants sur ce bus, un rapide coup d’œil dans la datasheet de l’apf51dev nous apprend qu’il s’agit de l’interface audio wolfson (WM8960) à l’adresse 0x1a, du DVI à l’adresse 0×38 et du PMIC (wolfson) en 0×36. Les caractères UU signifient que le chip est utilisé par un driver, donc qu’il n’est pas possible d’y toucher avec des outils en userland.

Notre MCP79400 se retrouve bien en 0x6F comme donné dans la datasheet. On va donc pouvoir commencer à essayer de lui parler.

La table des registres de la datasheet indique que le premier registre (0×00) contient les secondes ainsi que la commande st pour débuter le comptage. Lisons d’abord la valeur avec i2cget:


# i2cget -y 1 0x6f 0x02 b
0x00

Maintenant si on écrit une valeur puis qu’on la relit:


# i2cset -y 1 0x6f 0x00 0x02 b
# i2cget 1 0x6f 0x00 b
0x02

Puisque nous arrivons à relire la valeur que nous venons d’écrire nous pouvons confirmer que l’accès i²c est fonctionnel en lecture/écriture, ce qui est déjà pas mal !

Voyons voir maintenant si le composant fonctionne en démarrant le comptage du temps au moyen du bit de start st:


# i2cset -y 1 0x6f 0x00 0x82 b
# i2cget -y 1 0x6f 0x00 b
0x83
# i2cget -y 1 0x6f 0x00 b
0x84
# i2cget -y 1 0x6f 0x00 b
0x84
# i2cget -y 1 0x6f 0x00 b
0x85
# i2cget -y 1 0x6f 0x00 b
0x85
# i2cget -y 1 0x6f 0x00 b
0x85
# i2cget -y 1 0x6f 0x00 b
0x86

Bingo, notre composant semble bien compter les secondes correctement. Nous allons donc pouvoir embrayer sur l’écriture du driver Linux à proprement parler.

[Par ici la suite ...]

Publié dans embarqué, informatique, kernel | Laisser un commentaire

Que peut-on faire pour réduire la peur du terrorisme ?

[Via williamrejault]

Pour réduire la peur du terrorisme éteignons notre télé !

Publié dans En bref | Laisser un commentaire

Un serveur web avec une APF28

Une question simple: Comment puis-je accéder à mon APF simplement avec un navigateur Web (au hasard avec firefox ;) ?

Réponse, tout simplement avec python, c’est déjà inclu dans la distribution armadeus, dans menuconfig:

$ make menuconfig

il suffit de cocher :


Package Selection for the target  --->
  Interpreter languages and scripting  --->
    [*] python
    core python modules  --->
      [*] bzip2 module
      [*] bsddb module
      [*] codecscjk module
      [*] curses module
      [*] pyexpat
      [*] readline
      [*] ssl
      [*] unicodedata module
      [*] sqlite module
      [*] zlib module

De recompiler le tout et de charger les binaires sur la carte. Une fois la carte démarrée sous Linux il suffit de taper la commande suivante :


# python -m SimpleHTTPServer 8888
Serving HTTP on 0.0.0.0 port 8888 ...

Puis d'utiliser son navigateur préféré et de taper l'url correspondant à l'IP de la carte et le port 8888, pour obtenir un serveurs web des fichiers présents dans le répertoire. Et voila ! C'est tout, qui a dit qu'un serveur web embarqué était compliqué ?

Publié dans embarqué, informatique | Marqué avec , , , , , | Laisser un commentaire

Les limites à la croissance (dans un monde fini)

couverture du livre «the limits to growth»

En 1972 est sorti un livre qui fit scandale, «The limits to growth» (les limites à la croissance). Ce rapport écrit par quatre jeunes scientifique du MIT était le résultat de simulations informatiques réalisées sur l’avenir de l’humanité dans un monde fini. La question avait été posé un an plus tôt par le «club de rome» :

«Est-il possible d’avoir une Croissance Éternelle dans un monde aux ressources limitées ?»

La réponse fut clairement non, l’économie s’effondrera si l’on continu cette course aveugle à la Croissance. Ce livre, traduit dans à peu près toutes les langues du monde fût un «best seller» à son époque. Trop occupés à travailler pour accélérer cette croissance effrénée tout en élevant leurs enfants, mes grands-parents n’ont pas lu ce livre. Pas le temps de lire, la télé arrivait dans les foyers. Ils ont peut être lu quelques commentaires stupides de journalistes n’ayant pas lu le livre du genre «dans 30ans y aura plus de pétrole», mais rien pour les faire dévier de l’idéologie de la Croissance Éternelle.

Couverture du livre «beyond the limits»

En 1992, 20 ans plus tard, est paru une version mise à jour de ce livre: «Beyond the limits» (au delà des limites). 20 ans de données économique et écologique étaient venu confirmer le modèle simulé en 1972, dans notre course aveugle à la croissance nous avions dépassé les limites supportables, les stocks étaient sérieusement entamé nous étions en «overshoot». Ce livre ne fit pas scandale, il ne fut pas traduit en français. Trop occupé à travailler pour maintenir une illusion de croissance tout en élevant leurs enfants, mes parents n’ont pas lu ce livre (surtout qu’il était en anglais) préférant regarder la télé.

Couverture du livre «limits to growth»

En 2004, 30 ans plus tard, est sorti une version mise à jour «Limits to growth : The 30-Year Update» (les limites à la croissances : mise à jours de 30 ans) qui ne fait que confirmer et affiner les chiffres donnés dans les deux premier rapports. N’ayant pas d’enfant à m’occuper, et n’étant pas un fervent défenseur de la croissance, j’ai acheté le livre il y a quelques temps et je suis en train de le lire … puisque je n’ai pas la télé j’ai le temps !

Couverture de la version française de «limits to growth: 30-years update»

Le 24 Mai 2012 est sortie une version française de ce dernier rapport, donc ceux qui ne veulent pas lire l’anglais n’ont plus d’excuses, qu’ils jettent leur télé !

Publié dans écologie, liberté | 3 commentaires

Pour les législatives je voterais Pirate !

Quelque chose d’extrêmement grave est en train de ce passer pour la démocratie en France. Et pourtant personne n’en parle !

En effet, depuis le 23 mai un dispositif de «vote» par internet a été mis en place pour les français résidants à l’étranger. Notez bien les ‘«»’, car ce simulacre n’a rien de démocratique, l’outil mis en place ferait rêver n’importe quelles dictature néo-soviétiques.

Les 700 000 français de l’étranger auront donc la possibilité de confier leur vote à une société privée (espagnole) qui se chargera du comptage des voix dans une totale obscurité sans que personne ne puisse vérifier. Même le fonctionnement du système de vote n’a pas pu être analysé au nom du «secret industriel», Staline doit se retourner dans sa tombe. Ne doutons pas que si personnes ne bouge, le système sera étendu au reste de la France.

  • Mais si c’était si grave quelqu’un l’aurait fait remarquer quand même non ?

Bin non, enfin si …

Seuls deux partis ont osé élever la voix contre ce hold-up de la démocratie : Le parti pirate, … et le front de gauche.

Parti Pirate Alsace

  • C’est pas grave 700 000 personnes c’est pas tant que ça ?

Bin non ça ne fait «que» l’équivalent de la population du Haut-Rhin !

  • Tu va voter pour un parti qui n’a pas de programme ?

Alors pour avoir analysé soigneusement le programme des différents partis durant les présidentielles de 2007, je peut garantir que les programmes politique ne sont jamais respectés, ils donnent juste le ton. Et puis, il est parfaitement faux de dire que le parti pirate n’a pas de programme, il en a un.

Publié dans pirate, politique | Laisser un commentaire