mRuby - Powerful Software for Embedded System Development
1. mRuby - Powerful Software for
Embedded System Development
mruby developers
Kyushu Institute of Technology
Kazuaki TANAKA
2. Lightweight Ruby
● METI Project 2010-2012
● Project members:
● Fukuoka CSK
● Network Applied Communication Lab(NaCl)
● Kyushu Institute of Technology
● Toshiba Information Systems
● Fukuoka Prefecture
● SCSK
3. Why using Ruby?
Easy to implement, easy to read
Maintenance
Delivery speed Software lifetime
Cost
Startup
Decreasing bugs Team development
Cost
Quality Reusability
Software scalability
4. Ruby
● Dynamic Linking
Application
Dynamic Linking
in Execution
Application Application
Libraries Libraries
for Platform A for Platform B
5. “Lightweight” Ruby
● Less resources in execution
● Memory space
● Language specification
● JIS X 3017
● ISO/IEC 30170
● Short time to delivery
● Apply to any Hardware
6. Ruby / mruby
Execution Mechanisms
● “Ruby” is interpreter
● Directly execute Ruby codes
● Ruby 1.9 uses YARV(VM)
● “mruby” is compiler and VM
● Indirectly execute Ruby codes
● Compiler converts Ruby codes into byte-code
(Development environment)
● VM executes byte-code
(Execution environment)
8. Lightweight Ruby
● Compiler and VM
This phase is done in
Memory Management desktop environment
Byte-code Generator
Optimizer VM runs in target device
Semantic Analyzer
Memory Management
Lexical Analyzer VM
Syntax Analyzer
Byte-code Loader
Memory map in Memory map in
Compilation phase Execution phase
9. Compiler and VM (image)
Ruby Codes
class Motor < Motor3000TS
def start
@status = :on Byte-code is portable
end
end across any devices.
m1=Motor.new
m1.start
Compiler LOAD r1, 0
SEND r0, :f0, 1
LOAD r1, 5
Byte-code SEND r0, :f2, 1
LOAD r1, 0
SEND r0, :f0, 1
LOAD r1, 5
SEND r0, :f2, 1
VM
Development Target Device
10. Requirement from
embedded system developers
● Use Ruby language for embedded systems
● “Ruby” requires over 20 or more MB memory
● Reduce using memory
● Hide Ruby codes
● Encryption
● Test and Reliability
11. Embedded System Development
● Usual development style
● Implement codes in C/C++/Java
● Compile and Link, we get executable file
● Download executables to target device
12. Problems in development
● Implement codes in C/C++/Java
● How to keep the quality of programs?
● Compile and Link
● Cross-compilation
● Target dependent environment is necessary
● Link libraries, we get executable file
● We cannot execute this executable in desktop.
● Download executables into target device
● We can TEST the executable file. Bugs....fix it
13. Development using mruby
● Implement codes in Ruby
● Compile, we get an executable file
● We can TEST in desktop.
● VM(for desktop) executes byte-code in desktop.
Libraries are linked in execution.
● Download the byte-code into target device
● VM(for target) executes byte-code in target device.
14. The Mechanism
● VM executes Ruby program+Library
● Ruby program(= Byte-code) is
device independent.
● Libraries are included in VM
● Target dependent VM is necessary.
(Once VM is prepared, we can reuse same VM)
15. Dynamic Linking
● Methods in Libraries are call by “method name”
● Even if the library was changed, we can find the
method by seeking method name.
LOAD r1, 0
SEND r0, :f0, 1 Device dependent
LOAD r1, 5 Dynamic
Linking methods
SEND r0, :f2, 1
Byte-code
VM
Target device
※ “SEND” is like “CALL” instruction.
16. Advantages
● Cross-compilation is not necessary
● Simple development and test (agile development)
● Test in desktop
We don't have to wait the Hardware development.
● Dynamic Linking
● Byte-code can be reused across the targets.
● Software family management
17. Disadvantage
● Execution Speed is slow
● C : Ruby ~~ 100:1
● VM is single threaded process
● If necessary, multiple VM
● Interruption is not supported
● Interruption is catch by C
Ruby is polling request to C
18. Application area
● User Interface,Communication
● Customize is easy
● Network
● Ruby is mainly used in Web applications
● Software Deployment in execution time
(Dynamic linking, so we can change libraries in
runtime)
● Software Initialization
● Boot-up and settings
● Tuning, Test in various configurations
19. Advisors and their case study
● Toshiba Information System
● Solar power regulation and monitoring
● Fuji Electric
● Vending machine
● IIJ Supported by
● Network router
● Manycolors
● Bio-informatics
● ILC
● GUI Libraries for Embedded Applications
21. Recent results
● Memory Requirement
● RAM 150KB + ROM 250KB
● Target platform:
● SH-4, TOPPERS(RTOS)
● H8(w/o OS)
● NIOS II(FPGA), iTRON
● BeagleBoard(ARM Coretex A8), Linux
● GR-SAKURA(Renesas RX63N)(w/o OS)
● Of course, Windows, Mac, Linux
22. Open Souece Sofrware
● Lightweight Ruby is called 'mruby'
● Released in GitHub, beta version
https://github.com/mruby
● MIT License
You can use mruby without any charge
for any purpose
● Show the MIT License description and Licenser
23. mruby forum
● NPO mruby forum
● Maintain the mruby codes
● Support for libraries
● License management
● Spread
http://forum.mruby.org/