This document introduces mruby, a lightweight implementation of the Ruby programming language designed for embedded systems. It discusses how mruby compiles Ruby code to bytecode that can run on embedded devices with limited memory and processing power. Key points include mruby's small memory footprint, ability to dynamically link libraries, and benefits for cross-platform development and testing of embedded software. Examples of mruby usage include user interfaces, networking applications, and initialization scripts.
Highly Surmountable Challenges in Ruby+OMR JIT CompilationMatthew Gaudet
The Ruby+OMR JIT compiler adds a JIT to CRuby. However, it has challenges to surmount before it will provide broad improvement to Ruby applications that aren’t micro-benchmarks. This talk will cover some of those challenges, along with some brainstorming about potential ways to tackle them.
The Ruby+OMR JIT compiler is one way to add JIT compilation to the CRuby interpreter. However, it has a number of challenges to surmount before it will provide broad improvement to Ruby applications that aren’t micro-benchmarks. This talk will cover some of those challenges, along with some brainstorming about potential ways to tackle them.
Highly Surmountable Challenges in Ruby+OMR JIT CompilationMatthew Gaudet
The Ruby+OMR JIT compiler adds a JIT to CRuby. However, it has challenges to surmount before it will provide broad improvement to Ruby applications that aren’t micro-benchmarks. This talk will cover some of those challenges, along with some brainstorming about potential ways to tackle them.
The Ruby+OMR JIT compiler is one way to add JIT compilation to the CRuby interpreter. However, it has a number of challenges to surmount before it will provide broad improvement to Ruby applications that aren’t micro-benchmarks. This talk will cover some of those challenges, along with some brainstorming about potential ways to tackle them.
Tilmann Scheller discusses the various ways the LLVM compiler is being used for C/C++ toolchains, various programming languages and runtime systems, GPU's and the web.
LAS16-108: JerryScript and other scripting languages for IoTLinaro
LAS16-108: JerryScript and other scripting languages for IoT
Speakers: Paul Sokolovsky
Date: September 26, 2016
★ Session Description ★
Overview of small-size/low-resource VHLL (very high-level languages)/scripting languages available for embedded/IoT usage (JavaScript, Python, Lua, etc.). Typical/possible usage scenarios and benefits. Challenges of running VHLLs in deeply embedded/very resource-constrained environments. Progress reports on porting JerryScript to Zephyr. (Possibly, architecture comparison of JerryScript and MicroPython).
★ Resources ★
Etherpad: pad.linaro.org/p/las16-108
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-108/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Building a Network IP Camera using ErlangFrank Hunleth
This is my Erlang Factory SF 2014 talk on using the Nerves project to make a streaming IP camera with the Beaglebone Black and a custom image sensor cape. The presentation provides throughput, latency, and memory usage measurements to motivate using Erlang in embedded Linux-based devices.
Presentation given at Funding Circle on Thomas Wurthinger's paper on Truffle/Graal.
Paper: https://pdfs.semanticscholar.org/8251/bd1f9496b61e7418b96a816f31477de4c75d.pdf
Using Erlang on the RaspberryPi to interact with the physical worldBrian Chamberlain
Embedded linux systems are gaining in popularity in the maker/hacker communities. Platforms such as the BeagleBone and RaspberryPi have created new interest in systems which can interact with the physical world. However, interacting with the physical world can be a challenge. Luckily, we have Erlang to help us out. This talk covers new hardware platforms, embedded linux systems, why Erlang is a good fit, and how you can get started hardware hacking the world with Erlang.
(phpconftw2012) PHP as a Middleware in Embedded Systemssosorry
It is used by sosorry at PHPConf Taiwan 2012. In this presentation, we will see that why we need a middleware in embedded systems, and how PHP can play this role. Besides, some tasks about architecture design, porting libraries, development & debug, and performance tunning would be included.
Tilmann Scheller discusses the various ways the LLVM compiler is being used for C/C++ toolchains, various programming languages and runtime systems, GPU's and the web.
LAS16-108: JerryScript and other scripting languages for IoTLinaro
LAS16-108: JerryScript and other scripting languages for IoT
Speakers: Paul Sokolovsky
Date: September 26, 2016
★ Session Description ★
Overview of small-size/low-resource VHLL (very high-level languages)/scripting languages available for embedded/IoT usage (JavaScript, Python, Lua, etc.). Typical/possible usage scenarios and benefits. Challenges of running VHLLs in deeply embedded/very resource-constrained environments. Progress reports on porting JerryScript to Zephyr. (Possibly, architecture comparison of JerryScript and MicroPython).
★ Resources ★
Etherpad: pad.linaro.org/p/las16-108
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-108/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Building a Network IP Camera using ErlangFrank Hunleth
This is my Erlang Factory SF 2014 talk on using the Nerves project to make a streaming IP camera with the Beaglebone Black and a custom image sensor cape. The presentation provides throughput, latency, and memory usage measurements to motivate using Erlang in embedded Linux-based devices.
Presentation given at Funding Circle on Thomas Wurthinger's paper on Truffle/Graal.
Paper: https://pdfs.semanticscholar.org/8251/bd1f9496b61e7418b96a816f31477de4c75d.pdf
Using Erlang on the RaspberryPi to interact with the physical worldBrian Chamberlain
Embedded linux systems are gaining in popularity in the maker/hacker communities. Platforms such as the BeagleBone and RaspberryPi have created new interest in systems which can interact with the physical world. However, interacting with the physical world can be a challenge. Luckily, we have Erlang to help us out. This talk covers new hardware platforms, embedded linux systems, why Erlang is a good fit, and how you can get started hardware hacking the world with Erlang.
(phpconftw2012) PHP as a Middleware in Embedded Systemssosorry
It is used by sosorry at PHPConf Taiwan 2012. In this presentation, we will see that why we need a middleware in embedded systems, and how PHP can play this role. Besides, some tasks about architecture design, porting libraries, development & debug, and performance tunning would be included.
Lua as a business logic language in high load applicationIlya Martynov
This report covers our experience building custom HTTP web server used for the delivery of internet advertising. The application design has as one goals finding the right balance between high performance and ease of development. To achieve this goal we are using Lua as a business logic scripting language embedded into C++ application. The report tries to explain how and why we use Lua and how the choice of Lua affects architecture of the application.
Compilers have been improving programmer productivity ever since IBM produced the first FORTRAN compiler in 1957. Today, we mostly take them for granted but even after more than 60 years, compiler researchers and practitioners continue to push the boundaries for what compilers can achieve as well as how easy it is to leverage the sophisticated code bases that encapsulate those six decades of learning in this field. In this talk, I want to highlight how industry trends like the migration to cloud infrastructures and data centers as well as the rise of flexibly licensed open source projects like LLVM and Eclipse OMR are paving the way towards even more effective and powerful compilation infrastructures than have ever existed: compilers with the opportunity to contribute to programmer productivity in even more ways than simply better hardware instruction sequences, and with simpler APIs so they can be readily used in scenarios where even today's most amazing Just In Time compilers are not really practical.
Ruby JIT Compilation - the talk and presentation prepared by the experienced developer and lecturer Mykhailo Bortnyk for the Ruby Meditation conference. The presentation contains JIT definition, known Ruby JIT implementations, demonstration, and some considerations on the future of JIT in Ruby.
In Green Custard's 22nd Friday talk, William gives an introduction to Flutter.
Topics covered:
- What is Flutter?
- Available Options
- Comparisons
- Tech
- Widgets
- Widget code. Override Paint
- State in Flutter
- Deployment
- Future
Green Custard is a custom software development consultancy. To discover more about their work and the team visit www.green-custard.com.
LCU14 310- Cisco ODP
---------------------------------------------------
Speaker: Robbie King
Date: September 17, 2014
---------------------------------------------------
★ Session Summary ★
Cisco to present their experience using ODP to provide portable accelerated access to crypto functions on various SoCs.
---------------------------------------------------
★ Resources ★
Zerista: http://lcu14.zerista.com/event/member/137757
Google Event: https://plus.google.com/u/0/events/ckmld1hll5jjijq11frbqmptet8
Video: https://www.youtube.com/watch?v=eFlTmslVK-Y&list=UUIVqQKxCyQLJS6xvSmfndLA
Etherpad: http://pad.linaro.org/p/lcu14-310
---------------------------------------------------
★ Event Details ★
Linaro Connect USA - #LCU14
September 15-19th, 2014
Hyatt Regency San Francisco Airport
---------------------------------------------------
http://www.linaro.org
http://connect.linaro.org
The project Remote Web Desk deals with remote control of computer over some form of network usually a LAN or the Internet. It allows friend or an administrator to fix problem on your computer or you can use it to show your desk top to somebody at a remote location
Similar to mRuby - Powerful Software for Embedded System Development (20)
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/