SlideShare uma empresa Scribd logo
1 de 101
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

使用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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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の話の続きのおはなし
 

Último

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Último (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

How to control physical devices with mruby