neues Spielzeug .. Intel Galileo (http://arduino.cc/en/ArduinoCertified/IntelGalileo)
Ein im Arduino Formfaktor gebautes kleines Pentium Board. Wie immer schaue ich mir immer die neuesten Boards an und bestell mir 1-2 Stück davon.
Basierend auf einer Intel Quark SOC X1000 ist das Teil ganz nett .. Es ist auf Arduino getrimmt und hat daher keine Features wie HDMI Anschluss ..
Auf dem Board läuft ein Linux system
root@clanton:~# dmesg | more
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.8.7-yocto-standard (clntonsw@irsswdev001) (gcc version 4.7.2 (GCC) ) #1 Tue Oct 1 00:07:32 IST 2013
[ 0.000000] e820: BIOS-provided physical RAM map:
Ein im Arduino Formfaktor gebautes kleines Pentium Board. Wie immer schaue ich mir immer die neuesten Boards an und bestell mir 1-2 Stück davon.
Basierend auf einer Intel Quark SOC X1000 ist das Teil ganz nett .. Es ist auf Arduino getrimmt und hat daher keine Features wie HDMI Anschluss ..
Auf dem Board läuft ein Linux system
root@clanton:~# dmesg | more
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.8.7-yocto-standard (clntonsw@irsswdev001) (gcc version 4.7.2 (GCC) ) #1 Tue Oct 1 00:07:32 IST 2013
[ 0.000000] e820: BIOS-provided physical RAM map:
welches im normalen Betrieb dafür sorgt das Programme welche im Arduino IDE für Galileo geschrieben werden gestartet werden nach dem upload. Das IDE ist die Version 1.5.3 - jedoch speziell mit x86 compiler.
Das look&feel des IDE ist wie bei anderen Ardiuno boards .. Wenn man einen sketch hochlädt wird das binary file übertragen und als process in der linux busybox gestartet.
Binary sketch size: 49,106 bytes (of a 262,144 byte maximum) - 18% used
starting download script
Args to shell: /Applications/Arduino_Galileo.app/Contents/Resources/Java/hardware/tools/x86/bin /var/folders/p4/47rv6dr97fg34fc2m287j4zr0000gn/T/build2889465003300564490.tmp/Blink.cpp.elf /dev/cu.usbmodem2641
Serial Port PORT (note: should be /dev/cu.xxxxxx for OSX)
Using tty Port /dev/cu.usbmodem2641
Sending Command String to move to download if not already in download mode
#!/bin/sh
#
echo "starting download script"
echo "Args to shell:" $*
#
# ARG 1: Path to lsz executable.
# ARG 2: Elf File to download
# ARG 3: TTY port to use.
#
#path may contain \ need to change all to /
path_to_exe=$1
fixed_path=${path_to_exe//\\/\/}
#
tty_port_id=$3
echo "Serial Port PORT" $com_port_id "(note: should be /dev/cu.xxxxxx for OSX)"
echo "Using tty Port" $tty_port_id
#
echo "Sending Command String to move to download if not already in download mode"
echo "~sketch download" > $tty_port_id
#Give the host time to stop the process and wait for download
sleep 1
#
Deleting existing sketch on target
#Move the existing sketch on target.
echo "Deleting existing sketch on target"
$fixed_path/lsz --escape -c "mv -f /sketch/sketch.elf /sketch/sketch.elf.old" < $tty_port_id > $tty_port_id
Transfer incomplete
#$fixed_path/lsz.exe --escape -c "mv -f /sketch/sketch.elf /sketch/sketch.elf.old" < $tty_port_id > $tty_port 1>&0
#
# Execute the target download command
#
#Download the file.
host_file_name=$2
$fixed_path/lsz --escape --binary --overwrite $host_file_name < $tty_port_id > $tty_port_id
Sending: Blink.cpp.elf
Bytes Sent: 1024/ 49184 BPS:308524 ETA 00:00
Bytes Sent: 9216/ 49184 BPS:2353980 ETA 00:00
Bytes Sent: 10240/ 49184 BPS:2543959 ETA 00:00
Bytes Sent: 11264/ 49184 BPS:2735172 ETA 00:00
Bytes Sent: 12288/ 49184 BPS:2938906 ETA 00:00
Bytes Sent: 13312/ 49184 BPS:3129916 ETA 00:00
Bytes Sent: 14336/ 49184 BPS:3340158 ETA 00:00
Bytes Sent: 15360/ 49184 BPS:3530110 ETA 00:00
Bytes Sent: 16384/ 49184 BPS:3731104 ETA 00:00
Bytes Sent: 17408/ 49184 BPS:3919817 ETA 00:00
Bytes Sent: 18432/ 49184 BPS:4099555 ETA 00:00
Bytes Sent: 19456/ 49184 BPS:4229521 ETA 00:00
Bytes Sent: 20480/ 49184 BPS:4331569 ETA 00:00
Bytes Sent: 21504/ 49184 BPS:4488395 ETA 00:00
Bytes Sent: 22528/ 49184 BPS:4290092 ETA 00:00
Bytes Sent: 23552/ 49184 BPS:4411980 ETA 00:00
Bytes Sent: 24576/ 49184 BPS:4550155 ETA 00:00
Bytes Sent: 25600/ 49184 BPS:4678205 ETA 00:00
Bytes Sent: 26624/ 49184 BPS:4811666 ETA 00:00
Bytes Sent: 27648/ 49184 BPS:4941371 ETA 00:00
Bytes Sent: 28672/ 49184 BPS:5074651 ETA 00:00
Bytes Sent: 29696/ 49184 BPS:5104883 ETA 00:00
Bytes Sent: 30720/ 49184 BPS:5208546 ETA 00:00
Bytes Sent: 31744/ 49184 BPS:5312796 ETA 00:00
Bytes Sent: 32768/ 49184 BPS:5402686 ETA 00:00
Bytes Sent: 33792/ 49184 BPS:5418791 ETA 00:00
Bytes Sent: 34816/ 49184 BPS:5125978 ETA 00:00
Bytes Sent: 35840/ 49184 BPS:5160448 ETA 00:00
Bytes Sent: 36864/ 49184 BPS:5250392 ETA 00:00
Bytes Sent: 37888/ 49184 BPS:5315375 ETA 00:00
Bytes Sent: 38912/ 49184 BPS:5400686 ETA 00:00
Bytes Sent: 39936/ 49184 BPS:5481860 ETA 00:00
Bytes Sent: 40960/ 49184 BPS:5558389 ETA 00:00
Bytes Sent: 41984/ 49184 BPS:5654357 ETA 00:00
Bytes Sent: 43008/ 49184 BPS:5740473 ETA 00:00
Bytes Sent: 44032/ 49184 BPS:4322308 ETA 00:00
Bytes Sent: 45056/ 49184 BPS:4344834 ETA 00:00
Bytes Sent: 46080/ 49184 BPS:4386001 ETA 00:00
Bytes Sent: 47104/ 49184 BPS:4433663 ETA 00:00
Bytes Sent: 48128/ 49184 BPS:4503769 ETA 00:00
Bytes Sent: 49152/ 49184 BPS:4556088 ETA 00:00
Bytes Sent: 49184 BPS:537517
Transfer complete
#
#mv the downloaded file to /sketch/sketch.elf
target_download_name="${host_file_name##*/}"
Moving downloaded file to /sketch/sketch.elf on target
echo "Moving downloaded file to /sketch/sketch.elf on target"
$fixed_path/lsz --escape -c "mv $target_download_name /sketch/sketch.elf; chmod +x /sketch/sketch.elf" < $tty_port_id > $tty_port_id
Transfer complete
#
#
auf dem Galileo sieht das so aus:
root@clanton:~# [ 64.398872] pch_udc 0000:00:14.2: pch_udc_ep_clear_nak: RxFIFO not Empty
[ 64.398872] pch_udc 0000:00:14.2: pch_udc_ep_clear_nak: RxFIFO not Empty
[ 64.398872] pch_udc 0000:00:14.2: pch_udc_ep_clear_nak: RxFIFO not Empty
[ 64.398872] g_serial gadget: acm response on ttyGS0, err -22
[ 65.423601] g_serial gadget: acm response on ttyGS0, err -22
clloader: remote command execution requested
clloader: mv -f /sketch/sketch.elf /sketch/sketch.elf.old
mv: can't rename '/sketch/sketch.elf': No such file or directory
signal- child ignore signal r[ 65.485374] g_serial gadget: acm response on ttyGS0, err -22
xed
Zmodem wait finished .. restart to look for sketch
/sketch/sketch.elf file does not exist or invalid permissions
Receiving: Blink.cpp.[ 65.509947] ttyGS0: RX not scheduled?
elf
[ 65.524861] ttyGS0: RX not scheduled?
Bytes received: 1024/ 49184 BPS:33032 ETA 00:01 [ 65.536807] ttyGS0: RX not scheduled?
Bytes received: 10240/ 49184 BPS:227555 ET[ 65.546175] ttyGS0: RX not scheduled?
Bytes received: 47104/ 49184 BPS:567517 ETA 00:00
Clloader: fclose: 0x946c060
Bytes received: 49184[ 65.591212] g_serial gadget: acm response on ttyGS0, err -22
/ 49184 BPS:565333
Zmodem wait finished .. restart to look for sketch
/sketch/sketch.elf file does not exist or invalid permissions
clloader waiting to receive.clloader: remote command execution requested
clloader: mv Blink.cpp.elf /sketch/sketch.elf; chmod +x /sketch/sketch.elf
signal- child ignore signal rxe[ 65.645575] g_serial gadget: acm response on ttyGS0, err -22
d
Zmodem wait finished .. restart to look for sketch
Sketch child process started, pid=0956
Starting /sketch/sketch.elf /dev/pts/0 /dev/ttyS0
root@clanton:~#
dann läuft der sketch auf dem Galileo ..
root@clanton:~# ps
PID USER VSZ STAT COMMAND
1 root 796 S init [5]
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
4 root 0 SW [kworker/0:0]
5 root 0 SW< [kworker/0:0H]
6 root 0 SW [kworker/u:0]
7 root 0 SW< [kworker/u:0H]
8 root 0 SW< [cpuset]
9 root 0 SW< [khelper]
10 root 0 SW [kdevtmpfs]
11 root 0 SW< [netns]
12 root 0 SW [kworker/u:1]
119 root 0 SW [bdi-default]
121 root 0 SW< [kblockd]
201 root 0 SW [kworker/0:1]
330 root 0 SW [kswapd0]
385 root 0 SW [fsnotify_mark]
397 root 0 SW< [crypto]
516 root 0 SW [kworker/u:2]
527 root 0 SW< [deferwq]
585 root 0 SW [khubd]
641 root 0 SW [irq/61-0-0020]
683 root 0 SW [spi0]
686 root 0 SW [spi1]
715 root 0 SW< [cfg80211]
931 root 1264 S /sbin/syslogd -n -O /var/log/messages
934 root 1260 S /sbin/klogd -n
937 root 1272 S -sh
938 root 1264 S /sbin/getty 38400 tty1
939 root 768 S /opt/cln/galileo/galileo_sketch_reset -v
940 root 1272 S {clloader.sh} /bin/sh /etc/init.d/clloader.sh
942 root 876 S /opt/cln/galileo/clloader --escape --binary --zmodem
1005 root 18292 S /sketch/sketch.elf /dev/pts/0 /dev/ttyS0
1008 root 1264 R ps
root@clanton:~#
zugriff auf die Konsole erfolgt über ein RS232 Schnittstelle welche als 3,5mm Klinkenbuchse ausgeführt ist ..
Wie das Kabel gemacht wird sieht man auf https://communities.intel.com/message/208514#208514
mit 115200 N81 verbinden -> funktioniert ..
Das board hat auch noch eine Mini-PCIe Slot - dafür muss man aber ein volles (kein busybox) linux per SD Karte starten da die Treiber nicht im normalen Kernel drinnen sind.
Ist ein ganz interessantes Board - jedoch scheint es noch etwas buggy zu sein - da mir das teil schon zwei mal mit einer Kernel panic abgerauscht ist ..
auch direkt beim booten ist etwas nicht ganz ok ..
[ 11.582225] microcode: Intel CPU family 0x5 not supported
[ 11.588478] resource map sanity check conflict: 0xfff00000 0x1002fffff 0xff800000 0xffffffff reserved
[ 11.588592] ------------[ cut here ]------------
[ 11.588711] WARNING: at /build/clntonsw/slave_magnum/meta-cln_spi/build/compile/yocto_build/tmp/work/clanton-poky-linux-uclibc/linux-yocto-clanton/3.8-r0/linux/arch/x86/mm/ioremap.c:171 __ioremap_caller+0x27a/0x440()
[ 11.588872] Info: mapping multiple BARs. Your kernel is fine.
[ 11.588935] Modules linked in:
[ 11.589024] Pid: 1, comm: swapper Not tainted 3.8.7-yocto-standard #1
[ 11.589096] Call Trace:
[ 11.589197] [<c102f59f>] warn_slowpath_common+0x5f/0x80
[ 11.589312] [<c1023a7a>] ? __ioremap_caller+0x27a/0x440
[ 11.589422] [<c1023a7a>] ? __ioremap_caller+0x27a/0x440
[ 11.589536] [<c102f63e>] warn_slowpath_fmt+0x2e/0x30
[ 11.589648] [<c1023a7a>] __ioremap_caller+0x27a/0x440
[ 11.589765] [<c149ab13>] ? intel_cln_board_data_init+0x1a/0x19d
[ 11.589875] [<c149aaf9>] ? efi_capsule_update_init+0x8d/0x8d
[ 11.589986] [<c1023caa>] ioremap_nocache+0x1a/0x20
[ 11.590244] [<c149ab13>] ? intel_cln_board_data_init+0x1a/0x19d
[ 11.590361] [<c149ab13>] intel_cln_board_data_init+0x1a/0x19d
[ 11.590461] [<c110e613>] ? sysfs_add_file+0x13/0x20
[ 11.590552] [<c110e6bc>] ? sysfs_create_file+0x1c/0x20
[ 11.590654] [<c149aaf9>] ? efi_capsule_update_init+0x8d/0x8d
[ 11.590754] [<c100121a>] do_one_initcall+0x10a/0x150
[ 11.590850] [<c148aa6b>] kernel_init_freeable+0x106/0x1a0
[ 11.590945] [<c148a457>] ? do_early_param+0x7a/0x7a
[ 11.591053] [<c12fbc1b>] kernel_init+0xb/0xd0
[ 11.591152] [<c13055fb>] ret_from_kernel_thread+0x1b/0x30
[ 11.591259] [<c12fbc10>] ? rest_init+0xb0/0xb0
[ 11.591410] ---[ end trace 3ea8f77789a4e4f7 ]---
[ 11.591507] MFH: mfh @ 0xe1008000: id 0x5f4d4648 ver 0x00000001 entries 0x0000000a
[ 11.593907] MFH: Warning platform data MFH missing - using hardcoded offsets
ein Call Trace ist nicht so schön .. Werde mal etwas weiter schauen auf dem Teil und mal so testen was es her gibt ..