SlideShare a Scribd company logo
1 of 101
Download to read offline
How to control
physical devices
with mruby
RubyConf 2013
Team Yamanekko
Yurie Yamane / Masayoshi Takahashi
Demo
Blinking 4 LEDs
on STM32F4 Discovery
(using Timer)
DEMO (STM32F4 Discovery)
●

blinking LED
Green on -> Orange on -> Red on -> Blue on ->
Green off -> Orange off -> Red off -> Blue off -> ...
Contents
●

Demo (STM32F4 Discovery)

●

Introduction

●

What's mruby

●

7 steps to use mruby

●

Demo (Raspberry Pi)

●

Another Demo (STM32F4 Discovery)
Who are we?
●

やまね ゆりえ

●

高橋征義

(Yurie Yamane)

(Masayoshi Takahashi)
Who are we?

Team Yamanekko
Independent E-Book Publisher

Tatsu-zine Publishing Inc.
http:/
/tatsu-zine.com/
This session is supported by

http:/
/ruby-no-kai.org/
members of asakusa.rb
Who are we?
●

Not professional Embedded
programmers
–

it's our hobby project
●

not made e-book reader yet
Our goals

“embedded programming
for everyone without hassle”
Our talks

RubyConf2012
Our talks

RubyConf.tw 2012
Our talks

OSDC.tw 2013
Our talks

http://www.flickr.com/photos/igaiga/8564676738/

Ôedo RubyKaigi 03
Embedded is hard??
●

small memory

●

RTOS or no OS

●

no STDIO

●

cross compile C/C++/Asm

●

cross debugger with ICE
Embedded is hard??
●

small memory

●

RTOS or no OS

●

no STDIO

●

cross compile C/C++/Asm

●

cross debugger with ICE
http://mrb.h2so5.net/
What's mruby?
●

“yet another implementation
of Ruby”
–

not a new language nor
variant
CRuby vs mruby
●

mruby is not “an application”

●

mruby is “a part”
–

embedded into other application
●

–

webserver, editor, game, ...

embedded into other systems
●

robot, router, vending machine, ...
mruby's feature
(1)

embeddable

(2)

configurable

(3)

pluggable
(1) embeddable
CRuby app

mruby app

*.rb

*.rb
(bytecode)
libmruby.a

/usr/bin/ruby

C/C++ app
CRuby
*.rb (your code)
*.rb (stdlib)

Gems

/usr/bin/ruby
Bytecode
(C String)
Bytecode
(C String)

mruby
*.rb (your code)
*.rb (stdlib) mrbgems

libmruby.a

mruby core

C/C++
(2) configurable
●

mruby has many #define macros to configure
–
–

using NaN boxing or not

–
●

float or double as Float object
default size of heap, pool, khash, ...

You can change them at compile time
#define in mrbconf.h
●

MRB_USE_FLOAT

●

MRB_IREP_ARRAY_INIT_SIZE

●

MRB_INT64

●

KHASH_DEFAULT_SIZE

●

MRB_NAN_BOXING

●

POOL_ALIGNMENT

●

MRB_ENDIAN_BIG

●

POOL_PAGE_SIZE

●

MRB_FUNCALL_ARGC_MAX

●

MRB_STR_BUF_MIN_SIZE

●

MRB_HEAP_PAGE_SIZE

●

MRB_PARSER_BUF_SIZE

●

MRB_USE_IV_SEGLIST

●

ENABLE_DEBUG

●

MRB_IVHASH_INIT_SIZE
(3) pluggable
●

mruby has mrbgems like RubyGems

●

mrbgems in C are linked statically

●

some functions in CRuby are
provided as gem
–

you can choose which is added /
removed
standard mrbgems
●

●

●

●

●

●

●

●

●

●

mrbgems/mruby-array-ext
mrbgems/mruby-enum-ext
mrbgems/mruby-eval
mrbgems/mruby-exit
mrbgems/mruby-fiber
mrbgems/mruby-hash-ext
mrbgems/mruby-math
mrbgems/mruby-numeric-ext
mrbgems/mruby-object-ext
mrbgems/mruby-objectspace

