PicoLibC is a Lightweight C library for Embedded Systems


Well-known developer,  Keith Packard has recently announced the launch of “picolibc” through his blog.  Picolibc is a C Library for embedded systems which  is suitable for small micro-controllers, and this standard C library API’s allows to run even in low memory (RAM) devices. This is an upgraded version of “newlib-nano” with few interesting changes which includes replacement of “stdio” lib with ATMEL-specific printf code adopted from avrlibc. As part of this library, Keith also launched picocrt,  which is responsible for initializing memory and invoking various constructors before calling its own C program, the main function. Features picolibc is a revised version of newlibc, without full-fledged stdio lib and uses lightweight stdio lib from avrlibc, which is more suitable to low memory embedded devices. Meson build-system eases the build process of picolibc source tree for various target platform and hardware. Updated the math test suite to use Glibc as a reference The library is BSD licensed, and non-BSD components were removed […]

Coocox CoIDE and GCC Arm Embedded Toolchain Download Links

I’ve been playing with RAK811 LoRa GPS tracker last week-end and earlier this week, and Rak Wireless provides open source firmware for the board that can be work on with Arm Keil or Coocox CoIDE tools. The former requires registration, and the latter is freeware and appears to be preferred by Rakwireless guys. The only problem is that CooCox website have been down for several days, so I could not download the IDE from the official website. So instead I downloaded it from Softpedia together with a GCC toolchain. Sadly the version in Softpedia and the toolchain are outdated, so the firmware won’t build. I had installed CooCox CoIDE v 1.7.8 with GNU Tools ARM Embedded 4.7 2013q. Rakwireless engineers informed me they used CoIDE v 2.0.6 with gcc-arm-none-eabi-5_4-2016q3-20160926-win32. I could not find it online, so they added both to their RAK811 documentation. You’ll find the two files under Tools: CoIDE-V2Beta-20170117.exe and gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe. But again, it took me a few […]

Getting Started with MediaTek X20 Android Development Board

Thanks to CNX for helping me get a hand on the 96Boards compliant Mediatek X20 board that was generously donated by Seeed Studio. In this article, I will walk through the steps to get the board up and running and also compile Android from the source code. The current Android is version 6. Unboxing the Beast First Boot Up The board boots up from the eMMC, and the first time you boot up you will get Android screen as shown in Figure-9. This is the default Android image from the factory, which surprisingly looks like it was setup for a phone screen mode, which is not sufficient for a HDMI monitor. It would be better to install the images that are made available at Linaro website or build your own. See the other section to flash the board with different images. Switching to Fastboot Mode Flashing image files are done using fastboot tool in bootloader mode. There are 2 ways […]

Amlogic S905 Source Code Published – Linux, U-Boot, Mali-450 GPU and Other Drivers

Amlogic has an open linux website where they regurlarly release GPL source code, and with Amlogic S905 devices coming to market, they’ve released a few tarballs at the beginning of the month including Linux 3.14 source code, U-boot source code, and Mali-450MP GPU kernel source code (obviously not userspace), as well as some other drivers for WiFi, NAND flash, PMU, TVIN, etc… Let’s get to the download links: Linux 3.14.29 source code U-boot 2015.01 GPU drivers for ARM Mali-450MP Broadcom and Realtek Wifi drivers and firmware (November 4, 2015) can be found @ http://openlinux.amlogic.com:8000/download/ARM/wifi/. Other kernel modules (November 4, 2015) @ http://openlinux.amlogic.com:8000/download/ARM/modules/. I quickly tried to build the Linux source. If you’ve never build a 64-bit ARM kernel or app before, you’ll fist need to install the toolchain. I installed the one provided with Ubuntu 14.04:

Now extract the tarball and enter the source directory:

At first I had a build failure due to a missing directory, so […]

How to Install Ubuntu ARM64 on Nexus 9 Tablet

HTC Nexus 9 is one of the first 64-bit ARM platform with powerful ARMv8 cores (e.g. not Cortex A53) that both commercially available, and relatively affordable at $399 to $599, at least significantly cheaper than the server boards such as Applied Micro X-C1. The tablet comes with Android 5.0 Lollipop, but for those of you who wish to have an ARM64 platform running Ubuntu or other 64-bit Linux operating systems, Ubuntu installation instructions provided by Ryan Houdek, Dolphin emulator developer, might come handy, especially it won’t affect your Android installation provided you have already unlocked your bootloader. The instructions are fairly long so I won’t reproduce them all here, so I recommend you check the detailed instructions on XDA, but the short summary below may give an idea of the amount of work needed: Install dependencies such as Aarch64 toolchain:

Build a initramfs with buildroot. You’ll need to enable Aarch64 Linaro toolchain, set consolle output to ttyFIQ0, and select […]

TyGL OpenGL ES 2.0 Backend for WebKit Speeds Up Web Rendering by Up to 11 Times

ARM, Szeged University in Hungary, and Samsung Research UK have been working on TyGL, a new backend for WebKit accelerated with OpenGL ES2.0, and developed and tested on ARM Mali-T628 GPU found in Samsung ARM Chromebook. It will typically provide 1.5 to 4.5 times higher performance, but in the best cases, it can achieve up to eleven times the performance of a CPU-only rendered page. The key features of TyGL include: Web rendering accelerated by GPU – Batching of draw calls delivers better results on GPUs. TyGL groups commands together to avoid frequent state changes while calling the Graphics Context API. Automatic shader generation – TyGL generates complex shaders from multiple shader fragments, and ensures the batches fit into the shader cache of the GPU. Trapezoid based path rendering – Work in progress. It will leverage GPU capabilities such as the Pixel Local Storage extension for OpenGL ES. No software fallback – Complete GPU-based hardware accelerated solution with no dependency […]

U-Boot and Linux Source Code for ODROID-C1 Board Has Been Released

Hardkernel ODROID-C1 board, a more powerful $35 alternative to the Raspberry Pi, garnered a lot of attention when it was announced last week. At the time source code was not available, but as scheduled, U-boot and Linux source code is now available, and the full Android SDL should be released on February 2015. Instructions to get the code, and build both Linux and U-boot are available on ODROID-C1 Wiki, and I’ve just given a try to Linux instructions myself to see if I would encounter any issues in Ubuntu 14.04. Download Linaro GCC 4.7 toolchain from Linaro or Odroid website. Install the toolchain. They install it on /opt/toolchain, but instead I’ve installed in ~/opt/toochain, so I don’t need superuser permissions: mkdir -p ~/opt/toolchains tar xvf gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.bz2 -C ~/opt/toolchains/ Add the following lines to ~/.bashrc export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=~/opt/toolchains/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin:$PATH To apply change, log out and log in, or run:

Double check Linaro GCC 4.7 is installed properly: arm-linux-gnueabihf-gcc […]

How to Build Android 4.4 for Rockchip RK3288 Devices (Tronsmart Orion R28)

After blowing up my ATX power supply, and learning such things as “FULL” power supplies do exists, I finally managed to build Android for Tronsmart Orion R28 using the provided SDK. I haven’t tried to load it on the device yet, but the build could complete successfully after following the steps below in Ubuntu 14.04. The SDK is probably not specific to one device, so it might just also work on other RK3288 TV boxes and tablets. First download Android 4.4 SDK for RK3288, or use the one in the micro SD card provided with the Beta version of R28 Pro and Meta. Install some dependencies:

Extract the SDK:

And build the kernel first: Enter the kernel directory:

Change arch/arm/boot/dts/Makefile to use RK3288 device tree file instead of an RK3188 (may not be needed, but the build failed for me without that change…):

It’s also quite possible you need to extract the device tree file from […]