ArduinoShrink library slashes code size, boosts speed of Arduino AVR firmware

ArduinoShrink

Arduino AVR Core is supposed to be already efficient, as the resulting code will run on AVR ATmega168 and ATmega328 MCUs with just 16 to 32KB of internal flash storage and 8 to 16 MHz clock speeds. But Nerd Ralph felt there was space for improvement as for instance the Blink sample takes 924 bytes of flash storage when compiled for the Arduino Uno.  So he developed ArduinoShrink library with the same functions as Arduino AVR Core but enabling smaller and faster firmware files. The result is pretty impressive as we can see from the screenshot above with the Blink sample now taking just 196 bytes or an almost 80% reduction in size. So how was this feat achieved exactly? Ralph explains it in details in a blog post, but in a nutshell, the following main two steps were taken: Writing modular, self-contained code instead of providing a single static […]

Android 12 developer preview released – What’s New?

Android 12 developer preview

Google releases a new version of Android every year, and the company is now usually releasing a developer preview in February to allow feedback and testing from app developers. So here we are with the Android 12 developer preview having just been released by Google with changes ranging from trust and safety to media transcoding to support for AVIF image format. Android 12 highlights: Performance Improved Binder IPC calls – Google engineers have had a look at latency and workload distribution, and made optimizations that reduce the median experience. This has yielded roughly a 2x performance increase on Binder calls overall, and up to a 47x improvement in refContentProvider(), 15x in releaseWakeLock(), and 7.9x in JobScheduler.schedule(). Foreground service optimizations – To ensure a better experience for users, foreground service starts from the background will be blocked for apps that are targeting the new platform. Android 12 will also delay the […]

JPEGDEC is a Faster JPEG Arduino Library Designed for 32-bit MCUs

In order to ensure software compatibility, Arduino libraries are supposed to work on various types of hardware from 8-bit microcontrollers with a limited amount of memory to more powerful 32-bit chips like STM32 Arm Cortex-M MCU or ESP32 dual-core Tensilica WiSoC that can access a larger amount of RAM. This is all good, but in some cases, this may affect performance. Larry Bank noticed this when looking for a JPEG viewers for Arduino and only found ones which sacrificed speed to work on MCUs with very little RAM. So he started to work on JPEDDEC JPEG Arduino library optimized for speed and compatible with any MCU with at least 20K of RAM. Optimizations go beyond just loading more data into memory, as Larry explains in a blog post, the library also performs the removal of stuffed bytes, optimize the Huffman decode and DCT parts, and more. Some of the key […]

Perfetto Profiler Now Supports Mali GPU Hardware Counters via Panfrost

Perfetto Mali GPU Profiling

Perfetto is an open-source system profiler, app tracer, and trace analyzer for Linux, Android & Chrome platforms, and user-space apps. The program can already visualize CPU and memory usage, as well as power consumption.  GPU support is more limited with the program only capable of sampling the GPU frequency when the driver outputs that information via ftrace. When Perfetto is also extendable thanks to a Tracing C++ SDK that “allows userspace applications to emit trace events and add more app-specific context to a Perfetto trace”. Collabora made use of the tracing SDK to add support for Mali Midgard GPU performance profiling in gfx-pps project using the Mali GPU hardware counters exposed via Panfrost open-source Mali GPU driver. After following the installation instructions, you’ll be able to run the following executables for tracing and profiling: tracedtracing service. traced_probes OS probes service. perfetto command-line tool for recording traces. producer-gpuproviding the Panfrost data […]

ZS1100A IoT Power Meter Supports Sigrok Open-Source Software (Crowdfunding)

ZS110A power meter

A few months ago, I tested Qoitech Otii Arc power meter & DAQ system designed for developers of IoT devices, and fount out it would be incredibly useful to developers of battery-operated devices since it shows voltage and current graphs synchronized with the serial output making it easy to see where software might be optimized. The system can also capture analog and digital signals from the DUT and emulate batteries with user-defined characteristics. But this weekend, I’ve come across a very similar solution with ZS1100A IoT power meter that also happens to be compatible with Sigrok open-source signal analysis software, and the corresponding Pulseview GUI. ZS1100A IoT power meter specifications: Measurements Output Voltage Range – 0 to 6 V programmable in 10 mV steps with +/- 5mV accuracy, Current Measurement Range – -0.5 A to 1.5 A (linear range) with < 0.1 μA resolution,  accuracy of 1% of measured value […]

Getting Started with Qoitech Otii Developer Tool using ESP8266 and Raspberry Pi 4 Boards

Qoitech Otii Arc Raspberry Pi 4

Last month, I received Qoitech Otii Arc power supply, power meter, and DAQ unit that aims at helping hardware and software engineers develop energy-efficient products. I’ve now had time to test the unit with an ESP8266 board and Raspberry Pi 4 SBC, so I’ll show how to get started and my overall experience with the hardware and program. Requirements and Initial Setup The unit takes a 9V power supply or micro USB adapter as power input, but power output is done through banana plugs. I did not have any cables with banana plugs so I bought one on eBay for about $5 shipped. This cable is really convenient with output to USB (female connector), crocodile clips, and hook clips. However, as we’ll see below it may not be suitable for all types of loads, and you may have to make your own with a higher rated cable. You’ll need to […]

Linaro Connect San Diego 2019 Schedule – IoT, AI, Optimizations, Compilers and More

Linaro Connect San Diego 2019

Linaro has recently released the full schedule of Linaro Connect San Diego 2019 that will take place on  September 23-27. Even if you can’t attend, it’s always interested to check out the schedule to find out what interesting work is done on Arm Linux, Zephyr OS, and so on. So I’ve created my own virtual schedule with some of the most relevant and interesting sessions of the five-day event. Monday, September 23 14:00 – 14:25 – SAN19-101 Thermal Governors: How to pick the right one by Keerthy Jagadeesh, Software Engineer, Texas Instruments With higher Gigahertz and multiple cores packed in a SoC the need for thermal management for Arm based SoCs gets more and more critical. Thermal governors that define the policy for thermal management play a pivotal role in ensuring thermal safety of the device. Choosing the right one ensures the device performs optimally with in the thermal budget. […]

Arm Techcon 2019 Schedule – Machine Learning, Security, Containers, and More

Arm Techcon 2019

Arm TechCon will take place on October 8-10, 2019 at San Jose Convention Center to showcase new solutions from Arm and third-parties, and the company has now published the agenda/schedule for the event. There are many sessions and even if you’re not going to happen it’s always useful to checkout what will be discussed to learn more about what’s going on currently and what will be the focus in the near future for Arm development. Several sessions normally occur at the same time, so as usual I’ll make my own virtual schedule with the ones I find most relevant. Tuesday, October 8  09:00 – 09:50 – Open Source ML is rapidly advancing. How can you benefit? by Markus Levy, Director of AI and Machine Learning Technologies, NXP Over the last two years and still continuing, machine learning applications have benefited tremendously from the growing number of open source frameworks, tools, […]