●

●

●

●

●

●

●

●

●

●

mrbgems/mruby-print
mrbgems/mruby-proc-ext
mrbgems/mruby-random
mrbgems/mruby-range-ext
mrbgems/mruby-sprintf
mrbgems/mruby-string-ext
mrbgems/mruby-struct
mrbgems/mruby-symbol-ext
mrbgems/mruby-time
mrbgems/mruby-toplevel-ext

you can remove them all
7 steps to use mruby
●

choose your target board

●

setup development environments

●

write application

●

cross build

●

transfer binary to the board

●

cross debugging

●

it works!
7 steps to use mruby
●

choose your target board

●

setup development environments

●

write application

●

cross build

●

transfer binary to the board

●

cross debugging

●

it works!
Our targets crieteria
●

easy to buy around the world
–

●

don't use apps depending on OSs or environments
–

●

some are hard outside Japan :(
FLOSS tools are better

a bit large memory that mruby can run on
–

> 64KB is MUST, > 1MB is BETTER
(1) STM32F4 Discovery
●

ARM (Cortex M4)

●

1MB Flash, 192KB RAM

●

●

8LEDs, 2Buttons, MEMS
Accelerometer etc.
on board STLINK

http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419
(2) Raspberry Pi
●

ARM (arm1176jzf-s)

●

256/512MB RAM

●

SD card

●

700mA (3.5W)

●

JTAG
ARM11 & Cortex-M4

Raspberry Pi

STM32F4
http://www.emcu.it/CortexFamily/CortexFamily.html
**NOTICE**
●

We do not use OS on Raspberry Pi
–

no raspbian nor other Linux/Unix
Why no OS (bare metal)?
●

same as STM32F4 Discovery
–

●

We want to use Raspberry Pi like MCU, not PC
–
–

●

STM32F4 Discovery is used without OS
just as MCU with HUGE memory
If using Linux, even CRuby can work on
Raspberry Pi :-/

Bare metal programming is fun :-)
bare metal RasPi Programming
●

dwelch67's github repos is incredibly useful
–
–

https:/
/github.com/dwelch67/raspberrypi
everything we need is here
apps

STM32F4d architecture
main
(c)

Ruby code (*.rb → bytecode)
mruby core (in c)
mrbgems for STM32F4 Discovery

libmruby.a

CMSIS

Core Peripheral
Device Peripheral
Functions
Functions
Peripheral Register & Interrupt Vector Definitions

MCU

libc (newlib), syscalls

Cortex
MCU

Systick
timer

NVIC
interrupt controller

other
peripherals
Raspberry Pi architecture
Ruby code (*.rb → bytecode)

apps

mruby core
mrbgems for Raspberry Pi

libmruby.a

libc (newlib), syscalls

SoC

vectors.s
ARM11
MCU

Timer

Other BCM2385
peripherals
7 steps to use mruby
●

choose your target board

●

setup development environments

●

write application

●

cross build

●

transfer binary to the board

●

cross debugging

●

it works!
Our Development Environment
●

Cross Compiler: GNU tool chain

●

IDE: Eclipse CDT + our original plugin

●

Debugging :
–

STLINK (for STM32F4d)

–

JTAG (for RasPi)
cross compiler for STM32F4
GNU Tools for ARM Embedded Processors
(https:/
/launchpad.net/gcc-arm-embedded)
cross compiler for RasPi
●

'GNU Tools for ARM Embedded Processors' is...
–

–

“1. ARM11 is not our primary targets, so those tools are not
tested on such targets.”
“Thus I don't recommend this tool chain for Raspberry Pi.”

https://answers.launchpad.net/gcc-arm-embedded/+question/227876
●

So we use GNU Tools built by our own.
https://github.com/dwelch67/build_gcc/blob/master/build_arm
How to debug with STM32F4d
PC

STM32F4d
stlink

STLINK

USB cable

gdb
for arm

Eclipse

arm-none-eabi-gdb

stlink: https:/
/github.com/texane/stlink
How to debug with RasPi
PC

RasPi
armjtag

