6. companies.
10 billion ARM-based chips
ARM’s customers reported that they had shipped more
than 10 billion ARM-based chips into everything from
phones and tablets to smart sensors and servers. This
takes the cumulative total of ARM-based chips shipped
to over 50 billion
400 million ARM-based chips with
MaliTM graphics
ARM’s Mali graphics processor brings games and
user interfaces to life with stunning 3D graphics
1st ARMv8-based chip shipped
The ARMv8-A architecture adds 64-bit computing,
amongst other advances, and is suitable for a wide
range of devices from mobile phones to servers.
10Bn
10Bn
1st
10Bn
121
400M
1st
10Bn
1st
121
1st
64
Bit
400M
121
1st
64
Bit
400M
121
64
Bit
400M
121
64
Bit
20nm
7. ARM’s Mali graphics processor brings games and
user interfaces to life with stunning 3D graphics
1st ARMv8-based chip shipped
The ARMv8-A architecture adds 64-bit computing,
amongst other advances, and is suitable for a wide
range of devices from mobile phones to servers.
1st ARM big.LITTLETM technology-based
chip shipped
big.LITTLE technology further improves performance in
energy-ef cient computing devices, and first shipped in
the Samsung Exynos family of chips
ARM hired net 441 full-time employees in 2013
More than 70% of these new employees joined
our R&D teams
121
121
121
121
1st
1st
Bit
20nm
1st
64
Bit
1st
1st
1st
20nm
441
1st
1st
441
64
Bit
20nm
20nm
20nm
441
64
Bit
441
64
Bit
20nm
8. Manufacturer Freescale
SoC i.MX6
ARM
Family Cortex-A
ARM
Core A9
ARM
https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
Architecture ARMv7
11. Why?
• Cost
• Form Factor
• Power
• Access to IO
• Linux
• Familiar tool chain
• Fanless ( quiet )
• Prototyping for custom fab
https://www.kickstarter.com/projects/partyrobotics/bartendro-a-cocktail-dispensing-robot
16. Le poulailler connecté
• Prise de photos infrarouges, détection des oeufs
• Prise de température / luminosité / capteur mouvement / capteurs d'ouverture
• Surveillance de la température, de la tension d'alimentation et du courant consommé
• Alertes via Twitter et SMS (API Free Mobile)
http://www.digitalspirit.org/blog/index.php/post/2014/09/30/Le-poulailler-connect%C3%A9
More Projects: http://hackaday.io/projects/tag/raspberry%20pi/page/8
18. Why Go for ARM SoC?
• Excellent cross compilation tool chain
• Native compilation / No VM
• Diverse and growing libraries usable as-is
• Support for unsigned ints ( uint8 / uint16 ... )
19. ~/armtest $ GOARCH=386 GOOS=linux go build
~/armtest $ file armtest
armtest: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
~/armtest $ GOARCH=amd64 GOOS=darwin go build
~/armtest $ file armtest
armtest: Mach-O 64-bit executable x86_64
brew install go --cross-compile-common or --cross-compile-all
$ hg clone -u release https://code.google.com/p/go
$ cd go/src
$ ./all.bash
Parallellize builds and more:
https://github.com/mitchellh/gox
20. ~/armtest $ GOARCH=amd64 GOOS=windows go build
~/armtest $ file armtest.exe
armtest.exe: PE32+ executable for MS Windows (console) Mono/.Net assembly
~/armtest $ GOARCH=arm GOOS=linux GOARM=7 go build
~/armtest $ file armtest
armtest: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, not stripped
https://golang.org/doc/install/source#environment
24. The most important thing to know about Go's assembler is that it is
not a direct representation of the underlying machine ... the
compiler emits a kind of incompletely defined instruction set, in
binary form, which the linker then completes. ... In general,
machine-specific operations tend to appear as themselves, while
more general concepts like memory move and subroutine call and
return are more abstract. The details vary with architecture, and we
apologize for the imprecision; the situation is not well-defined.
https://golang.org/doc/asm
http://plan9.bell-labs.com/sys/doc/asm.html
http://www.doxsey.net/blog/go-and-assembly/
26. Buildflags
Use to specify
• integration / unit tests
• architecture / OS
• platform ( BBB, Rpi,. .. )
// +build bbb
$ go build -tag bbb
// +build linux darwin
// +build 386
(linux OR darwin) AND 386
http://golang.org/pkg/go/build/
32. The original spec allowed for only 100kHz communications,
and provided only for 7-bit addresses, limiting the number of
devices on the bus to 112 (there are several reserved
addresses, which will never be used for valid I2C addresses).
In 1992, the first public specification was published, adding a
400kHz fast-mode as well as an expanded 10-bit address
space.
Sending 10101010 plus ack 0
http://support.saleae.com/hc/en-us/articles/200730905-Learn-I2C-Inter-Integrated-Circuit
33.
34. i2c Driver Creation
• Get a breakout board
• Find datasheet
• Inspect drivers for other platforms ( warning:
licenses )
• Determine subset of features to implement
• Setup Breadboard
• Verify functionality via i2cdetect / i2cget / i2cset
• Code up in Go
35. architecture
AApppplliiccaattiioonn
IInntteerrffaaccee
Thrift OOSS // KKeerrnneell
HHaarrddwwaarree
No syscalls
No IOCTLs
No cgo
embd
gobot
custom
+ kmods
Standard IPC mechanisms
Sockets
GO RPC
ZeroMQ
Protocol Buffers
Custom PCB
COTS
Josh Bleecher - https://www.youtube.com/watch?v=a4BQRUpQoe8