CloudFlash ist ein Micro-SD-Kartenadapter mit integriertem WLAN. Es handelt sich um eine SD-Karte, bei der der Speicherteil von Eye-Fi und FlashAir separat erhältlich ist. Da Linux im Inneren läuft, können Sie verschiedene Dinge spielen.
Plötzlich wollte ich ein Python-Skript auf CloudFlash ausführen und das aufgenommene Bild automatisch auf Flickr usw. hochladen, also entschied ich mich, zuerst eine Cross-Kompilierung von Python durchzuführen.
Dies ist das Memorandum.
Sorcery Codebench oder launchpad Holen Sie sich die Toolchain von -arm-embedded). Hier habe ich den neuesten Sourcery CodeBench Lite 2014.05-29 verwendet.
Laden Sie den Python-Quellcode und den Patch zum Cross-Kompilieren auf einen geeigneten Linux-PC herunter. Der Patch wird von Paul Gibson bereitgestellt, einer Referenz. Vielen Dank!
$ 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
Erstellen Sie zunächst Python für den Host. Das hier generierte Hostpython und Hostpgen wird für eine spätere Kreuzkompilierung benötigt.
$ 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
Wenden Sie den Patch an und konfigurieren Sie ihn für arm926ej-s neu.
$ 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
Machen Sie. Ich erhalte eine Warnung wie nicht erkannter Formatfunktionstyp [-W format =], aber das ist mir egal.
$ make HOSTPYTHON=./hostpython HOSTPGEN=./hostpgen
Sammeln Sie die zu kopierenden Dateien in die Rootfs des Ziels (CloudFlash) in _install.
$ make install HOSTPYTHON=./hostpython CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=~/Python-2.7.2/_install
Löschen Sie unnötige Informationen, indem Sie sie entfernen, um sie so klein wie möglich zu halten.
$ 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
Wenn ich mich mit Telnet bei CloudFlash anmelde und einen Blick darauf werfen möchte, ist der Startvorgang wie folgt.
/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(Auszug)
#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"
Wenn Sie "autorun.sh" in das Stammverzeichnis der SD-Karte einfügen, können Sie verschiedene Aktionen ausführen.
Recommended Posts