OpenOCD

USB and
JTAG cable

gdb
for arm

Eclipse

arm-none-eabi-gdb

OpenOCD: http:/
/openocd.sf.net/
armjtag:
https:/
/github.com/dwelch67/raspberrypi/tree/master/armjtag
JTAG debugger (hardware)
ARM-USB-TINY-H
●

connect ARM via USB

https://www.olimex.com/Products/ARM/JTAG/ARM-USB-TINY-H/
JTAG debugger (hardware)

●

connect JTAG cable
and RasPi

●

Use 6pins only (and GND)
https:/
/www.olimex.com/Products/ARM/_resources/arm-jtag-layout.gif
JTAG debugger (software)
●

http://openocd.sourceforge.net/

You can do fash
programming
and GDB
debugging with
OpenOCD.
armjtag
https:/
/github.com/dwelch67/raspberrypi/tree
/master/armjtag
“an alternate bootloader”
“The ARM11 on the Raspberry Pi has a jtag
based debug port for software development.”
are you tired?
7 steps to use mruby
●

choose your target board

●

setup development environments

●

write application

●

cross build

●

transfer binary to the board

●

cross debugging

●

it works!
write application
●

write Ruby code

●

write mrbgems

●

write C code
Including Ruby code in mruby
●

As source code of Ruby
Human readable
As Byte code
–

●

–

Machine readable
Including Ruby code in mruby
●

As source code of Ruby
Human readable
As Byte code
–

●

–

Machine readable
hello world in mruby (1)
#include
#include
#include
#include

<stdlib.h>
<stdio.h>
<mruby.h>
<mruby/compile.h>

int main(void)
{
mrb_state *mrb = mrb_open();
char code[] = "p 'hello world!'";
mrb_load_string(mrb, code);
mrb_close(mrb);
return 0;
}
hello world in mruby (1)
mrb_state *mrb = mrb_open();
char code[] = "p 'hello world!'";
mrb_load_string(mrb, code);
mrb_close(mrb);
Including Ruby code in mruby
●

As source code of Ruby
Human readable
As Byte code
–

●

–

Machine readable
hello world in mruby (2)
mrb_state *mrb = mrb_open();
const uint8_t bcode[] = {
0x52,0x49,0x54,0x45,0x30,0x30,0x30,
(… byte byte byte …)
0x00,0x00,0x00,0x00,0x08,
};
mrb_load_irep(mrb, bcode);
mrb_close(mrb);
hello world in mruby (2)
$ cat hello.rb
p 'hello world!'
$ ./bin/mrbc -Bbcode hello.rb
$ cat hello.c
#include <stdint.h>
const uint8_t foo[] = {
0x52,0x49,0x54,0x45,0x30,0x30,0x30,0x31,0x
b9,0x71,0x00,0x00,0x00,0x65,0x4d,0x41,
(…)
0x00,0x00,0x00,0x00,0x08,
};
$
mrb_open
Create and initialize new mruby VM
Usage:
mrb_state *mrb = mrb_open();
mrb_close
release mruby VM
Usage:
mrb_close(mrb);
mrb_load_irep
load mruby bytecode and execute.
Usage:
mrb_load_irep(mrb, bcode);
mruby API
In include/mruby.h
and include/mruby/*.h
※all API has mrb_state at 1st arg.
ex.

mrb_load_string(mrb, code);
mrbgems
●

●

●

“mruby gems” by bovi
library packaging system like
RubyGems
static linked with compile time
mrbgem.rake
MRuby::Gem::Specification.new(
'mruby-rs-led') do |spec|
spec.license = 'MIT'
spec.authors = 'yamanekko'
end
minirake
mruby has minirake full source
minimal rake clone by masuidrive
– you do not have to install rake even if
using Ruby 1.8
mrbgems and mruby itself are built by
minirake
–

●
Why (mini)rake
●

old mruby used CMake

●

but mruby build system became complex
–
–

get source code from github

–
●

build mrbgems (Ruby and C)
support gem bundle (gembox)

we want to write them in Ruby
build_config.rb
●

Ruby (not mruby) script
Execute in host machine at building time
DSL to build mruby
–

●

●

Load from Rakefile
Default (minimal) build_config.rb
MRuby::Build.new do |conf|
toolchain :gcc
conf.gembox 'default'
end
DEMO (Raspberry Pi)
●

blinking LED (like STM32F4 Discovery)
Green on -> Orange on -> Red on -> Blue on ->
Green off -> Orange off -> Red off -> Blue off
Ruby Code (init)
Ruby Code (blink)
7 steps to use mruby
●

choose your target board

●

setup development environments

●

write application

●

cross build

●

transfer binary to the board

●

cross debugging

●

it works!

demo
using Eclipse
Install MrubyTools plugins
Install MrubyTools plugins
create mruby project
●

cloned from https:/
/github.com/mruby/mruby
CREATE CUSTOM mrbgems
●

create new mrbgem to control STM32F4-Discovery's LED
from ruby
generated mrbgem files
mrbgem wizard can create necessary files,
directory structure and template files
generated mrbgem template
add code for Led class
← class
← constants

↑ methods
build_config.rb for RasPi
libmruby.a generated
CREATE RasPi'S PROJECT
●

Create new C project

●

Create new files
–

demo.c

–

syscalls.c

–

vectors.s

–

memmap

–

makefile

–
create app project
Write ruby code
●

Insert “beginning tag” and “ending tag”

●

write ruby code between beginning tag and ending tag

●

Two ways to embed ruby code

1. se
U

menu bar
Insert ruby code in .c file

2. se
U

tool bar

/* <ruby->
...
<-ruby> */

