-->
  • Accueil
  • Mes projets
  • Mon CV
  • A propos
  • Contact

Archive pour le mot-clef ‘uClibc’

uClibc et Timezone Info (TZ)
Jeudi 5 mai 2011

S’il y a bien des intérêts à utiliser la uClibC, il y a tout de même pas mal d’inconvénients. Dans le lot, il y a la gestion des timezones.

Alors que la glibc utilise la zoneinfo database, /etc/timezone et /etc/localtime pour manipuler les timezones, la uClibC, quant à elle utilise la variable TZ. C’est une des différences qui existe entre ces deux libc. Donc pour définir une timezone, il faut définir la variable d’environnement TZ ou bien la décrire dans le fichier /etc/TZ. Une modification de TZ et la fonction date prend en compte le changement.

Sauf que la valeur à renseigner, bien que standardisée n’est listée nullepart sur le net sauf ici (mais hélas elle n’est pas exhaustive). J’ai pourtant bien cherché… Bref pas super pratique pour gérer l’international quand on nous dit quel format utiliser sans pour autant donner de liste. Théoriquement, la liste peut se refaire à la main, en se basant sur les spécifications. Mais avec 405 timezones dans le monde, je ne suis pas super fan. Si quelqu’un a une autre source, je suis vraiment preneur…

Un collègue m’a finalement bien sorti de la galère. La solution, se baser sur la zoneinfo database d’un système sous glibc pour générer le format TZ avec un petit script bash. Et ça s’avère bien pratique, donc je partage !

?View Code BASH
#!/bin/bash
for i in `tail -n+28 /usr/share/zoneinfo/zone.tab | cut -f3`; do
    echo -e "$i;$(cat /usr/share/zoneinfo/$i | tail -n1)"
done

Pour une raison encore inconnue, ce premier script retourne 10 timezones sans valeur de TZ. Le script suivant permet de les échapper.

?View Code BASH
#!/bin/bash
for i in `tail -n+28 /usr/share/zoneinfo/zone.tab | cut -f3`; do
    TZ=$(cat /usr/share/zoneinfo/$i | tail -n1)
    [ $(echo $TZ | wc -c) -gt 1 ] && echo -e "$i;$TZ"
done

Ce qui nous donne une jolie liste exploitable en C :]

Europe/Andorra;CET-1CEST,M3.5.0,M10.5.0/3
Asia/Dubai;GST-4
Asia/Kabul;AFT-4:30
America/Antigua;AST4
America/Anguilla;AST4
Europe/Tirane;CET-1CEST,M3.5.0,M10.5.0/3
Asia/Yerevan;AMT-4AMST,M3.5.0,M10.5.0/3
America/Curacao;AST4
Africa/Luanda;WAT-1
Antarctica/McMurdo;NZST-12NZDT,M9.5.0,M4.1.0/3
Antarctica/South_Pole;NZST-12NZDT,M9.5.0,M4.1.0/3
Antarctica/Rothera;ROTT3
Antarctica/Palmer;
Antarctica/Mawson;MAWT-5
Antarctica/Davis;DAVT-7
Antarctica/Casey;WST-8
Antarctica/Vostok;VOST-6
Antarctica/DumontDUrville;DDUT-10
Antarctica/Syowa;SYOT-3
Antarctica/Macquarie;MIST-11
America/Argentina/Buenos_Aires;ART3
America/Argentina/Cordoba;ART3
America/Argentina/Salta;ART3
...
Share

Mots-clefs : database, glibc, linux, timezone, TZ, uClibc, zoneinfo
Publié dans linux, Systèmes Embarqués | Aucun commentaire »

Cross compiler V8 sur ARM 9 avec uClibc et Buildroot
Lundi 6 septembre 2010

Parce que j’ai mis un moment à trouver les bonnes options pour cross-compiler V8 (le moteur Javascript de Google) sur ARM9 (armv4), voici les étapes que j’ai suivies.

Tout d’abord, V8 utilise execinfo. Et comme uClibC ne l’intègre pas (contrairement à glibc) il faut légèrement feinter. N’ayant pas besoin de backtrace dans mon cas, il suffit de créer un fichier execinfo.h redéfinissant les fonctions de backtraces.

?View Code C
#ifndef _EXECINFO_H_
#define _EXECINFO_H_ 1
 
#include 
 
__BEGIN_DECLS
 
int backtrace(void**,int){ return 0; }
char** backtrace_symbols(void* const*,int){return NULL; }
void backtrace_symbols_fd(void* const*,int,int){}
 
