1.mRuby - Powerful Software forEmbedded System Developmentmruby developersKyushu Institute of Technology Kazuaki TANAKA2. Lightweight Ruby● METI Project 2010-2012● Project members:● Fukuoka CSK● Network Applied Communication Lab(NaCl)● Kyushu Institute of Technology● Toshiba Information Systems● Fukuoka Prefecture● SCSK3. Why using Ruby? Easy to implement, easy to read MaintenanceDelivery speed Software lifetime Cost Startup Decreasing bugs Team development Cost Quality Reusability Software scalability4. Ruby● Dynamic Linking ApplicationDynamic Linkingin Execution ApplicationApplication LibrariesLibrariesfor Platform A for Platform B5. “Lightweight” Ruby● Less resources in execution● Memory space● Language specification● JIS X 3017● ISO/IEC 30170● Short time to delivery● Apply to any Hardware6. 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)7. Ruby interpreterExecuterExecutionMemory ManagementOptimizer Semantic AnalyzerPreprocess Lexical Analyzer Syntax AnalyzerMemory map in execution phase8. Lightweight Ruby● Compiler and VMThis phase is done in Memory Managementdesktop environmentByte-code Generator OptimizerVM runs in target device Semantic AnalyzerMemory ManagementLexical Analyzer VMSyntax AnalyzerByte-code Loader Memory map in Memory map in Compilation phase Execution phase9. Compiler and VM (image)Ruby Codesclass Motor < Motor3000TS def start@status = :on Byte-code is portable endend across any devices.m1=Motor.newm1.startCompilerLOAD r1, 0SEND r0, :f0, 1LOAD r1, 5Byte-code SEND r0, :f2, 1 LOADr1, 0 SENDr0, :f0, 1 LOADr1, 5 SENDr0, :f2, 1 VM Development Target Device10. 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 Reliability11. Embedded System Development● Usual development style● Implement codes in C/C++/Java● Compile and Link, we get executable file● Download executables to target device12. 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 it13. 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) isdevice 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 themethod by seeking method name. LOAD r1, 0 SEND r0, :f0, 1 Device dependent LOAD r1, 5Dynamic Linking methods SEND r0, :f2, 1Byte-code VM Target device※ “SEND” is like “CALL” instruction.16. Advantages● Cross-compilation is not necessary● Simple development and test (agile development)● Test in desktopWe dont have to wait the Hardware development.● Dynamic Linking● Byte-code can be reused across the targets.● Software family management17. 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 CRuby is polling request to C18. 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 inruntime)● Software Initialization● Boot-up and settings● Tuning, Test in various configurations19. 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 Applications20. Applicationsmruby on FPGA chip mruby on Industrial manipulatorMultiple VMs on RTOS21. 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, Linux22. Open Souece Sofrware● Lightweight Ruby is called mruby● Released in GitHub, beta versionhttps://github.com/mruby● MIT LicenseYou can use mruby without any chargefor any purpose● Show the MIT License description and Licenser23. mruby forum● NPO mruby forum● Maintain the mruby codes● Support for libraries● License management● Spreadhttp://forum.mruby.org/
Comments
Report "mRuby - Powerful Software for Embedded System Development"