Insert .rb file name in .c file

/* <rubyfile->
aaa.rb
<-rubyfile> */
before conversion
execute mrbc wrapper
after conversion
OpenOCD uses gdb and telnet
Eclipse

gdb

command Interface

telnet

port 3333

openocd

RasPi

port 4444
openocd as external tool
call openocd
OpenOCD log in Eclipse
connect OpenOCD via telnet
setting gdb command
Another Demo: blinking LED &
MEMS Accelerometer
using STM32F4d

Power ON

blinking
mode

Push Button
Push Button

tilt sensor
mode

switching 2 modes by pushing button
Tilt sensor in STM32F4d
●

using 3-axis MEMS accelerometer
in STM32F4 Discovery
only use 2 axis (X and Y)
– LED show which side is downward
–
Another Demo: blinking LED &
MEMS Accelerometer
using STM32F4d

Power ON

blinking
mode

Push Button
Push Button

tilt sensor
mode

switching 2 modes by pushing button
future issues
●

Ruby source level debugger
●

●

support bytecodes generated by mrbc

more mrbgem samples
Our Links
●

source code
●

●

Eclipse Plugin download site (for Eclipse)
–

●

http:/
/github.com/yamanekko/mruby/tree/rubyconf
http:/
/yamanekko.github.io/mruby-tools-EclipsePlugin

This slide
●

http:/
/slideshare.net/yamanekko/rubyconf2013
Useful mruby links
mruby repos: https:/
/github.com/mruby/mruby
mruby.sh: http:/
/blog.mruby.sh/
Introduction to Lightweight Ruby "mruby" (by Toshiba):
http:/
/www.tjsys.co.jp/page.jsp?id=3059
mruby code search: http:/
/mruby-code-search.ongaeshi.me/
ngx_mruby: http:/
/matsumoto-r.github.io/ngx_mruby/
webruby: https:/
/github.com/xxuejie/webruby
mobiruby: http:/
/mobiruby.org/
Thanks!

Happy mruby Hacking!

special thanks to: @tenderlove and @_zzak

More Related Content

What's hot

7Masters - Bootstrap no ZF2
7Masters - Bootstrap no ZF2 7Masters - Bootstrap no ZF2
7Masters - Bootstrap no ZF2 iMasters
 
Functional MCU programming #0: Development environment
Functional MCU programming #0: Development environmentFunctional MCU programming #0: Development environment
Functional MCU programming #0: Development environmentKiwamu Okabe
 
