The document provides an overview and introduction to using the Intel Edison board, including what Edison is, how to power it up and boot it, connecting to WiFi using ConnMan, getting started with Yocto to build a custom Linux image, and connecting hardware like GPIO. Key topics covered include using MRAA to control GPIO pins from code, booting processes involving the boot ROM and U-Boot, and recommendations to use the mini breakout board or buy from Fry's for beginners.
3. Overview
● Tiny computer to make IoT/Wearable device
● Dual x86 core SoC (Atom Z34XX + Quark)
● WiFi/BT combo (BCM43340)
– W/ chip antenna
● No graphics at all
– GPU has been disabled
● Linux kernel is available
– Forked from 3.10 yocto kernel
4. What you can do
● Run Linux kernel
– W/ WiFi+BT functions
● Run Arduino sketch (top on Linux)
5. What you cannot do (So far...)
● No BSP other than Linux
● Play with Quark
● Unleash GPU power
● Hardware video enc/dec acceleration
7. Edison Alternatives?
Linux Video/Graphics Low-power Making your own device
(Custom PCB)
Arduino No No Yes Very Easy
(AT Mega)
mbed No No Yes Easy
(Cortex-M devices)
Raspberry Pi Yes Yes No
(C)
Almost Impossible
(BCM2835)
Beagle Bone Yes Yes No Difcult
(AM335x)
Edison Yes No Reasonable Easy
8. Edison is something diferent
● Yes it's x86.
● No Video/Graphics, but full featured Linux.
● Not low-power as uCs, but still reasonable
power consumption.
– Approx. 200mA without connectivity
– You can sleep device easily
● Tiny integrated module, not a “dev board”
9. Current Buying Options
+ + +
For wimps
Decent choice
For rich people
For
true enthusiasts
10. Current Buying Options
SparkFun Amazon Mouser Fry's Sunnyvale
Edison 49.95 49.99 53.40@10 49.99
Edison + Mini
breakout
74.95 67.84 69.00 59.99
Edison +
Arduino board
99.95 N/A 99.00 84.99
Edison +
Sparkfun boards
(Pre-Order)
79.90 – 200 or
more
N/A N/A N/A
GO FRY'S NOW
11. Why you should not buy
“Arduino board”
● You want “Arduino-compatible-pin-header”?
Really?
● Price is expensive
– Too much components to make it “compatible”
with Arduino shields*
● Though Intel recommend beginners to buy this
board, documents are crap.
*Edison logic level is 1.8Vc
14. Booting
******************************
PSH KERNEL VERSION: b0182727
WR: 20104000
******************************
SCU IPC: 0x800000d0 0xfffce92c
PSH miaHOB version: TNG.B0.VVBD.0000000c
microkernel built 23:15:13 Apr 24 2014
******* PSH loader *******
PCM page cache size = 192 KB
Cache Constraint = 0 Pages
Arming IPC driver ..
Adding page store pool ..
PagestoreAddr(IMR Start Address) = 0x04899000
pageStoreSize(IMR Size) = 0x00080000
*** Ready to receive application ***
U-Boot 2014.04 (Nov 01 2014 - 02:50:55)
Watchdog enabled
DRAM: 980.6 MiB
MMC: tangier_sdhci: 0
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
15. Powering up
(Mini Breakout)
USB Micro B
(For Console)
USB Micro AB
(For OTG)
Ext. Power 7-17V
Li-Po
Battery
● 3 Methods
– 5V via OTG
– External DC-in
– Li-Po Battery
● OTG host will only
works with DC-in
● Li-Po will charged at
190mA
– i.e. Connect 190mAh
or higher
Edison
Recommend external DC-In
BE CAREFUL WITH POLARITY
16. Powering up
(Bare Module)
Edison
VSYS
Where VSYS is: 3.15-4.5V i.e. VBAT voltage
Do NOT connect 5V
17. Booting
******************************
PSH KERNEL VERSION: b0182727
WR: 20104000
******************************
SCU IPC: 0x800000d0 0xfffce92c
PSH miaHOB version: TNG.B0.VVBD.0000000c
microkernel built 23:15:13 Apr 24 2014
******* PSH loader *******
PCM page cache size = 192 KB
Cache Constraint = 0 Pages
Arming IPC driver ..
Adding page store pool ..
PagestoreAddr(IMR Start Address) = 0x04899000
pageStoreSize(IMR Size) = 0x00080000
*** Ready to receive application ***
U-Boot 2014.04 (Nov 01 2014 - 02:50:55)
Watchdog enabled
DRAM: 980.6 MiB
MMC: tangier_sdhci: 0
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
19. Working with WiFi
● Intel ofers “quick setup” script called
“confgure_edison”
– Many people use this script.
● Intel also ofers connection manager daemon
called “ConnMan”
– Many people think it is more difficult to handle,
which is not.
– Easy to use, and scalable.
21. Quick Start ConnMan
● Make sure connman and wpa_supplicant is
working
● connmanctl is a tiny CLI to full access
connman API
22. ConnMan Overview
● Connection manager developed by Intel
● It was a part of Moblin/MeeGo project
● Fully modular system
● Lightweight
● Designed to be running on embedded device,
tablet, phone.
23. ConnMan API
● All APIs are D-Bus interface
● Manager API
● Technology API
● Service API
● Session API
● Agent API
● VPN
25. Service API
● Connect
● Disconnect
● Get details
– SSID
– Strength
26. Session API
WiFi
Service
WiFi
Service
LTE
Service
LTE
Service
Ether
Service
Keep one Session while
using many Services
27. Agent API
● API layer for UI
● ConnMan requests
passphrase input via
Agent API
Example:
Requesting a passphrase for WPA2 network
RequestInput("/service1",
{ "Passphrase" : { "Type" : "psk",
"Requirement" : "mandatory"
}
} ==> { "Passphrase" : "secret123" }
28. Quick Start SSH
vi /lib/systemd/system/sshd.socket
[Unit]
Conflicts=sshd.service
[Socket]
ExecStartPre=/bin/mkdir -p /var/run/sshd
ListenStream=22
# restrict access to wired access for security reasons
# comment this line to remove restriction
BindToDevice=usb0 <-- Comment here
Accept=yes
[Install]
WantedBy=sockets.target
29. Yocto 101
It's not an embedded Linux distribution
– it creates a custom one for you
30. Overview
● Build tool to create your own distribution
– Build your Toolchain
– Build your Bootloader/Kernel
– Build your RootFS
● Merged with OpenEmbedded
– OE-Core/Yocto
● Using BitBake
– Embedded-target version of Portage(Gentoo)
36. What is Poky?
● Poky is the “reference distribution” of Yocto
– You may fork poky to create your own
● Basic recipes
– Yocto reference kernel
– OE-Core
– Basic image recipes
● Reference setup
– Determine preferred version for each recipes
– Determine preferred init
● sysvinit
37. Quick Start Yocto - Prerequisite
● Host Linux build machine
– I use Ubuntu 14.04 LTS
– Actually “Intel-flavored-poky” supports other
build machine. (i.e. Windows and Mac) But I
would not recommend.
● “Edison Linux source fles” from ofcial site
● $ sudo apt-get install build-essential git diffstat gawk chrpath
texinfo libtool gcc-multilib
43. Basic Interfaces
● GPIO
– Digital I/O, PWM
● I2C
– Edison has 2 I2C port.
● SPI
● UART
– Edison has 2 UART port, but 1 for debugging
normally.
REMEMBER: Edison logic level is 1.8V!!
44. Additional Interfaces
● I2S
– For ADC/DAC (audio codecs)
● SD
– You need level shifter :(
● USB
REMEMBER: Edison logic level is 1.8V!!
45. How to use them?
● Linux standard methods
– User space
– Kernel module
● MRAA(+UPM) (for basic interfaces)
– A part of Intel iot-devkit project (Galileo)
● Arduino Library (for basic interfaces)
– Need to hack around to use other than Arduino
board.
● Quark bare metal
– Not available so far
46. Using GPIO
● sysfs
– Standard method
– Used by MRAA and Arduino lib
● PCI device
– Fast path to read/write
– Example included in Intel-Arduino source
● Kernel
– True interrupt