__END_DECLS
 
#endif /* !_EXECINFO_H_ */

Ce n’est pas super propre, mais ça fonctionne. Donc en se basant sur le trunk de V8, il suffit d’utiliser les commandes suivantes. Partir du trunk est important car il contient un patch récent pour ARM nécessaire pour la compilation.

En plaçant en gros bourrin le execinfo.h à la racine de V8 et en laçant le script suivant, V8 compile. (Nécessite de définir BUILDROOT_PATH tout de même)

?View Code SHELL
#!/bin/bash
export GCC_VERSION=44
 
export CC="$BUILDROOT_PATH/output/staging/usr/bin/arm-linux-gcc"
export CXX="$BUILDROOT_PATH/output/staging/usr/bin/arm-linux-g++"
 
export CXXFLAGS="-I. -mcpu=arm920t"
export CFLAGS="-I. -mcpu=arm920t"
 
scons mode=release arch=arm library=shared prof=off os=linux profilingsupport=off snapshot=off

Il n’y a plus qu’à stripper le .so « Et voilà ! »

Par contre si quelqu’un a une solution plus propre pour execinfo je suis preneur.

Share

Mots-clefs : ARM, backtrace, Buildroot, cross-compilation, execinfo, Google, uClibc, V8
Publié dans linux, Systèmes Embarqués | 1 commentaire »

Projet Armadeus – Sortie de la version 3.3
Samedi 4 septembre 2010

Je profite de la sortie de la version 3.3 du projet Armadeus il y a un peu plus d’un mois pour parler d’une association mulhousienne originale.

Le Projet Armadeus est une association française, mais ouverte à l’international, dont le but est de faciliter le développement de systèmes embarqués à base de logiciels Libres.

Il permet aux membres d’acquérir, à tarif préférentiel, des cartes  ARM distribuées par la société Armadeus Systems. Basé sur les outils U-Boot, Linux et Buildroot/Busybox/uClibc (ce qui fait la force du projet) le système permet de prototyper, bidouiller et se lancer dans des applications concrètes très intéressantes, et cela très rapidement. En tant que grand adepte de Buildroot, je ne peux que saluer l’idée du projet initié en 2006. Armadeus apporte une composante matérielle et communautaire qui peut favoriser l’émergence de projets innovants !

Cela fait un moment que je suis leurs activités, et je me demande si je ne vais pas finir par adhérer à l’association :)

Share

Mots-clefs : ARM, Armadeus, Armadeus Project, association, Buildroot, Busybox, carte, linux, U-Boot, uClibc
Publié dans linux, Systèmes Embarqués | Aucun commentaire »



Un peu de moi autrepart :

  • rss Twitter
  • rss LinkedIn
  • rss Viadeo
  • rss Developpez.com
  • rss Github
  • rss Youtube
  • rss Flickr
  • rss Mon CV (pdf, odt) - ENGLISH
  • rss Flux RSS

  • Articles récents

    • Raspberry Pi – Premières images de la version alpha
    • Au revoir Mindscape
    • Concours de création de système Linux embarqué sur carte Mini2440
    • Juillet 2011 – Quelques news en vrac sur l’actualité de l’embarqué
    • Mass Storage USB sur tous les OS grâce au File-backed Storage Gadget (g_file_storage)
  • Commentaires récents

    • TRYSS dans DSO nano – L’oscilloscope numérique de poche
    • Yoann Sculo dans Raspberry Pi – Premières images de la version alpha
    • R@OUL dans Raspberry Pi – Premières images de la version alpha
    • sache dans Vicacopter, un hélicoptère autonome open source fort sympathique
    • Yoann Sculo dans Au revoir Mindscape
  • Catégories

    • Applications
    • Emploi
    • Général
    • linux
    • Non classé
    • Robotique
    • Systèmes Embarqués
    • Traitement d'image
  • Mots-clefs

    Android Arduino ARM association caliban Buildroot C caliban camera caprica 2010 carte fox CELF conférence ELCE 2010 embarqué Embedded Linux Conference Emploi foxboard Free Electrons G20 Genesis Karotz lapin Libre Linaro linux linux embarqué Linux Magazine magazine MeeGo Mindscape nabaztag Nokia open source planète robots Robert robot Robotique robotique amateur Simerion système embarqué Systèmes Embarqués UTT video violet électronique


Yoann Sculo est fièrement propulsé par WordPress
Articles (RSS) et Commentaires (RSS).