CloudFlash est un adaptateur de carte micro SD avec un LAN sans fil intégré. C'est une carte SD avec la partie stockage d'Eye-Fi et FlashAir vendue séparément. Puisque Linux fonctionne à l'intérieur, vous pouvez jouer diverses choses.
Soudain, je voulais exécuter un script Python sur CloudFlash et télécharger automatiquement l'image capturée sur Flickr, etc., alors j'ai décidé de faire une compilation croisée de Python en premier.
Ceci est le mémorandum.
sorcery codebench ou launchpad Récupérez la chaîne d'outils à partir de -arm-embedded). Ici, j'ai utilisé le dernier Sourcery CodeBench Lite 2014.05-29.
Téléchargez le code source Python et le correctif pour la compilation croisée sur un PC Linux approprié. Le patch est fourni par Paul Gibson, une référence. Merci!
$ wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2
$ wget http://randomsplat.com/wp-content/uploads/2011/10/Python-2.7.2-xcompile.patch
Commencez par créer Python pour l'hôte. Les hostpython et hostpgen générés ici seront nécessaires pour une compilation croisée ultérieure.
$ tar xjf Python-2.7.2.tar.bz2
$ cd Python-2.7.2
$ ./configure
$ make python Parser/pgen
$ mv python hostpython
$ mv Parser/pgen hostpgen
$ make distclean
Appliquez le patch et reconfigurez pour arm926ej-s.
$ patch -p1 < ../Python-2.7.2-xcompile.patch
$ CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib BASECFLAGS=-mcpu=arm926ej-s ./configure --host=arm-none-linux --build=x86_64-linux-gnu --prefix=/python
Faites. Je reçois un avertissement comme type de fonction de format non reconnu [-W format =], mais je m'en fiche.
$ make HOSTPYTHON=./hostpython HOSTPGEN=./hostpgen
Collectez les fichiers à copier dans les rootfs de la cible (CloudFlash) dans _install.
$ make install HOSTPYTHON=./hostpython CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=~/Python-2.7.2/_install
Supprimez les informations inutiles en les supprimant pour les rendre aussi petites que possible.
$ cp -rf _install _install_stripped
$ for SO in _install_stripped/lib/python2.7/lib-dynload/*.so; do arm-none-linux-gnueabi-strip ${SO}; done
$ arm-none-linux-gnueabi-strip _install_stripped/bin/python2.7
$ rm _install_stripped/bin/python
$ ln -s python2.7 _install_stripped/bin/python
cd / mnt / sd / _install_stripped / bin
et. / Python
etc., vous pouvez voir que cela fonctionne bien.
Lorsque je me connecte à CloudFlash avec telnet et que je jette un coup d'œil, le processus de démarrage est le suivant.
/etc/inittab
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquel
null::sysinit:/bin/mount -o remount,rw /
null::sysinit:/bin/mount -t proc proc /proc
null::sysinit:/bin/mount -t sysfs sysfs /sys
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
console::sysinit:/etc/init.d/rcS
# Start an "askfirst" shell on the console (whatever that may be)
#::askfirst:-/bin/ash
#ttyS0::respawn:-/bin/ash #enter shell automatically
ttyS0::askfirst:-/bin/ash #enter shell needs enter
/etc/init.d/rcS(Extrait)
#cp /mtd/dnsd.conf to /etc
cp /mnt/mtd/config/dnsd.conf /etc
#cp /mtd/udhcpd.conf to /etc
cp /mnt/mtd/config/udhcpd.conf /etc
cp /mnt/mtd/config/wsd_backup.conf /etc/wsd_backup.conf
#a2&
# autorun.sh from sd in case need to perform some test mode
if [ -f /mnt/sd/autorun.sh ]
then
echo "run autorun.sh"
sleep 1
chmod 777 /mnt/sd/autorun.sh
/mnt/sd/autorun.sh&
fi
echo "rcS done"
Si vous mettez ʻautorun.sh` à la racine de la carte SD, vous pouvez faire différentes choses.
Recommended Posts