mRuby - Powerful Software for Embedded System Development
Post on 12-May-2015
1374 Views
Preview:
Transcript
mRuby - Powerful Software forEmbedded System Development
Kyushu Institute of TechnologyKazuaki TANAKA
mruby developers
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
Why using Ruby?
Easy to implement, easy to read
Delivery speed
Decreasing bugs
Maintenance
Team developmentReusability
CostStartup
CostQuality
Software scalability
Software lifetime
Ruby
● Dynamic Linking
Application
Application
Librariesfor Platform A
Application
Librariesfor Platform B
Dynamic Linkingin Execution
“Lightweight” Ruby
● Less resources in execution● Memory space
● Language specification● JIS X 3017● ISO/IEC 30170
● Short time to delivery● Apply to any Hardware
Ruby / mrubyExecution 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)
Ruby interpreter
Lexical AnalyzerSyntax Analyzer
Semantic Analyzer
Optimizer
Memory map in execution phase
Memory Management
ExecuterExecution
Preprocess
Lightweight Ruby
Lexical AnalyzerSyntax Analyzer
Semantic Analyzer
Optimizer
Byte-code Generator
VM
Memory map inCompilation phase
Memory map inExecution phase
Memory Management
Memory Management
● Compiler and VM
VM runs in target device
This phase is done indesktop environment
Byte-code Loader
Compiler and VM (image)
Byte-code
Ruby Codes
class Motor < Motor3000TS def start @status = :on endend
m1=Motor.newm1.start
LOAD r1, 0 SEND r0, :f0, 1 LOAD r1, 5 SEND r0, :f2, 1
Development
VM
LOAD r1, 0 SEND r0, :f0, 1 LOAD r1, 5 SEND r0, :f2, 1
Target Device
Compiler
Byte-code is portableacross any devices.
Requirement fromembedded 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
Embedded System Development
● Usual development style● Implement codes in C/C++/Java● Compile and Link, we get executable file● Download executables to target device
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
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.
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)
Dynamic Linking
VM
LOAD r1, 0 SEND r0, :f0, 1 LOAD r1, 5 SEND r0, :f2, 1
Target device
Device dependentmethods
Byte-code
DynamicLinking
● Methods in Libraries are call by “method name”● Even if the library was changed, we can find the
method by seeking method name.
※ “SEND” is like “CALL” instruction.
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
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
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
Advisors and their case study
● Toshiba Information System● Solar power regulation and monitoring
● Fuji Electric● Vending machine
● IIJ● Network router
● Manycolors● Bio-informatics
● ILC● GUI Libraries for Embedded Applications
Supported by
Applications
mruby on FPGA chip
mruby on Industrial manipulatorMultiple VMs on RTOS
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
Open Souece Sofrware
● Lightweight Ruby is called 'mruby'● Released in GitHub, beta version
● MIT LicenseYou can use mruby without any chargefor any purpose
● Show the MIT License description and Licenser
https://github.com/mruby
mruby forum
● NPO mruby forum● Maintain the mruby codes● Support for libraries● License management● Spread
http://forum.mruby.org/
top related