Intel Galileo ...

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:

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 ..