Advanced Linux Game Programming
Advanced Linux Game ProgrammingAdvanced Linux Game Programming
Advanced Linux Game ProgrammingLeszek Godlewski
 
MOVED: The challenge of SVE in QEMU - SFO17-103
MOVED: The challenge of SVE in QEMU - SFO17-103MOVED: The challenge of SVE in QEMU - SFO17-103
MOVED: The challenge of SVE in QEMU - SFO17-103Linaro
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript ProgrammingYoshiki Shibukawa
 
I Know Kung Fu - Juggling Java Bytecode
I Know Kung Fu - Juggling Java BytecodeI Know Kung Fu - Juggling Java Bytecode
I Know Kung Fu - Juggling Java BytecodeAlexander Shopov
 
[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation
[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation
[Sitcon2018] Analysis and Improvement of IOTA PoW ImplementationZhen Wei
 
One Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesOne Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesLeszek Godlewski
 
Lifting The Veil - Reading Java Bytecode During Lunchtime
Lifting The Veil - Reading Java Bytecode During LunchtimeLifting The Veil - Reading Java Bytecode During Lunchtime
Lifting The Veil - Reading Java Bytecode During LunchtimeAlexander Shopov
 
Lifting The Veil - Reading Java Bytecode
Lifting The Veil - Reading Java BytecodeLifting The Veil - Reading Java Bytecode
Lifting The Veil - Reading Java BytecodeAlexander Shopov
 
Raspberry Pi + ROS
Raspberry Pi + ROSRaspberry Pi + ROS
Raspberry Pi + ROSArnoldBail
 
Multiplatform JIT Code Generator for NetBSD by Alexander Nasonov
Multiplatform JIT Code Generator for NetBSD by Alexander NasonovMultiplatform JIT Code Generator for NetBSD by Alexander Nasonov
Multiplatform JIT Code Generator for NetBSD by Alexander Nasonoveurobsdcon
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLeszek Godlewski
 
Metasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OSMetasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OSKiwamu Okabe
 

What's hot (18)

7Masters - Bootstrap no ZF2
7Masters - Bootstrap no ZF2 7Masters - Bootstrap no ZF2
7Masters - Bootstrap no ZF2
 
Functional MCU programming #0: Development environment
Functional MCU programming #0: Development environmentFunctional MCU programming #0: Development environment
Functional MCU programming #0: Development environment
 
MacRuby
MacRubyMacRuby
MacRuby
 
In Vogue Dynamic
In Vogue DynamicIn Vogue Dynamic
In Vogue Dynamic
 
Advanced Linux Game Programming
Advanced Linux Game ProgrammingAdvanced Linux Game Programming
Advanced Linux Game Programming
 
MOVED: The challenge of SVE in QEMU - SFO17-103
MOVED: The challenge of SVE in QEMU - SFO17-103MOVED: The challenge of SVE in QEMU - SFO17-103
MOVED: The challenge of SVE in QEMU - SFO17-103
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript Programming
 
I Know Kung Fu - Juggling Java Bytecode
I Know Kung Fu - Juggling Java BytecodeI Know Kung Fu - Juggling Java Bytecode
I Know Kung Fu - Juggling Java Bytecode
 
[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation
[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation
[Sitcon2018] Analysis and Improvement of IOTA PoW Implementation
 
One Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesOne Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launches
 
Lifting The Veil - Reading Java Bytecode During Lunchtime
Lifting The Veil - Reading Java Bytecode During LunchtimeLifting The Veil - Reading Java Bytecode During Lunchtime
Lifting The Veil - Reading Java Bytecode During Lunchtime
 
Lifting The Veil - Reading Java Bytecode
Lifting The Veil - Reading Java BytecodeLifting The Veil - Reading Java Bytecode
Lifting The Veil - Reading Java Bytecode
 
Raspberry Pi + ROS
Raspberry Pi + ROSRaspberry Pi + ROS
Raspberry Pi + ROS
 
Multiplatform JIT Code Generator for NetBSD by Alexander Nasonov
Multiplatform JIT Code Generator for NetBSD by Alexander NasonovMultiplatform JIT Code Generator for NetBSD by Alexander Nasonov
Multiplatform JIT Code Generator for NetBSD by Alexander Nasonov
 
Revealing ALLSTOCKER
Revealing ALLSTOCKERRevealing ALLSTOCKER
Revealing ALLSTOCKER
 
Js robotics
Js roboticsJs robotics
Js robotics
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology aside
 
Metasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OSMetasepi team meeting #7: Snatch application on tiny OS
Metasepi team meeting #7: Snatch application on tiny OS
 

Viewers also liked

使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發yamanekko
 
STM32F4 for 智慧型電動輪椅系統Part1
STM32F4 for 智慧型電動輪椅系統Part1STM32F4 for 智慧型電動輪椅系統Part1
STM32F4 for 智慧型電動輪椅系統Part1Jack Wang
 
Stm32 f4 first touch
Stm32 f4 first touchStm32 f4 first touch
Stm32 f4 first touchBenux Wei
 
STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)Aymen Lachkhem
 
2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summit2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summitMike Milinkovich
 

Viewers also liked (6)

使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發使用Eclipse快樂的mruby開發
使用Eclipse快樂的mruby開發
 
STM32F4 for 智慧型電動輪椅系統Part1
STM32F4 for 智慧型電動輪椅系統Part1STM32F4 for 智慧型電動輪椅系統Part1
STM32F4 for 智慧型電動輪椅系統Part1
 
Stm32 f4 first touch
Stm32 f4 first touchStm32 f4 first touch
Stm32 f4 first touch
 
STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)STM32 F4 (PWM,SPI And ADC Test Examples)
STM32 F4 (PWM,SPI And ADC Test Examples)
 
2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summit2016-09-eclipse-iot-cf-summit
2016-09-eclipse-iot-cf-summit
 
présentation STM32
présentation STM32présentation STM32
présentation STM32
 

Similar to How to control physical devices with mruby

Omp tutorial cpugpu_programming_cdac
Omp tutorial cpugpu_programming_cdacOmp tutorial cpugpu_programming_cdac
Omp tutorial cpugpu_programming_cdacGanesan Narayanasamy
 
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideBKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideLinaro
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mrubyHiroshi SHIBATA
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardJian-Hong Pan
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Opersys inc.
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mrubyHiroshi SHIBATA
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with RubyAnis Ahmad
 
Digging for Android Kernel Bugs
Digging for Android Kernel BugsDigging for Android Kernel Bugs
Digging for Android Kernel BugsJiahong Fang
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3Opersys inc.
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UIOpersys inc.
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013dotCloud
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Docker, Inc.
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mrubyHiroshi SHIBATA
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalValeriy Kravchuk
 
Montreal.rb ruby debugging basics - march 20th 2012
Montreal.rb   ruby debugging basics - march 20th 2012Montreal.rb   ruby debugging basics - march 20th 2012
Montreal.rb ruby debugging basics - march 20th 2012Rafael Rosa
 
Infecting the Embedded Supply Chain
 Infecting the Embedded Supply Chain Infecting the Embedded Supply Chain
Infecting the Embedded Supply ChainPriyanka Aash
 
mruby can be more lightweight
mruby can be more lightweightmruby can be more lightweight
mruby can be more lightweightyamanekko
 
Troubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveTroubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveMarcelo Altmann
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 Linaro
 

Similar to How to control physical devices with mruby (20)

Omp tutorial cpugpu_programming_cdac
Omp tutorial cpugpu_programming_cdacOmp tutorial cpugpu_programming_cdac
Omp tutorial cpugpu_programming_cdac
 
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation GuideBKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
BKK16-302: Android Optimizing Compiler: New Member Assimilation Guide
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development Board
 
Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013Inside Android's UI / ABS 2013
Inside Android's UI / ABS 2013
 
How to test code with mruby
How to test code with mrubyHow to test code with mruby
How to test code with mruby
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with Ruby
 
Digging for Android Kernel Bugs
Digging for Android Kernel BugsDigging for Android Kernel Bugs
Digging for Android Kernel Bugs
 
RubyGems 3 & 4
RubyGems 3 & 4RubyGems 3 & 4
RubyGems 3 & 4
 
Headless Android at AnDevCon3
Headless Android at AnDevCon3Headless Android at AnDevCon3
Headless Android at AnDevCon3
 
Inside Android's UI
Inside Android's UIInside Android's UI
Inside Android's UI
 
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
 
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013Lightweight Virtualization with Linux Containers and Docker I YaC 2013
Lightweight Virtualization with Linux Containers and Docker I YaC 2013
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
Gdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) finalGdb basics for my sql db as (openfest 2017) final
Gdb basics for my sql db as (openfest 2017) final
 
Montreal.rb ruby debugging basics - march 20th 2012
Montreal.rb   ruby debugging basics - march 20th 2012Montreal.rb   ruby debugging basics - march 20th 2012
Montreal.rb ruby debugging basics - march 20th 2012
 
Infecting the Embedded Supply Chain
 Infecting the Embedded Supply Chain Infecting the Embedded Supply Chain
Infecting the Embedded Supply Chain
 
mruby can be more lightweight
mruby can be more lightweightmruby can be more lightweight
mruby can be more lightweight
 
Troubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer PerspectiveTroubleshooting MySQL from a MySQL Developer Perspective
Troubleshooting MySQL from a MySQL Developer Perspective
 
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64 BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
 

More from yamanekko

Model2code mruby 2018
Model2code mruby 2018Model2code mruby 2018
Model2code mruby 2018yamanekko
 
Ev3rt and mruby-ev3rt 2018ver
Ev3rt and mruby-ev3rt 2018verEv3rt and mruby-ev3rt 2018ver
Ev3rt and mruby-ev3rt 2018veryamanekko
 
Rubykaigi2016 High Tech Seat in mruby
Rubykaigi2016 High Tech Seat in mrubyRubykaigi2016 High Tech Seat in mruby
Rubykaigi2016 High Tech Seat in mrubyyamanekko
 
Domo Arigato, Mr(uby) Roboto
Domo Arigato, Mr(uby) RobotoDomo Arigato, Mr(uby) Roboto
Domo Arigato, Mr(uby) Robotoyamanekko
 
RubyKaigi2015 making robots-with-mruby
RubyKaigi2015 making robots-with-mrubyRubyKaigi2015 making robots-with-mruby
RubyKaigi2015 making robots-with-mrubyyamanekko
 
mrubyでETロボコンに出よう
mrubyでETロボコンに出ようmrubyでETロボコンに出よう
mrubyでETロボコンに出ようyamanekko
 
ルネサスナイト
ルネサスナイトルネサスナイト
ルネサスナイトyamanekko
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05yamanekko
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしyamanekko
 

More from yamanekko (9)

Model2code mruby 2018
Model2code mruby 2018Model2code mruby 2018
Model2code mruby 2018
 
Ev3rt and mruby-ev3rt 2018ver
Ev3rt and mruby-ev3rt 2018verEv3rt and mruby-ev3rt 2018ver
Ev3rt and mruby-ev3rt 2018ver
 
Rubykaigi2016 High Tech Seat in mruby
Rubykaigi2016 High Tech Seat in mrubyRubykaigi2016 High Tech Seat in mruby
Rubykaigi2016 High Tech Seat in mruby
 
Domo Arigato, Mr(uby) Roboto
Domo Arigato, Mr(uby) RobotoDomo Arigato, Mr(uby) Roboto
Domo Arigato, Mr(uby) Roboto
 
RubyKaigi2015 making robots-with-mruby
RubyKaigi2015 making robots-with-mrubyRubyKaigi2015 making robots-with-mruby
RubyKaigi2015 making robots-with-mruby
 
mrubyでETロボコンに出よう
mrubyでETロボコンに出ようmrubyでETロボコンに出よう
mrubyでETロボコンに出よう
 
ルネサスナイト
ルネサスナイトルネサスナイト
ルネサスナイト
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなし
 

Recently uploaded

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

How to control physical devices with mruby