This document discusses running your own 6LoWPAN IoT network based on IEEE 802.15.4 standards. It describes the Linux-wpan project which provides native 802.15.4 and 6LoWPAN support in the Linux kernel. It also discusses tools like wpan-tools and communication with other IoT operating systems like RIOT and Contiki. The document covers topics like header compression, link layer security, routing protocols, and the current status and future of the Linux-wpan project.
The document provides an overview of adding IEEE 802.15.4 and 6LoWPAN support to an embedded Linux device. It discusses the motivation, including the header size problem in IEEE 802.15.4 frames and how 6LoWPAN addresses this. It then describes the Linux-wpan project, supported hardware, configuration tools, and communication with RIOT and Contiki operating systems.
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Thin...Samsung Open Source Group
JerryScript is an ultra-lightweight JavaScript engine developed by Samsung for use in Internet of Things devices. It has a small memory footprint of only 3KB and implements the full ECMAScript 5.1 standard. JerryScript runs on microcontrollers and small devices like the Particle Photon. A demo showed a multiplayer Pong game running on a Photon and Raspberry Pi communicating over 6LoWPAN wireless with one device driving each LED display. JerryScript provides a way to use JavaScript and web developers' skills for programming embedded devices.
JerryScript is a lightweight JavaScript engine optimized for microcontrollers and embedded devices. It has a small memory footprint of only 3KB and implements ECMAScript 5.1. JerryScript has been ported to run on the Internet of Things (IoT) operating system RIOT, allowing JavaScript code to easily be run on microcontrollers. A demo of JerryScript running a Tetris game on an STM32F4 board using an LED matrix was shown. Future work includes further optimizations and adding debugging support to JerryScript.
The document summarizes 6LoWPAN, an open IoT networking protocol. 6LoWPAN allows IPv6 to be used over low-power wireless personal area networks by adapting it to their limitations through header compression and fragmentation. It is specified by the IETF to make "things" Internet-aware using open standards rather than proprietary solutions. The document discusses the Linux-wpan project which implements 6LoWPAN and IEEE 802.15.4 support in the Linux kernel. Future work includes improving support for additional hardware and implementing more of the 6LoWPAN compression standards.
JerryScript is a lightweight JavaScript engine optimized for microcontrollers and IoT devices. It has a small base footprint of only 3KB of RAM and implements ECMAScript 5.1. JerryScript parses code directly to compact bytecode without an intermediate representation, uses compressed pointers and value representations to reduce memory usage, and is highly portable across platforms. A demo of a Pong game showed JerryScript running on a microcontroller driving an LED matrix with gameplay shared across devices. Future work will focus on additional optimizations, debugging support, and selected ES6 features.
Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120Linaro
"Session ID: BUD17-120
Session Name: Linux-wpan: IEEE 802.15.4 and 6LoWPAN in the Linux Kernel - BUD17-120
Speaker: Stefan Schmidt
Track: LITE
★ Session Summary ★
Adding support for IEEE 802.15.4 and 6LoWPAN to an embedded Linux system opens up new possibilities to communicate with tiny devices. The mainline kernel
supports the wireless protocols to connect such devices to the internet, acting
as border router for such networks.
This talk will show the current kernel support, how to enable and configure the
subsystems to use it and how to communicate between Linux and IoT operating
systems like RIOT, Contiki or Zephyr.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-120/
Presentation: https://www.slideshare.net/linaroorg/linuxwpan-ieee-802154-and-6lowpan-in-the-linux-kernel-bud17120
Video: https://youtu.be/6YNeF2H2i-U
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
Keyword: linux-wpan, kernel, IEEE, Stefan Schmidt
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961"
Clang is a C/C++ compiler that is part of the LLVM compiler infrastructure. It provides fast compilation, low memory usage, and expressive diagnostics. Clang also includes tools like the static analyzer for detecting bugs without executing code, clang-format for automated code formatting, and sanitizers for finding memory errors, data races, and other bugs.
This document provides an overview and agenda for a presentation on Tizen RT, a lightweight real-time operating system (RTOS) platform for low-end IoT devices. The presentation will cover the technology and features of Tizen RT, how it differs from other RTOS options like NuttX and TinyAra, and how to build and run applications on Tizen RT using examples like building a simple "Hello World" app. It also lists several demos that will be shown, including connecting to WiFi, running MQTT subscriptions, and controlling GPIO pins.
The document discusses running IEEE 802.15.4 low-power wireless networks under Linux. It describes the linux-wpan project, which provides native support for 802.15.4 radio devices and the 6LoWPAN standard in the Linux kernel. It also discusses the wpan-tools userspace utilities. The document outlines how to set up basic communication between Linux, RIOT and Contiki operating systems for IoT devices using the virtual loopback driver or USB dongles. It also covers link layer security, IPv6 routing protocols like RPL, and areas for future work such as mesh networking support.
This document discusses IoT.js, a lightweight version of Node.js designed for resource-constrained devices. It introduces JerryScript, a lightweight JavaScript engine developed by Samsung with a footprint of only 10KB that IoT.js runs on. The document outlines the goals and architecture of IoT.js, provides performance comparisons with other JavaScript engines, and demonstrates IoT.js running games like Tetris and Pong across devices with different capabilities. Future plans include further optimizations and adding more modules to expand IoT.js capabilities.
Stefan Schmidt from the Open Source Group discusses the current and future status of IEEE 802.15.4 and 6LoWPAN in the linux kernel in this presentation for the 2015 Embedded Linux Conference.
pycon apac 2013 presentation
http://apac-2013.pycon.jp/ja/program/sessions.html#session-14-1110-rooma0762-en2-ja
videos are available at
http://www.youtube.com/watch?v=Ow-aXpMO8-o
This document summarizes Tilmann Scheller's presentation on code size optimization for ARM from Samsung Open Source Group. It introduces Samsung's JerryScript JavaScript engine, compares code size of JerryScript compiled with Clang and GCC for ARM, and analyzes code size differences at the function level to identify optimization opportunities in Clang. Specific functions from JerryScript are shown where GCC generates significantly smaller code.
TCP over 6LoWPAN for Industrial ApplicationsAhmed Ayadi
This document discusses using TCP over 6LoWPAN for industrial applications. It outlines the benefits of TCP for reliable communication in wireless sensor networks and describes an experimental setup using TelosB motes running Contiki OS to evaluate TCP performance over 6LoWPAN in both single-hop and multi-hop scenarios. Key energy parameters like voltage, current draw for different radio states, and CPU usage are also presented to analyze energy consumption.
This document provides a quick start guide for setting up and using the Vigor3910 docker firmware. It outlines how to set the Linux IP address and port, check if docker is running, and install a docker image like Portainer for a web interface. The firmware adds docker support while keeping the original router functions and increases the firmware size and memory usage. Accessing docker requires configuring the Linux IP, port, and gateway appropriately.
The document discusses developing a device driver for a USB-SPI bridge chip called the MCP2210 to enable rapid testing of an IEEE 802.15.4 Linux kernel subsystem. Key points include: selecting the MCP2210 due to its cheap board, public datasheet, and existing out-of-tree driver; connecting it to the Linux SPI subsystem; using Virtme tools to enable fast test cycles without rebooting; and the remaining work of simplifying the driver, implementing provisioning, and getting it mainlined.
Session ID: SFO17-509
Session Name: Deep Learning on ARM Platforms
- SFO17-509
Speaker: Jammy Zhou
Track:
★ Session Summary ★
A new era of deep learning is coming with algorithm evolvement, powerful computing platforms and large dataset availability. This session will focus on existing and potential heterogeneous accelerator solutions (GPU, FPGA, DSP, and etc) for ARM platforms and the work ahead from platform perspective.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/sfo17/sfo17-509/
Presentation:
Video:
---------------------------------------------------
★ Event Details ★
Linaro Connect San Francisco 2017 (SFO17)
25-29 September 2017
Hyatt Regency San Francisco Airport
---------------------------------------------------
Keyword:
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961
Ryu is an open source SDN framework developed by NTT that provides libraries for building SDN applications. It supports OpenFlow, various protocols including BGP, and can be used to automate network devices like whitebox switches. The document outlines several use cases such as MPLS VPN automation using Ryu with OpenFlow and BGP, monitoring route changes using BMP, and DoS mitigation at internet exchanges. Future plans include improving support for new OpenFlow versions, protocols, and integrating with whitebox switches.
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLinaro
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
Speakers: Marc Zyngier, Christoffer Dall
Date: September 30, 2016
★ Session Description ★
KVM/ARM has grown up. While the initial implementation of virtualization support for ARM processors in Linux was a quality upstream software project, there were initial design decisions simply not suitable for a long-term maintained hypervisor code base. For example, the way KVM/ARM utilized the hardware support for virtualization, was by running a ‘switching’ layer of code in EL2, purely written in assembly. This was a reasonable design decision in the initial implementation, as the switching layer only had to do one thing: Switch between a VM and the host. But as we began to optimize the implementation, add support for ARMv8.1 and VHE, and added features such as debugging support, we had to move to a more integrated approach, writing the switching logic in C code as well. As another example, the support for virtual interrupts, famously known as the VGIC, was designed with a focus on optimizing MMIO operations. As it turns out, MMIO operations is a less important and infrequent operation on the GIC, and the design had some serious negative consequences for supporting other state transitions for virtual interrupts and had negative performance implications. Therefore, we completely redesigned the VGIC support, and implemented the whole thing from scratch as a team effort, with a very promising result, upstream since Linux v4.7. In this talk we will cover the evolution of this software project and give an overview of the state of the project as it is today.
★ Resources ★
Etherpad: pad.linaro.org/p/las16-500
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-500/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
In this talk Elad Raz from Mellanox Technologies talks about his effort to open source switch development and transition from proprietary SDKs to a standard, in-kernel solution.
The document discusses several single board computers that can be used for IoT and Tizen development including the Raspberry Pi, Odroid, Minnowboard Max, and Samsung's new ARTIK boards. It provides guidance on installing Tizen or building from source using Yocto Project on various boards. Graphics support can sometimes be challenging for boards without 3D acceleration. IoTivity allows interacting with other IoT devices and products across different operating systems and hardware platforms.
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
"Session ID: BUD17-104
Session Name: Scripting Languages in IoT: Challenges and Approaches - BUD17-104
Speaker: Paul Sokolovsky,
Track: LITE
★ Session Summary ★
Scripting languages is hot emerging topic in IoT. They allow easy learnability and rapid prototyping and further benefits (like production use) as they evolve. This session compares approaches of MicroPython and JerryScript/Zephyr.js projects and gives status update on their Zephyr RTOS ports.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-104/
Presentation: https://www.slideshare.net/linaroorg/bud17104-scripting-languages-in-iot-challenges-and-approaches
Video: https://youtu.be/lIO8QL2SRuU
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
Keyword: IoT, scripting languages, Zephyr, LITE, Paul Sokolovsky,
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961"
Cilium - Fast IPv6 Container Networking with BPF and XDPThomas Graf
We present a new open source project which provides IPv6 networking for Linux Containers by generating programs for each individual container on the fly and then runs them as JITed BPF code in the kernel. By generating and compiling the code, the program is reduced to the minimally required feature set and then heavily optimised by the compiler as parameters become plain variables. The upcoming addition of the Express Data Plane (XDP) to the kernel will make this approach even more efficient as the programs will get invoked directly from the network driver.
This document provides guidance on starting a new open source project or open sourcing proprietary source code. It outlines the key steps to take, including preparing internally from legal, business, and technical perspectives; defining the project governance and infrastructure; conducting final reviews; and launching the project while engaging the community and acting as a good open source citizen. The goal is to collaboratively build an active developer community around the project.
Samsung OSG Senior Strategist Guy Martin presents at Korea Linux Forum on some of the lessons he's acquired for helping companies move forward in open source. These lessons come both from previous consulting roles as well as in helping Samsung start it's new open source group.
Clang is a C/C++ compiler that is part of the LLVM compiler infrastructure. It provides fast compilation, low memory usage, and expressive diagnostics. Clang also includes tools like the static analyzer for detecting bugs without executing code, clang-format for automated code formatting, and sanitizers for finding memory errors, data races, and other bugs.
This document provides an overview and agenda for a presentation on Tizen RT, a lightweight real-time operating system (RTOS) platform for low-end IoT devices. The presentation will cover the technology and features of Tizen RT, how it differs from other RTOS options like NuttX and TinyAra, and how to build and run applications on Tizen RT using examples like building a simple "Hello World" app. It also lists several demos that will be shown, including connecting to WiFi, running MQTT subscriptions, and controlling GPIO pins.
The document discusses running IEEE 802.15.4 low-power wireless networks under Linux. It describes the linux-wpan project, which provides native support for 802.15.4 radio devices and the 6LoWPAN standard in the Linux kernel. It also discusses the wpan-tools userspace utilities. The document outlines how to set up basic communication between Linux, RIOT and Contiki operating systems for IoT devices using the virtual loopback driver or USB dongles. It also covers link layer security, IPv6 routing protocols like RPL, and areas for future work such as mesh networking support.
This document discusses IoT.js, a lightweight version of Node.js designed for resource-constrained devices. It introduces JerryScript, a lightweight JavaScript engine developed by Samsung with a footprint of only 10KB that IoT.js runs on. The document outlines the goals and architecture of IoT.js, provides performance comparisons with other JavaScript engines, and demonstrates IoT.js running games like Tetris and Pong across devices with different capabilities. Future plans include further optimizations and adding more modules to expand IoT.js capabilities.
Stefan Schmidt from the Open Source Group discusses the current and future status of IEEE 802.15.4 and 6LoWPAN in the linux kernel in this presentation for the 2015 Embedded Linux Conference.
pycon apac 2013 presentation
http://apac-2013.pycon.jp/ja/program/sessions.html#session-14-1110-rooma0762-en2-ja
videos are available at
http://www.youtube.com/watch?v=Ow-aXpMO8-o
This document summarizes Tilmann Scheller's presentation on code size optimization for ARM from Samsung Open Source Group. It introduces Samsung's JerryScript JavaScript engine, compares code size of JerryScript compiled with Clang and GCC for ARM, and analyzes code size differences at the function level to identify optimization opportunities in Clang. Specific functions from JerryScript are shown where GCC generates significantly smaller code.
TCP over 6LoWPAN for Industrial ApplicationsAhmed Ayadi
This document discusses using TCP over 6LoWPAN for industrial applications. It outlines the benefits of TCP for reliable communication in wireless sensor networks and describes an experimental setup using TelosB motes running Contiki OS to evaluate TCP performance over 6LoWPAN in both single-hop and multi-hop scenarios. Key energy parameters like voltage, current draw for different radio states, and CPU usage are also presented to analyze energy consumption.
This document provides a quick start guide for setting up and using the Vigor3910 docker firmware. It outlines how to set the Linux IP address and port, check if docker is running, and install a docker image like Portainer for a web interface. The firmware adds docker support while keeping the original router functions and increases the firmware size and memory usage. Accessing docker requires configuring the Linux IP, port, and gateway appropriately.
The document discusses developing a device driver for a USB-SPI bridge chip called the MCP2210 to enable rapid testing of an IEEE 802.15.4 Linux kernel subsystem. Key points include: selecting the MCP2210 due to its cheap board, public datasheet, and existing out-of-tree driver; connecting it to the Linux SPI subsystem; using Virtme tools to enable fast test cycles without rebooting; and the remaining work of simplifying the driver, implementing provisioning, and getting it mainlined.
Session ID: SFO17-509
Session Name: Deep Learning on ARM Platforms
- SFO17-509
Speaker: Jammy Zhou
Track:
★ Session Summary ★
A new era of deep learning is coming with algorithm evolvement, powerful computing platforms and large dataset availability. This session will focus on existing and potential heterogeneous accelerator solutions (GPU, FPGA, DSP, and etc) for ARM platforms and the work ahead from platform perspective.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/sfo17/sfo17-509/
Presentation:
Video:
---------------------------------------------------
★ Event Details ★
Linaro Connect San Francisco 2017 (SFO17)
25-29 September 2017
Hyatt Regency San Francisco Airport
---------------------------------------------------
Keyword:
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961
Ryu is an open source SDN framework developed by NTT that provides libraries for building SDN applications. It supports OpenFlow, various protocols including BGP, and can be used to automate network devices like whitebox switches. The document outlines several use cases such as MPLS VPN automation using Ryu with OpenFlow and BGP, monitoring route changes using BMP, and DoS mitigation at internet exchanges. Future plans include improving support for new OpenFlow versions, protocols, and integrating with whitebox switches.
LAS16-500: The Rise and Fall of Assembler and the VGIC from HellLinaro
LAS16-500: The Rise and Fall of Assembler and the VGIC from Hell
Speakers: Marc Zyngier, Christoffer Dall
Date: September 30, 2016
★ Session Description ★
KVM/ARM has grown up. While the initial implementation of virtualization support for ARM processors in Linux was a quality upstream software project, there were initial design decisions simply not suitable for a long-term maintained hypervisor code base. For example, the way KVM/ARM utilized the hardware support for virtualization, was by running a ‘switching’ layer of code in EL2, purely written in assembly. This was a reasonable design decision in the initial implementation, as the switching layer only had to do one thing: Switch between a VM and the host. But as we began to optimize the implementation, add support for ARMv8.1 and VHE, and added features such as debugging support, we had to move to a more integrated approach, writing the switching logic in C code as well. As another example, the support for virtual interrupts, famously known as the VGIC, was designed with a focus on optimizing MMIO operations. As it turns out, MMIO operations is a less important and infrequent operation on the GIC, and the design had some serious negative consequences for supporting other state transitions for virtual interrupts and had negative performance implications. Therefore, we completely redesigned the VGIC support, and implemented the whole thing from scratch as a team effort, with a very promising result, upstream since Linux v4.7. In this talk we will cover the evolution of this software project and give an overview of the state of the project as it is today.
★ Resources ★
Etherpad: pad.linaro.org/p/las16-500
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-500/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
In this talk Elad Raz from Mellanox Technologies talks about his effort to open source switch development and transition from proprietary SDKs to a standard, in-kernel solution.
The document discusses several single board computers that can be used for IoT and Tizen development including the Raspberry Pi, Odroid, Minnowboard Max, and Samsung's new ARTIK boards. It provides guidance on installing Tizen or building from source using Yocto Project on various boards. Graphics support can sometimes be challenging for boards without 3D acceleration. IoTivity allows interacting with other IoT devices and products across different operating systems and hardware platforms.
BUD17-104: Scripting Languages in IoT: Challenges and ApproachesLinaro
"Session ID: BUD17-104
Session Name: Scripting Languages in IoT: Challenges and Approaches - BUD17-104
Speaker: Paul Sokolovsky,
Track: LITE
★ Session Summary ★
Scripting languages is hot emerging topic in IoT. They allow easy learnability and rapid prototyping and further benefits (like production use) as they evolve. This session compares approaches of MicroPython and JerryScript/Zephyr.js projects and gives status update on their Zephyr RTOS ports.
---------------------------------------------------
★ Resources ★
Event Page: http://connect.linaro.org/resource/bud17/bud17-104/
Presentation: https://www.slideshare.net/linaroorg/bud17104-scripting-languages-in-iot-challenges-and-approaches
Video: https://youtu.be/lIO8QL2SRuU
---------------------------------------------------
★ Event Details ★
Linaro Connect Budapest 2017 (BUD17)
6-10 March 2017
Corinthia Hotel, Budapest,
Erzsébet krt. 43-49,
1073 Hungary
---------------------------------------------------
Keyword: IoT, scripting languages, Zephyr, LITE, Paul Sokolovsky,
http://www.linaro.org
http://connect.linaro.org
---------------------------------------------------
Follow us on Social Media
https://www.facebook.com/LinaroOrg
https://twitter.com/linaroorg
https://www.youtube.com/user/linaroorg?sub_confirmation=1
https://www.linkedin.com/company/1026961"
Cilium - Fast IPv6 Container Networking with BPF and XDPThomas Graf
We present a new open source project which provides IPv6 networking for Linux Containers by generating programs for each individual container on the fly and then runs them as JITed BPF code in the kernel. By generating and compiling the code, the program is reduced to the minimally required feature set and then heavily optimised by the compiler as parameters become plain variables. The upcoming addition of the Express Data Plane (XDP) to the kernel will make this approach even more efficient as the programs will get invoked directly from the network driver.
This document provides guidance on starting a new open source project or open sourcing proprietary source code. It outlines the key steps to take, including preparing internally from legal, business, and technical perspectives; defining the project governance and infrastructure; conducting final reviews; and launching the project while engaging the community and acting as a good open source citizen. The goal is to collaboratively build an active developer community around the project.
Samsung OSG Senior Strategist Guy Martin presents at Korea Linux Forum on some of the lessons he's acquired for helping companies move forward in open source. These lessons come both from previous consulting roles as well as in helping Samsung start it's new open source group.
This document discusses Samsung's work with open source projects like Tizen and IoTivity to develop Internet of Things (IoT) technologies. It describes how IoTivity provides a framework for seamless device connectivity and interoperability using open standards and security. The document outlines examples of building an IoT server on a Raspberry Pi device running Tizen to share GPS data, and creating IoT clients on Tizen mobile and wearable devices to display the GPS information. It also references additional showcases of using IoTivity to control devices over IP networks and bridge to automotive standards. The goal is to make IoT development accessible to developers through open platforms and affordable hardware.
This document summarizes a presentation given by Samsung on the Open Interconnect Consortium (OIC) and its collaboration with the Automotive Grade Linux (AGL) project. Some key points:
- OIC is an open source consortium formed in 2014 with the vision of connecting 50 billion devices through an open and interoperable standard for device discovery and connectivity. It has over 165 members including Samsung, Intel, Cisco and GE.
- OIC develops specifications and a reference open source implementation called IoTivity. IoTivity provides functionality for device discovery, data transmission, security and more.
- Samsung demonstrated OIC and AGL integration at CES 2016, showing control of an OIC device from
The document provides an overview of IoTivity, an open source framework for connecting devices. It discusses how IoTivity implements the Open Connectivity Foundation standard to provide seamless discovery and communication between devices. Examples are shown of building an IoTivity server on Arduino and clients on Tizen to create a multi-controlled binary switch that can be read and written to by multiple connected clients. The document encourages exploring IoT development and discusses how IoTivity supports connectivity across various hardware platforms.
Philippe Coval gave a presentation on prototyping IoT devices using GNU/Linux and the IoTivity framework. The presentation covered initializing IoTivity clients and servers, registering resources, discovering resources over the network, and implementing basic GET and POST operations to control resources representing physical devices. Code examples were provided using both C++ for Linux systems and C for resource-constrained MCUs.
This document discusses running JavaScript on microcontrollers. It evaluates two JavaScript engines: JavaScriptCore and Duktape. JavaScriptCore was too large, with initial attempts resulting in binaries over 2 MB. Duktape produced smaller binaries down to 108 KB and passed 96.5% of ECMAScript tests. While most SunSpider tests failed due to timeouts or memory limits, Duktape shows promise for running JavaScript on resource-constrained microcontroller devices.
IBM Runtimes Performance Observations with Apache SparkAdamRobertsIBM
In this talk presented at the Spark London meetup on the 23rd of November 2016 I have detailed our findings in IBM's Runtime Technologies department around Apache Spark. I share best practices we observed by profiling Spark on a variety of workloads I have covered and help Spark users to profile their own applications. I've also touched on how anybody can develop using fast networking capabilities (RDMA) and can achieve substantial performance speedups using GPUs.
This is a reupload of the talk I delivered at the Spark London Meetup group, November 2016. Original link to the event: https://www.meetup.com/Spark-London/events/235626954/
I share observations and best practices.
Allegorithmic developed Substance, a middleware for procedurally generating textures on CPUs to reduce texture memory and streaming bottlenecks. Substance uses a node-based graph to procedurally generate textures. It is designed to take advantage of multi-core CPUs through techniques like task parallelism, data parallelism, and lockless synchronization to efficiently generate textures across CPU cores in parallel. Testing showed Substance could utilize 4 CPU cores to generate textures 3.8 times faster than a single core, helping to maintain high framerates during texture streaming.
This document summarizes 0xdroid, a community-developed Android distribution created by 0xlab. Key points include:
- 0xdroid is an open-source Android distribution maintained by 0xlab that also serves as a community platform for innovation.
- The goals of 0xdroid include providing a usable version quickly, designing for laziness with an easy installer, having more transparent development through issue tracking, and ensuring work can be reused through patch-based contributions.
- 0xlab contributes code to other Android projects like Android-x86 and CyanogenMod and interacts positively at the source code level to further innovation as a community.
The document introduces AppliedMicro's X-Gene® processor technology. The X-Gene 1 and X-Gene 2 are server-on-a-chip solutions that integrate ARMv8 CPU cores, memory controllers, networking, storage and I/O interfaces while achieving high performance and low power. Benchmark results show the X-Gene processors providing competitive performance to Intel Xeon chips while using less power. The high-density, low-power X-Gene chips allow building scale-out servers that deliver significantly higher performance and lower costs than traditional scale-up servers for various workloads like web applications and databases.
cachegrand: A Take on High Performance CachingScyllaDB
cachegrand is what happens when you throw in a mix a SIMD-accelerated hashtable — capable of performing parallel GET operations without locks or busy-wait loops (e.g. atomic operations) — with fibers, io_uring, your own I/O library, your own memory allocator, and an in-memory & on-disk time series database!
Written in C, built from scratch, natively modular - currently working on Redis compatibility — it's a platform that can deliver very high QPS with low latencies for caching and data streaming with the door open to supporting business logic in Rust & WebAssembly down the line.
This session will focus on developing techniques and OS components used highlighting how they can provide an extra boost to your platforms, no matter the programming language.
FOSDEM 2019: M3, Prometheus and Graphite with metrics and monitoring in an in...Rob Skillington
Rob Skillington gave a presentation on observability and M3, Uber's open source time series database. Some key points:
- M3 was created at Uber to handle high dimensionality metrics at massive scale, storing over 11 billion unique time series.
- It uses techniques like Roaring Bitmaps to efficiently store and query metrics with many dimensions or tag values.
- M3 can ingest metrics from Prometheus and Graphite, storing over 33 million metrics per second while powering dashboards and 150,000 alerts.
- The open source M3DB component can run standalone or on Kubernetes, providing a scalable time series storage solution for complex monitoring needs.
The document describes an MP3 player project using an Atmega microcontroller. The MP3 player stores audio files in MP3 format on an SD card and allows users to select songs using a keypad. It includes an Atmega 162 microcontroller to control an LCD display and keypad, as well as a DSP processor to convert MP3 files to clear audio in real time. The document discusses the components used, including the microcontroller, LCD, DSP processor, and USBASP programmer. It provides details on how these components interface and are programmed to build a functioning MP3 player.
ARM stands for Advanced RISC Machine and is one of the most widely used processor architectures. It was introduced in 1978 by the University of Cambridge and first produced commercially in 1985. ARM has a RISC architecture and 32-bit instruction set. It uses a modified Harvard architecture with separate caches for instructions and data. ARM is widely used in embedded and mobile devices due to its low power consumption. Its licensing model allows many companies to produce ARM-based chips.
This document discusses various techniques for optimizing code on ARM processors, including using conditional instructions, benchmarking with cycle counts, utilizing hardware features like multiplication and DMA, choosing optimal data structures and algorithms, and using mutexes and exclusive monitors for thread synchronization. Some key points covered are using bitwise operations instead of shifts/masks when possible, structs for packing data efficiently in memory, and preferring to reuse existing libraries over reimplementing functionality.
The document describes an IBM workshop on CAPI and OpenCAPI technologies. It provides an overview of FPGA acceleration using SNAP, including how SNAP simplifies FPGA programming using a C/C++ based approach. Examples of use cases for FPGA acceleration like video processing and machine learning inference are also presented.
AWS introduced new Graviton3 processors and GP3 volumes to provide better performance and lower costs compared to similar EC2 instances and EBS volumes. Graviton3 offers up to 40% better price/performance versus comparable x86-based instances. GP3 volumes allow independent control of IOPS and throughput, providing up to 3,000 IOPS for free and throughput up to 1,000 MiB/s. Migrating from GP2 to GP3 can save up to 20% on EBS costs. However, workloads may see lower performance on Graviton3 due to porting requirements, so testing is needed to validate performance.
Optimizing Servers for High-Throughput and Low-Latency at DropboxScyllaDB
I'm going to discuss the efficiency/performance optimizations of different layers of the system. Starting from the lowest levels like hardware and drivers: these tunings can be applied to pretty much any high-load server. Then we’ll move to Linux kernel and its TCP/IP stack: these are the knobs you want to try on any of your TCP-heavy boxes. Finally, we’ll discuss library and application-level tunings, which are mostly applicable to HTTP servers in general and nginx/envoy specifically.
For each potential area of optimization I’ll try to give some background on latency/throughput tradeoffs (if any), monitoring guidelines, and, finally, suggest tunings for different workloads.
Also, I'll cover more theoretical approaches to performance analysis and the newly developed tooling like `bpftrace` and new `perf` features.
The document provides an overview of big data analysis and parallel programming tools for R. It discusses what constitutes big data, popular big data applications, and relevant hardware and software. It then covers parallel programming challenges and approaches in R, including using multicore processors with the multicore package, SMP and cluster programming with foreach and doMC/doSNOW, NoSQL databases like Redis with doRedis, and job scheduling. The goal is to help users effectively analyze big data in R by leveraging parallelism.
Five cool ways the JVM can run Apache Spark fasterTim Ellison
The IBM JVM runs Apache Spark fast! This talk explains some of the findings and optimizations from our experience of running Spark workloads.
The talk was originally presented at the SparkEU Summit 2015 in Amsterdam.
The document discusses challenges and opportunities in connecting the Internet of Things (IoT) to the World Wide Web. It outlines differences between developing for the web and IoT, including in goals, architectures, standards, hardware, and market adoption. It proposes that the "Web of Things" aims to reduce complexity for developers by linking the physical world to the open web ecosystem using open standards and interoperable data models. Connecting IoT to the web could enable more programmable and shared applications and services.
Philippe Coval from Samsung Open Source Group gave a presentation on using JavaScript for IoT applications. He discussed how JavaScript is well-suited for IoT due to its widespread use among web developers. He demonstrated how to set up the IoT.js runtime environment and write simple JavaScript programs to access sensors, communicate over HTTP, and interface with IoT platforms and standards. He also proposed challenges for a hackathon around connecting vehicles to nearby devices using web technologies.
Spawny is a new approach to login capabilities that aims to unify the workflow for developers and users. It provides a text-mode greeter that can be used as a fallback and has no dependencies. Spawny can also be used as a subproject in other projects to set a default greeter. Future goals include monitoring greeter hangups, adding secure lockscreen capabilities, and supporting fingerprint readers.
Philippe Coval from Samsung Open Source Group discusses how the automotive industry is becoming more data-driven and connected. The Open Connectivity Foundation is working to provide common standards and open-source implementations for interconnecting Internet of Things devices across different domains, including smart home, automotive, and beyond. IoTivity is an open-source project that implements OCF specifications to allow devices to communicate in a common way. OCF aims to define common resources and interfaces for connected cars to ensure interoperability.
This document discusses Samsung's involvement in open source projects related to automotive and IoT connectivity standards. It provides an overview of the Open Connectivity Foundation (OCF) and its mission to enable interoperability between IoT devices. It also summarizes Samsung's work integrating OCF technologies like IoTivity into automotive platforms and operating systems including Tizen, Automotive Grade Linux (AGL), and the GENIVI development platform.
The document discusses Internet of Things (IoT) interoperability and introduces IoTivity, an open source framework for connecting IoT devices. It describes IoTivity's architecture, which uses standards like CoAP and security protocols to allow different types of devices to communicate. Examples are provided of how IoTivity can be used to build IoT applications that allow devices to discover, control, and send data to each other.
This document discusses how IoTivity, an open source framework for device connectivity, is supported in the Tizen open source software platform. It provides an overview of Tizen profiles and platforms, and how IoTivity has been integrated at both the platform level and as native applications. Examples are given showing IoTivity running on Tizen devices including a mobile phone and devices using the Yocto Project. The document encourages further exploration and contributions to expand IoTivity support across additional Tizen profiles, devices, and operating systems.
This presentation explores code comprehension challenges in scientific programming based on a survey of 57 research scientists. It reveals that 57.9% of scientists have no formal training in writing readable code. Key findings highlight a "documentation paradox" where documentation is both the most common readability practice and the biggest challenge scientists face. The study identifies critical issues with naming conventions and code organization, noting that 100% of scientists agree readable code is essential for reproducible research. The research concludes with four key recommendations: expanding programming education for scientists, conducting targeted research on scientific code quality, developing specialized tools, and establishing clearer documentation guidelines for scientific software.
Presented at: The 33rd International Conference on Program Comprehension (ICPC '25)
Date of Conference: April 2025
Conference Location: Ottawa, Ontario, Canada
Preprint: https://arxiv.org/abs/2501.10037
FL Studio Producer Edition Crack 2025 Full Versiontahirabibi60507
Copy & Past Link 👉👉
http://drfiles.net/
FL Studio is a Digital Audio Workstation (DAW) software used for music production. It's developed by the Belgian company Image-Line. FL Studio allows users to create and edit music using a graphical user interface with a pattern-based music sequencer.
Discover why Wi-Fi 7 is set to transform wireless networking and how Router Architects is leading the way with next-gen router designs built for speed, reliability, and innovation.
Why Orangescrum Is a Game Changer for Construction Companies in 2025Orangescrum
Orangescrum revolutionizes construction project management in 2025 with real-time collaboration, resource planning, task tracking, and workflow automation, boosting efficiency, transparency, and on-time project delivery.
Interactive Odoo Dashboard for various business needs can provide users with dynamic, visually appealing dashboards tailored to their specific requirements. such a module that could support multiple dashboards for different aspects of a business
✅Visit And Buy Now : https://bit.ly/3VojWza
✅This Interactive Odoo dashboard module allow user to create their own odoo interactive dashboards for various purpose.
App download now :
Odoo 18 : https://bit.ly/3VojWza
Odoo 17 : https://bit.ly/4h9Z47G
Odoo 16 : https://bit.ly/3FJTEA4
Odoo 15 : https://bit.ly/3W7tsEB
Odoo 14 : https://bit.ly/3BqZDHg
Odoo 13 : https://bit.ly/3uNMF2t
Try Our website appointment booking odoo app : https://bit.ly/3SvNvgU
👉Want a Demo ?📧 [email protected]
➡️Contact us for Odoo ERP Set up : 091066 49361
👉Explore more apps: https://bit.ly/3oFIOCF
👉Want to know more : 🌐 https://www.axistechnolabs.com/
#odoo #odoo18 #odoo17 #odoo16 #odoo15 #odooapps #dashboards #dashboardsoftware #odooerp #odooimplementation #odoodashboardapp #bestodoodashboard #dashboardapp #odoodashboard #dashboardmodule #interactivedashboard #bestdashboard #dashboard #odootag #odooservices #odoonewfeatures #newappfeatures #odoodashboardapp #dynamicdashboard #odooapp #odooappstore #TopOdooApps #odooapp #odooexperience #odoodevelopment #businessdashboard #allinonedashboard #odooproducts
Douwan Crack 2025 new verson+ License codeaneelaramzan63
Copy & Paste On Google >>> https://dr-up-community.info/
Douwan Preactivated Crack Douwan Crack Free Download. Douwan is a comprehensive software solution designed for data management and analysis.
PDF Reader Pro Crack Latest Version FREE Download 2025mu394968
🌍📱👉COPY LINK & PASTE ON GOOGLE https://dr-kain-geera.info/👈🌍
PDF Reader Pro is a software application, often referred to as an AI-powered PDF editor and converter, designed for viewing, editing, annotating, and managing PDF files. It supports various PDF functionalities like merging, splitting, converting, and protecting PDFs. Additionally, it can handle tasks such as creating fillable forms, adding digital signatures, and performing optical character recognition (OCR).
Adobe Master Collection CC Crack Advance Version 2025kashifyounis067
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe Master Collection CC (Creative Cloud) is a comprehensive subscription-based package that bundles virtually all of Adobe's creative software applications. It provides access to a wide range of tools for graphic design, video editing, web development, photography, and more. Essentially, it's a one-stop-shop for creatives needing a broad set of professional tools.
Key Features and Benefits:
All-in-one access:
The Master Collection includes apps like Photoshop, Illustrator, InDesign, Premiere Pro, After Effects, Audition, and many others.
Subscription-based:
You pay a recurring fee for access to the latest versions of all the software, including new features and updates.
Comprehensive suite:
It offers tools for a wide variety of creative tasks, from photo editing and illustration to video editing and web development.
Cloud integration:
Creative Cloud provides cloud storage, asset sharing, and collaboration features.
Comparison to CS6:
While Adobe Creative Suite 6 (CS6) was a one-time purchase version of the software, Adobe Creative Cloud (CC) is a subscription service. CC offers access to the latest versions, regular updates, and cloud integration, while CS6 is no longer updated.
Examples of included software:
Adobe Photoshop: For image editing and manipulation.
Adobe Illustrator: For vector graphics and illustration.
Adobe InDesign: For page layout and desktop publishing.
Adobe Premiere Pro: For video editing and post-production.
Adobe After Effects: For visual effects and motion graphics.
Adobe Audition: For audio editing and mixing.
Download YouTube By Click 2025 Free Full Activatedsaniamalik72555
Copy & Past Link 👉👉
https://dr-up-community.info/
"YouTube by Click" likely refers to the ByClick Downloader software, a video downloading and conversion tool, specifically designed to download content from YouTube and other video platforms. It allows users to download YouTube videos for offline viewing and to convert them to different formats.
Exploring Wayland: A Modern Display Server for the FutureICS
Wayland is revolutionizing the way we interact with graphical interfaces, offering a modern alternative to the X Window System. In this webinar, we’ll delve into the architecture and benefits of Wayland, including its streamlined design, enhanced performance, and improved security features.
Avast Premium Security Crack FREE Latest Version 2025mu394968
🌍📱👉COPY LINK & PASTE ON GOOGLE https://dr-kain-geera.info/👈🌍
Avast Premium Security is a paid subscription service that provides comprehensive online security and privacy protection for multiple devices. It includes features like antivirus, firewall, ransomware protection, and website scanning, all designed to safeguard against a wide range of online threats, according to Avast.
Key features of Avast Premium Security:
Antivirus: Protects against viruses, malware, and other malicious software, according to Avast.
Firewall: Controls network traffic and blocks unauthorized access to your devices, as noted by All About Cookies.
Ransomware protection: Helps prevent ransomware attacks, which can encrypt your files and hold them hostage.
Website scanning: Checks websites for malicious content before you visit them, according to Avast.
Email Guardian: Scans your emails for suspicious attachments and phishing attempts.
Multi-device protection: Covers up to 10 devices, including Windows, Mac, Android, and iOS, as stated by 2GO Software.
Privacy features: Helps protect your personal data and online privacy.
In essence, Avast Premium Security provides a robust suite of tools to keep your devices and online activity safe and secure, according to Avast.
Get & Download Wondershare Filmora Crack Latest [2025]saniaaftab72555
Copy & Past Link 👉👉
https://dr-up-community.info/
Wondershare Filmora is a video editing software and app designed for both beginners and experienced users. It's known for its user-friendly interface, drag-and-drop functionality, and a wide range of tools and features for creating and editing videos. Filmora is available on Windows, macOS, iOS (iPhone/iPad), and Android platforms.
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe Illustrator is a powerful, professional-grade vector graphics software used for creating a wide range of designs, including logos, icons, illustrations, and more. Unlike raster graphics (like photos), which are made of pixels, vector graphics in Illustrator are defined by mathematical equations, allowing them to be scaled up or down infinitely without losing quality.
Here's a more detailed explanation:
Key Features and Capabilities:
Vector-Based Design:
Illustrator's foundation is its use of vector graphics, meaning designs are created using paths, lines, shapes, and curves defined mathematically.
Scalability:
This vector-based approach allows for designs to be resized without any loss of resolution or quality, making it suitable for various print and digital applications.
Design Creation:
Illustrator is used for a wide variety of design purposes, including:
Logos and Brand Identity: Creating logos, icons, and other brand assets.
Illustrations: Designing detailed illustrations for books, magazines, web pages, and more.
Marketing Materials: Creating posters, flyers, banners, and other marketing visuals.
Web Design: Designing web graphics, including icons, buttons, and layouts.
Text Handling:
Illustrator offers sophisticated typography tools for manipulating and designing text within your graphics.
Brushes and Effects:
It provides a range of brushes and effects for adding artistic touches and visual styles to your designs.
Integration with Other Adobe Software:
Illustrator integrates seamlessly with other Adobe Creative Cloud apps like Photoshop, InDesign, and Dreamweaver, facilitating a smooth workflow.
Why Use Illustrator?
Professional-Grade Features:
Illustrator offers a comprehensive set of tools and features for professional design work.
Versatility:
It can be used for a wide range of design tasks and applications, making it a versatile tool for designers.
Industry Standard:
Illustrator is a widely used and recognized software in the graphic design industry.
Creative Freedom:
It empowers designers to create detailed, high-quality graphics with a high degree of control and precision.
F-Secure Freedome VPN 2025 Crack Plus Activation New Versionsaimabibi60507
Copy & Past Link 👉👉
https://dr-up-community.info/
F-Secure Freedome VPN is a virtual private network service developed by F-Secure, a Finnish cybersecurity company. It offers features such as Wi-Fi protection, IP address masking, browsing protection, and a kill switch to enhance online privacy and security .
Adobe After Effects Crack FREE FRESH version 2025kashifyounis067
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe After Effects is a software application used for creating motion graphics, special effects, and video compositing. It's widely used in TV and film post-production, as well as for creating visuals for online content, presentations, and more. While it can be used to create basic animations and designs, its primary strength lies in adding visual effects and motion to videos and graphics after they have been edited.
Here's a more detailed breakdown:
Motion Graphics:
.
After Effects is powerful for creating animated titles, transitions, and other visual elements to enhance the look of videos and presentations.
Visual Effects:
.
It's used extensively in film and television for creating special effects like green screen compositing, object manipulation, and other visual enhancements.
Video Compositing:
.
After Effects allows users to combine multiple video clips, images, and graphics to create a final, cohesive visual.
Animation:
.
It uses keyframes to create smooth, animated sequences, allowing for precise control over the movement and appearance of objects.
Integration with Adobe Creative Cloud:
.
After Effects is part of the Adobe Creative Cloud, a suite of software that includes other popular applications like Photoshop and Premiere Pro.
Post-Production Tool:
.
After Effects is primarily used in the post-production phase, meaning it's used to enhance the visuals after the initial editing of footage has been completed.
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentShubham Joshi
A secure test infrastructure ensures that the testing process doesn’t become a gateway for vulnerabilities. By protecting test environments, data, and access points, organizations can confidently develop and deploy software without compromising user privacy or system integrity.
Societal challenges of AI: biases, multilinguism and sustainabilityJordi Cabot
Towards a fairer, inclusive and sustainable AI that works for everybody.
Reviewing the state of the art on these challenges and what we're doing at LIST to test current LLMs and help you select the one that works best for you
Societal challenges of AI: biases, multilinguism and sustainabilityJordi Cabot
JerryScript: An ultra-lighteweight JavaScript Engine for the Internet of Things
1. 1Samsung Open Source Group
JerryScript
An ultra-lightweight JavaScript engine for the Internet of Things
Tilmann Scheller
Principal Compiler Engineer
[email protected]
Samsung Open Source Group
Samsung Research UK
OpenIoT Summit Europe 2016
Berlin, Germany, October 11 – 13, 2016
2. 2Samsung Open Source Group
Overview
● Introduction
● JerryScript
● JerryScript Internals Overview
● Memory consumption/Performance
● Demo
● Future work
● Summary
4. 4Samsung Open Source Group
What is JerryScript?
● A really lightweight JavaScript engine
● Has a base footprint of ~3KB of RAM
● Optimized for microcontrollers
● Originally developed from scratch by Samsung
● JerryScript is an open source project released under the
Apache License 2.0
● Actively developed on GitHub
5. 5Samsung Open Source Group
Why JavaScript on microcontrollers?
● There's a huge pool of JavaScript developers
● Opens up the possibility for web developers to easily write
software for embedded devices
● Performance overhead of JavaScript less of an issue for
control tasks
● Increased productivity, shorter time to market
● Ability to load code dynamically over the network
● Security: Executing JavaScript code is safer than executing
arbitrary native code
7. 7Samsung Open Source Group
JerryScript History
● Development started in June 2014
● Released as open source in June 2015
● JerryScript passed 100% of the test262 conformance test
suite in August 2015
● Rewritten compact byte code implementation landed in
January 2016
● JerryScript 1.0 released in September 2016
● Current focus on usability
8. 8Samsung Open Source Group
JerryScript
● Heavily optimized for a low memory footprint
● Interpreter-only
● Compact object representation
● Compressed pointers
● No AST, directly creating byte code
● Compact byte code heavily optimized for low memory
consumption
9. 9Samsung Open Source Group
JerryScript Portability
● Extremely portable
● Self-contained
● Small C library
● Can run bare-metal
● Supports the STM32F4, Arduino 101, FRDM-K64F,
ESP8266 (experimental) boards
● OS support: NuttX, Zephyr, mbed OS, RIOT
● Runs on Linux/macOS as well
10. 10Samsung Open Source Group
JerryScript
● Written in C99
● About 84KLOC
● Code size 156KB when compiled with GCC in LTO mode
for ARM Thumb-2
● Implements the entire ECMAScript 5.1 standard, passes
100% of the test262 conformance test suite
● C API for embedding JerryScript
● Byte code snapshot feature
11. 11Samsung Open Source Group
Target hardware
● STM32F4 developer board
● Cortex-M4F clocked at 168 MHz
● 192KB of RAM
● 1MB of flash memory
12. 12Samsung Open Source Group
Target hardware
● Particle Photon board
● Cortex-M3 clocked at 120 MHz
● 128KB of RAM
● 1MB of flash memory
● Wi-Fi integrated
● Small footprint (37mm x 20mm)
17. 17Samsung Open Source Group
Parser Overview
● Optimized for low memory consumption
– E.g. only 41KB of memory is required to parse the 95KB of
concatenated IoT.js source code
● 12.5KB byte code, 10KB literal references,
12.2KB literal storage data, 7KB for parser temporaries
● Generates byte code directly
– No intermediate representation (e.g. AST)
● Recursive descent parser
– The parser uses a byte array for the parser stack
instead of calling functions recursively
18. 18Samsung Open Source Group
Compact Byte Code (CBC)
● CBC is a variable-length byte code
● Currently 306 opcodes are defined
– Majority of the opcodes are variants of the same operation
● E.g. “this.name” is a frequent expression in JavaScript so
an opcode is defined to resolve this expression
– Usually this operation is constructed from multiple opcodes:
op_load_this, op_load_name, op_resolve
– Other examples: “a.b(c,d)” or “i++”
19. 19Samsung Open Source Group
Compact Byte Code Interpreter
● The interpreter is a combination of a register and stack
machine
– The stack is used to compute temporary values
– The registers are used to store local variables
● Byte code decompression
– Byte code instructions are decoded into a maximum of
three atomic instructions and those instructions are
executed by the interpreter
20. 20Samsung Open Source Group
Compressed Pointers
● Compressed pointers are 16-bit values, which represent
8 byte aligned addresses on the JerryScript heap
– Saves 50% of memory on 32-bit systems
● The JerryScript heap is a linear memory space with a
maximum size of 512KB (equals to UINT16_MAX * 8)
– UINT16_MAX is 65535
● Pointer compression can also be turned off to enable a
maximum heap size of 4GB
21. 21Samsung Open Source Group
Value Representation
● JavaScript is a dynamically typed language
– All values carry type information as well
● ECMAScript values in JerryScript are 32-bit wide
– They can be primitive values (true, null, undefined, …)
or pointers to numbers, strings or objects
● On 32-bit systems, 29 bits are enough to directly store
any 8 byte aligned 32-bit pointer
22. 22Samsung Open Source Group
String Representation
● String descriptor is 8 bytes long
● Several string types are supported in JerryScript besides
the usual character array
– Short strings: Stored in the 32-bit value field
– Magic (frequently used) string indices
23. 23Samsung Open Source Group
Number Representation
● Numbers are double precision values by default
● Optional mode for single precision values
– Single precision numbers do not satisfy the
ECMAScript requirements but can be computed faster,
trading precision for performance
24. 24Samsung Open Source Group
Object Representation
● Garbage collector can visit all existing objects
● Objects have a property list
– Named data, named accessor properties
– Internal properties
● Functions are objects in JavaScript
29. 29Samsung Open Source Group
Pong Demo
● Implementation of the classic Pong game
● Display shared across two devices
● Each device drives one LED matrix
● Implemented as a Node.js module
● "AI" oppenent running on the microcontroller
30. 30Samsung Open Source Group
Pong Demo
Raspberry Pi 2
(1GB RAM, 8GB Flash)
Pong Client
Node.js
V8
Linux
STM32F4 board
(192KB RAM, 1MB Flash)
Pong Server
IoT.js
JerryScript
NuttX
Ethernet
USB Keypad
LED Matrix LED Matrix
I2C I2C
32. 32Samsung Open Source Group
JerryScript 6LoWPAN Demo
● Multiplayer implementation of the classic Pong/Tetris
game
● Each device drives one LED matrix as display
● Game implemented in JavaScript
● Running on Photon boards
● Low-power wireless communication via 6LoWPAN
33. 33Samsung Open Source Group
JerryScript 6LoWPAN Demo
Raspberry Pi 2
(1GB RAM, 8GB Flash)
Pong/Tetris
JerryScript
Linux
Particle Photon
(128KB RAM, 1MB Flash)
Pong/Tetris
JerryScript
RIOT
USB Keypad
LED Matrix LED Matrix
I2C I2C
Switches via GPIO
6LoWPAN
Live demo will be shown
during ELCE Technical Showcase!
Wednesday, 5:20 PM - 7:00 PM
35. 35Samsung Open Source Group
Future work
● Further performance and memory optimizations
● Debugging support
● Memory profiling
● Selected ES6 features
● Support for more boards
37. 37Samsung Open Source Group
Summary
● Significantly lowers barrier of entry for JavaScript
development targeting heavily constrained embedded
devices
● Speeds up development
● Active community
● More information on http://jerryscript.net
● Looking for bug reports and feedback