6. mruby
Portable
• Executing mruby bytecode using mruby VM
Source
Code
program.rb
Byte
Code
program.mrb
mrbc
Device A
Execute
mruby VM
Device B
Execute
mruby VM
PC
Execute
mruby VM
7. mruby
Configurable
• mrbgems
– VM configuration
• Add one line in build_config.rb
conf.gem :github => 'iij/mruby-socket’
http://mruby.org/libraries/
8. mruby/c project
• mruby for more smaller device
• Concurrent mruby execution without OS
• “/c” stands for compact and concurrent
ARM Coretex-M3 80MHz
64KB SRAM, 256KB Flash
PSoC5LP,
http://cypress.com/
12. How it works?
• Small mruby/c program only supported
• When a program ended, memory initialized
• How to support long term execution?
– Use concurrency
16. Demo
mruby/c, concurrency
$lock = true
i = 1
while i<10 do
puts i
i = i + 1
end
$lock = false
while $lock do
end
i = 100
while i<110 do
puts i
i = i + 1
end
Using spinlock without mutual exclusion >_<
17. Boot
• Boot process =
+ Initialize VM work
+ Create classes
+ Register all the methods to classes
1. Create entry point to a method
2. Get symbol of a method
3. Add a element to hash table
for all methods