Archive

Posts Tagged ‘kernel’

ARM Releases Kernel Drivers for Mali-T880 / T860 GPUs, User Space Drivers for Mali-T76x GPUs

February 23rd, 2015 16 comments

ARM Mali GPU drivers includes both open source kernel drivers, and binary userspace drivers supporting framebuffer and/ior X11 implementation. The former is rarely an issue and is quickly released, but the latter requires porting and testing for a specific hardware platform, as well legal work, which greatly delay the releases.

ARM_Mali_GPU_Drivers

Release r5p0-06rel0 for User Space Binary Drivers

Mali-T880 GPU was announced at the beginning of the month together with ARM Cortex A72, and on February 17, 2015, ARM released an update to their Mali-T600 series, Mali-T700 series & Mali-T860/T880 GPU kernel device drivers with revision r5p1-00rel0 that adds supports to Mali-T860 and Mali-T880 GPU. These open source drivers are available for Android and Linux, and also support early Mali-T700 and T600 GPUs.

Separately, the company has also released Mali-T76X GPU drivers for Firefly board powered by Rockchip RK3288 quad core Cortex A17 processor featuring a Mali-T764 GPU. The first release only supports the framebuffer driver, but ARM is expecting to be able to release the X11 version in the next release (r5p1) planned at the end of March, which means some Linux desktop graphics accelerated will soon be available on Rockchip RK3288, and not only some OpenGL ES 3.0 demos on the framebuffer. The latest release (r5p0-06rel0) also supports Exynos powered Arndale Octa board, Samsung Chromebook 2, Arndale board, and Samsung Chromebook. According to an ARM representative, Rockchip also plans to release their own Linux GPU drivers targeting “TopMetal” hardware platform (should probably read PopMetal).

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linux 3.19 Release – Main Changes, ARM and MIPS Architectures

February 9th, 2015 4 comments

Linus Torvalds released Linux Kernel 3.19 yesterday:

So nothing all that exciting happened, and while I was tempted a couple of times to do an rc8, there really wasn’t any reason for it.

Just as an example, Sasha Levin used KASan and found an interesting bug in paravirtualized spinlocks, but realistically it’s been around forever, and it’s not even clear that it can really ever trigger in practice. We’ll get it fixed, and mark it for stable, and tempting as it was, it wasn’t really a reason to delay 3.19.

And the actual fixes that went in (see appended shortlog) were all fairly small, with the exception of some medium-sized infiniband changes that were all reverting code that just wasn’t ready.

So it’s out there – go and get it. And as a result, the merge window for 3.20 is obviously also now open.

Linus

Linux 3.18 improved performance of the network stack, received BTRFS and EXT-4 file systems improvements, introduced overlayfs for live CDs, and more.

Some changes made to Linux 3.19 include:

  • Btrfs: support scrubbing and fast device replacement in RAID 5&6Btrfs  – Added support for fast & live device replacement (see btrfs-replace), much faster and efficient than adding the new device and removing the old one in separated commands. This feature could not fast-replace devices from file systems using RAID 5 & 6, this release has removed that limitation. Support for the process of scrubbing a btrfs filesystem (with btrfs-scrub) has also been added for RAID 5&6 file systems.
  • Support for Intel Memory Protection Extensions – Intel’s Memory Protection Extension (MPX) is a set of CPU instructions which brings increased robustness to software by checking pointer references usurped maliciously at runtime by buffer overflows. This Linux release adds support in the Linux kernel, although CPUs with MPX support are not sold yet (To be introduced with Intel Skylake and Goldmont microarchitectures). LWN article: Supporting Intel MPX in Linux
  • SquashFS adds LZ4 Compression Support
  • Work on year 2038 bug – do_settimeofday(), timekeeping_inject_sleeptime(), and mktime() now have 2038-safe replacements
  • The networking layer has a new subsystem for offloading switching and routing duties to suitably capable hardware
  • Audio – Intel Baytrail-based audio devices, Samsung Exynos7 I2S controllers, NXP Semiconductors TFA9879 amplifiers, and Texas Instruments TS3A227E headset chips.

Some of the new features and improvements specific to the ARM architecture include:

  • Allwinner:
    • Simple Framebuffer and USB phy driver support for usb0  for Allwinner A10 / A10s / A13 / A20 / A31 / A23
    • NAND Flash driver for Allwinner A10 & A20
    • DMAengine driver for Allwinner A23 (Shared with A31)
    • Allwinner A80 – initial machine support, basic clocks and reset, pinctrl driver, extra UART, I2C, LEDS
    • New boards: Mele M3, LeMaker Banana Pi, Merrii A80 Optimus Board, Olimex A20-OLinuXino-Lime2
  • Rockchip
    • RK3288 – Basic SMP support
    • Device tree for MarsBoard RK3066
    • Added support for rk3066-tsadc variantof rockchip_saradc
    • Add support for the mmc clock phases using the framework
  • Amlogic
    • Added DTSI for Meson8 SoCs
    • Driver for Meson IR remote control
    • Support for Meson SPIFC
  • Mediatek
    • Basic support for MT6592, MT8127 and MT8135
    • DTS for 8127 Moose board, MT8125 evaluation board, and MT6592-EVB
  • ARM64
    • Added Device tree for Juno and AMD Seattle platform
    • Added framework for legacy instruction emulation, secomp suport, SMBIOS/DMI support, etc…
  • Atmel AT91 architecture has gotten rid of board files, and is now fully converted to device tree
  • Other new device tree files: Altera Arria10 SoC, Synology DS213j/DS414, Braodcom BCM5301X devices (Asus RT-N18U, Buffalo WZR-1750DHP, Buffalo WZR-600DHP2, Netgear R6300 V2 ), DLink DIR665, Raspberry Pi model B+, Freescale LS1021A, TBS2910 Matrix ARM mini PC, NHK15 board (nomadik)

Some changes have been listed for MIPS architecture too:

  • BMIPS: Add PRId for BMIPS5200 (Whirlwind)
  • Enable VDSO randomization
  • Loongson-3 –  Add PHYS48_TO_HT40 support, Add RS780/SBX00 HPET support, Add oprofile support
  • Loongson1B – Add a clockevent/clocksource using PWM Timer
  • Loongson –  Allow booting from any core
  • Support for hybrid FPRs
  • ath25 – Add basic AR2315 SoC support, add AR2315 PCI host controller driver, add basic AR5312 SoC support
  • bcm3384 – Initial commit of bcm3384 platform support
  • ralink – add mt7628an support, add rt2880 pci driver, add support for MT7620n

A more detailed changelog for Linux 3.19 will soon be available on Kernelnewbies.org. You can also checkout ARM architecture and drivers sections for more details about changes related to ARM, MIPS and other platforms.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linaro 14.12 Release with Linux 3.18 and Android 5.0

December 19th, 2014 No comments

Linaro usually releases images and source code on the last Thursday of the month, but since most people will have long holidays for Chritsmas and New Year, the last working Thrusday of this month was yesterday (18th). Linaro 14.12 release includes Linux kernel 3.18 (baseline), Linux 3.10.62 & 3.14.26 (LSK, same versions as last month), and Android 5.0.1 Lollipop.

Here are the highlights of this release:

  • Linux Linaro 3.18-2014.12
    • Based on v3.18 release
    • GATOR topic: version 5.20
    • updated topic from Qualcomm LT (includes IFC6410 board support)
    • updated integration-linaro-vexpress64 topic by ARM LT (FVP Base and Foundation models, and Juno support)
    • updated LLVM topic (uses the community llvmlinux-latest branch)
    • included ILP32 patch set v3  rebased on 3.18. Boot tested with aarch64 userland. Work is in progress to test with aarch64-ilp32 userland.
    • config fragments updated – SELinux related config options enabled in linaro-base.conf, device tree runtime self tests enabled in distribution.conf
  • Linaro builds of AOSP 14.12
    • built with AOSP toolchain
    • All the Android builds have been updated to 5.0.1
    • Audio on Versatile Express TC2 is fixed (Android 5.0.1)
    • DNS issue fixed on Juno, FVP models and Versatile Express TC2 (Android 5.0.1)
    • daily CI updated to include benchmarks for Versatile Express TC2 and Juno
  • Linaro OpenEmbedded 2014.12
    • integrated Linaro GCC 4.9-2014.11 and Linaro binutils 2.24-2014.11
    • switched from eglibc to Linaro glibc 2.20-2014.11
    • improved external toolchain support
    • improved ACPI tooling
    • added python-numpy to images for LAVA tests
    • upstreaming:
  • Linaro Ubuntu 14.12 – updated packages: juno-pre-boot, LSK 3.10.62/3.14.26 and linux-linaro 3.18 kernels
  • CI loop for testing the pre-built Linaro toolchain using the OpenEmbedded external toolchain support has been reactivated
  • ARMv8 Ubuntu engineering build for Enterprise is available
  • CI bring up: HiSilicon Hi3716cv200
  • CI bring up: EAS (Energy Aware Scheduling) development – integration branch testing
  • Publish OpenSDK images on snapshots.linaro.org
  • Ship board recovery image into hwpack for Juno

You can visit https://wiki.linaro.org/Cycles/1412/Release for a list of known issues, and further release details about the LEB, LMB (Linaro Member Builds), and community builds, as well as Android, Kernel, Graphics, Multimedia, Landing Team, Platform, Power management and Toolchain components.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

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

December 16th, 2014 7 comments

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.

ODROID-C1-Linux

  1. Download Linaro GCC 4.7 toolchain from Linaro or Odroid website.
  2. 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/

  3. 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

  4. To apply change, log out and log in, or run:
    source ~/.bashrc
  5. Double check Linaro GCC 4.7 is installed properly:

    arm-linux-gnueabihf-gcc -v
    Using built-in specs.
    COLLECT_GCC=arm-linux-gnueabihf-gcc
    COLLECT_LTO_WRAPPER=/home/jaufranc/opt/toolchains/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.3/lto-wrapper
    Target: arm-linux-gnueabihf
    Configured with: /cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/src/gcc-linaro-4.7-2013.04/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install --with-sysroot=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --enable-multilib --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 - Linaro GCC 2013.04' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-ppl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-host-libstdcxx='-L/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static/lib -lpwl' --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-gold --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-mode=thumb
    Thread model: posix
    gcc version 4.7.3 20130328 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 - Linaro GCC 2013.04)

  6. Both Linux and Android Linux are available, and depending on which kernel should want to get checkout the code from the right branch:
    git clone https://github.com/hardkernel/linux.git -b odroidc-3.10.y-android

    or

    git clone https://github.com/hardkernel/linux.git -b odroidc-3.10.y
  7. I selected the Linux branch. Time to configure the build for ODROID-C1:
    cd linux
    make odroidc_defconfig
  8. Install u-boot-tools for mkimage, and build the kernel image
    sudo apt-get install u-boot-tools
    make uImage -j8
  9. And the device tree file for ODROID-C1:
    make meson8b_odroidc.dtd
    make meson8b_odroidc.dtb
  10. I’ve stopped there, but if you have a board you’ll want to copy / flash the files arch/arm/boot/uImage and arch/arm/boot/dts/amlogic/meson8b_odroidc.dtb to a bootable eMMC or SD card
    • For Linux – Copy uImage and meson8b_odroidc.dtb to the FAT32 partition of your boot device, replacing the existing files
    • For Android – Use fast boot as follows:
      sudo apt-get install android-tools-fastboot 
      sudo fastboot flash boot <path/of/your/uImage>
      sudo fastboot flash dtb <path/of/your/meson8b_odroidc.dtb>
  11. Have fun :)

This source code release for ODROID-C1 should also open the way for Linux Kernel ports, and Ubuntu / Debian or other Linux distributions for other Amlogic S805 devices such as MK808B Plus, MXQ S85, or MINIX NEO X6.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

ODROID-XU3 Lite Board Ubuntu Review – Setup, Usability, and Performance

December 14th, 2014 15 comments

After testing ODROID-XU3 Lite with Android 4.4, and finding a workaround to some HDMI issues, I could finally try out Ubuntu, or rather Lubuntu with LXDE instead of Unity, in Hardkernel low cost octa-core development board. I’ll start this review by explaining how to install and setup Lubuntu on the board, followed by running various program to test the system usability as a desktop computer with LibreOffice, Chromium, XBMC, and 3D graphics, and finally run some performance tests with Phoronix Test Suit, build the Linux kernel natively, and transcode a video with avconf.

Setting Up Ubuntu on ODROID-XU3 Lite

All firmware images for ODROID development boards, can be found on odroid.in website, and if you want Ubuntu 14.04 image, go to ubuntu_14.04lts folder, to select the latest firmware file for your board. The latest image for ODROID-XU3 (Lite) is currently ubuntu-14.04.1lts-lubuntu-odroid-xu3-20141105.img.xz, it’s the same for micro SD card or eMMC boot. You should have gotten a eMMC to micro SD adapter if you’ve purchased an eMMC module from Hardkernel.

You can download, extract, and flash the image with dd (Linux) or Win32DiskImager (Windows). For example. in a terminal in a Linux computer:

wget http://odroid.in/ubuntu_14.04lts/ubuntu-14.04.1lts-lubuntu-odroid-xu3-20141105.img.xz
sudo apt-get install xz pv
xz -d ubuntu-14.04.1lts-lubuntu-odroid-xu3-20141105.img.xz
dd if=ubuntu-14.04.1lts-lubuntu-odroid-xu3-20141105.img | pv | sudo dd of=/dev/sdX

Where X is the letter of your micro SD or eMMC module inserted into your computer. Check the value carefully with lsblk before running the dd command, or you may lose your data stored on other drives connected to your computer,. For extra safety, you could also consider doing this procedure in a virtual machine, for example by running Ubuntu in VirtualBox.

Now insert the micro SD card or connect the eMMC module to the board, and you configure the boot switch between the Ethernet and USB ports as shown below using a pen or tweezers. For eMMC both must be in high position, whereas for SD card boot one must be down.

ODROID-XU3_Lite_Boot_Switch

Left: eMMC Boot; Right: Micro SD Card Boot

Now connect a keyboard, mouse, the HDMI cable, Ethernet, and/or other peripherals you may want to connect and power up the board by connecting the provided 5V/4A power supply. A typical boot should complete in around 22 seconds, although the first boot might take a little longer.

Lubuntu Desktop in ODROID-XU3 Lite

Lubuntu Desktop in ODROID-XU3 Lite

A this stage, the installation is nearly complete, and you should already have a usable system, however, if you’ll see that the rootfs partition is only 4.9GB with 310 MB available (that’s after installing LibreOffice):

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2  4.9G  4.4G  310M  94% /

Since my eMMC module has a capacity of 16GB, it would be nice to use all of it. Normally, you’d use fdisk/parted, and resize2fs  to get the full size, but Hardkernel provides ODROID Utility that can do just that among others. So click on the icon on the top right to launch the program, input the password (odroid), and after running apt-get update automatically, the following interface should appear.

ODROID_UtilityClick on Resize your root partition, and after making sure the root partition is in /dev/mmcblkp2, click <Yes> to continue and resize the root partition on your micro SD card or eMMC module. After a reboot, you can check all the available storage in a terminal:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk0p2   15G  4.4G  9.4G  32% /

9.4GB available out of a 15GB partition. Perfect! The setup is now complete.

Using ODROID-XU3 Lite as a Desktop Computer / Media Player

The Ubuntu image comes pre-loaded with Firefox, Chromium, Transmission, Arduino IDE, Abiword, PacmanFM, XBMC and a few others programs. Since they probably wanted to keep the image reasonably small, they did not install large program, but I install LibreOffice for a better office suite, and Nautilus for a file manager with Network Shares access:

sudo apt-get install libreoffice nautilus

The system is extremely responsive, and if you’re using a computer with a mechanical drive, ODROID-XU3 Lite will boot and load programs much faster than your full-blown Intel/AMD computer.

The best way to showcase ODROID-XU3 (Lite) capabilities is to shoot a video, so I’ve just done that showing:

  1. 20 seconds boot
  2. ODROID Utility options
  3. List of installed applications
  4. LibreOffice (Writer)
  5. Chromium – Multi-tabs, YouTube (embedded / full screen; VP9 / H.264/AVC1), and Candy Crush Saga (Flash game) in Facebook
  6. 3D hardware acceleration with es2gears
  7. XBMC Media Player with 2D/3D OpenGL ES and hardware video decoding.
  8. Power off

I’ve also opened a terminal running htop to show the eight cores CPU usage during these tests.

Side note: Since my camera (Canon Powershot A2300 HD) is pretty poor at shooting videos of screens, I’ve used SJ1000 action camera instead as the image is much sharper, but there’s a fisheye effect due to the wider angle of such camera. There are some tools in Linux including Python scripts and KDEnlive that can remove the fishing effect, but they introduce some aliasing, which does not look nice in this type of video, although it’s probably acceptable for content without text or thin lines.

Based on these tests, ODROID-XU3 Lite can be used as a desktop replacement or an XBMC media center, but you have to be aware of some limitations:

  • YouTube embedded videos play usually well, and 360p/480p full screen video play quite well, but the user experience is not very good with 1080p full screen videos, either with VP9 or H.264 codec.
  • Adobe Flash is not pre-installed, but in Chromium, it should be quite easy to install libpepperflash.so to enable Flash support. I have not tried, but normally, flash performance on ARM is rather subpar compared to x86.
  • The window manager may not be hardware accelerated with the GPU.

For all other uses, ODROID-XU3 Lite is clearly the best ARM Linux platform, I’ve tried so far, with a fast eMMC, 2D/3D hardware accelerated graphics (for apps that support OpenGL ES only), and hardware video decoding.

Other Use Cases and Performance

Before starting some benchmarks, I’ll check what type of Exynos 5422 I have in my system:

root@odroid:~# dmesg | grep BIN                                                 
[    0.355271] [c6] CPU Info : Samsung Exynos5422 Soc is BIN2

BIN1 is for the Exynos 5422 processor clocked up to 2.2 GHz found in ODROID-XU3 board, and BIN2 is limited to 1.8 GHz, and normally found in the Lite version of the board which I’m reviewing right now.

Phoronix Suite Benchmarks

Antutu is the most famous benchmark in Android, but in Linux, Phoronix Test Suite is the reference. It’s a bit more complicated to use than Antutu, but more flexible, and throrough.

sudo apt-get install php5-cli php5-gd php5-gd
wget http://phoronix-test-suite.com/releases/repo/pts.debian/files/phoronix-test-suite_5.4.0_all.deb
sudo dpkg -i phoronix-test-suite_5.4.0_all.deb

After apt-get install,. I had to run “sudo apt-get install -f” to complete the installation.

Than I’ve followed the instructions here, and selected four tests from the suite to test audio encoding, multi-core file compression, server, and disk I/Os:

phoronix-test-suite batch-benchmark pts/encode-mp3 pts/compress-7zip pts/apache pts/iozone

It turns out the iozone test for disk I/O takes nearly five hours, and recently my computer tends to turn off randomly, and since I started the test from an ssh console, the test got interrupted, so I only ran encode-mp3, compress-7zip, and apache benchmarks which last only about 15 minutes in total.

Out of the three test, compress-7zip failed because of a lack of memory:

[c4] Out of memory: Kill process 9593 d
[16693.088181] [c4] Killed process 9593 (7za) total-vm:1844536kB, anon-rss:1509B

So the whole Phoronix benchmarks did not exactly work out as expected, but you can find the result for MP3 encoding and Apache tests @ http://openbenchmarking.org/result/1412146-LI-20141214131

ODROID-XU3-Lite_Phoronix_Intel_Core_i3_radxa_proI’ve compared the ODROID-XU3 Lite results to some recent results on Openbenchmarking website including an Intel Core i3-4150 quad core system (cpu-ubuntu), an older Intel Atom N570 system (2G), and Radxa Pro board powered by Rockchip RK3188 processor. So Exynos 5422 can’t match a recent Core i3 processor yet (which by itself costs more than ODROID-XU3 Lite board), but does well against N570 netbook processor, and is about twice as fast as Radxa Rock Pro board in these two tests.

Mainline kernel compilation

People may want to use this powerful low cost Octa core board in build farm, so I though it would be fun to try building Linux mainline kernel natively. Let’s installing dependencies, and get the source latest Linux release (3.18) first.

sudo apt-get install libncurses5-dev gcc make git exuberant-ctags
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
cd linux-stable
git checkout -b stable v3.18

Ubuntu 14.04 comes with gcc 4.8.2 only, but this compiler will break Linux mainline build, so I had to install gcc 4.9 instead:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9

You’ll also note some ODROID boards are already part of mainline, probably with partial support, but unfortunately ODROID-XU3 (Lite) kernel has not been upstreamed yet.

root@odroid:~/linux-stable# ls -l  arch/arm/boot/dts | grep odr                 
-rw-r--r-- 1 root root   8334 Dec 14 14:11 exynos4412-odroid-common.dtsi        
-rw-r--r-- 1 root root   1310 Dec 14 14:11 exynos4412-odroidu3.dts              
-rw-r--r-- 1 root root    829 Dec 14 14:11 exynos4412-odroidx2.dts              
-rw-r--r-- 1 root root   1691 Dec 14 14:11 exynos4412-odroidx.dts

Anyway, let’s build the kernel for Exynos processor, and see how fast the board can compile a Linux kernel:

make exynos_defconfig
time make -j8 CC=gcc-4.9
...
real    5m43.746s
user    31m25.235s
sys     4m11.130s

So it takes less than 6 minutes to build the kernel on ODROID-XU3 Lite, about 4 times longer than on a powerful, but much more power hungry (300W) AMD FX8350 based computer. In other words, it should be possible to achieve the same performance as my computer using 4 or 5 ODROID-XU3 Lite boards in a mini build farm using distcc compilation for about the same price, but only a fraction of the power consumption, and of course native compilation has advantages over cross-compilation, since some tests may have to be skipped for the latter.

Video Transcoding with avconv

Finally, one follower on G+ asked me to test MPEG2 to H.264 video transcoding with ffmpeg. The latter does not seem to be available, and as been replaced by avconc, so I installed libav-tools instead, and ran the transcoding.

sudo apt-get install libav-tools
time avconv -i big_buck_bunny_1080p_MPEG2_MP2_25fps_6600K.MPG \
-vcodec libx264 -minrate 300k -maxrate 300k -bufsize 1835k bbb-h.264.avi
avconv version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav s
built on Aug 10 2014 18:32:09 with gcc 4.8 (Ubuntu/Linaro 4.8.2-19ubuntu1)
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, mpeg, from 'big_buck_bunny_1080p_MPEG2_MP2_25fps_6600K.MPG':
Duration: 00:00:44.74, start: 0.240000, bitrate: 7159 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 1920x1080 [PAR 1:1 Dc
Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, stereo, s16p, 160 kb/s
[libx264 @ 0x6c9c0] using SAR=1/1
[libx264 @ 0x6c9c0] MB rate (734400000) > level limit (2073600)
[libx264 @ 0x6c9c0] using cpu capabilities: ARMv6 NEON
[libx264 @ 0x6c9c0] profile High, level 5.2
Output #0, avi, to 'bbb-h.264.avi':
Metadata:
ISFT            : Lavf54.20.4
Stream #0.0: Video: libx264, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=-1--1c
Stream #0.1: Audio: libmp3lame, 44100 Hz, stereo, s16p
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video -> libx264)
Stream #0:1 -> #0:1 (mp2 -> libmp3lame)
Press ctrl-c to stop encoding
frame= 1035 fps= 8 q=55.0 size= 30701kB time=40.52 bitrate=6206.7kbits/s

It took 2 minutes 31 seconds to encode a 44 seconds video, so real-time 1080p video transcoding is currently not feasible with avconv / ffmpeg.

Have said that, Exynos 5422 supports video decoding and encoding, so it should be possible to write a program using the MFC (Multi-Format Codec) driver for Exynos. I could not find any sample code, but having a look a XBMC source code for ODROID boards might be a start, since it’s using the MFC drivers for decoding.

ODROID-XU3 Lite can be purchased directly from Hardkernel for $99 + shipping, or through distributors like Ameridroid (USA) or Pollin Electronics (Germany). Adding an eMMC module, an HDMI cable, and the serial debug board to your order is recommended, although you could replace the eMMC with a fast micro SD card (class 10 or greater) for a still decent performance.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linux 3.18 Released

December 10th, 2014 2 comments

Linus Torvalds released Linux Kernel 3.18 last Sunday:

It’s been a quiet week, and the patch from rc7 is tiny, so 3.18 is out.

I’d love to say that we’ve figured out the problem that plagues 3.17 for a couple of people, but we haven’t. At the same time, there’s absolutely no point in having everybody else twiddling their thumbs when a couple of people are actively trying to bisect an older issue, so holding up the release just didn’t make sense. Especially since that would just have then held things up entirely over the holiday break.

So the merge window for 3.19 is open, and DaveJ will hopefully get his bisection done (or at least narrow things down sufficiently that we have that “Ahaa” moment) over the next week. But in solidarity with Dave (and to make my life easier too ;) let’s try to avoid introducing any _new_ nasty issues, ok?

Linus

Linux 3.17 added support for Xbox One controllers, USB device sharing over IP, more secure random numbers, several modifications for perf and more.

Some of the changes made to Linux 3.18 include:

  • Performance improvements for the networking stack thanks to bulk network packet transmission, which “allows a relatively small system to drive a high-speed interface at full wire speed, even when small packets are being transmitted.”
  • Faster suspend and resume by replacing a 100ms polling loop with proper completion notification. This will mostly be noticeable on systems with a large number of cores. Git pull.
  • Berkeley Packet Filter bpf() system call. “The hooks to use this code (in tracing and packet filtering, for example) will take a little longer, but the core support for a “universal virtual machine” in the kernel is now present.”
  • Nouveau drivers for Nvidia GPUs now supports basic DisplayPort audio
  • Several filesystems improvements, notably for BTRFS and F2FS
  • Audio hardware. Codecs: Cirrus Logic CS35L32, Everest ES8328 and Freescale ES8328; others: Generic Freescale sound cards, Analog Devices SSM4567 audio amplifier

New features and improvements specific to the ARM architecture include:

  • Allwinner
    • Allwinner A31/A23 –  RTC  & Watchdog
    • Allwinner A23 – MMC, pinctrl, DMA and I2C
    • New boards: Olimex A20-OLinuXino-Lime, Merrii Hummingbird A20, and HSG H702 tablet board.
  • Rockchip
    • Added new clock-type for the cpuclk
    • Ethernet: Added support for Rockchip SoC layer device tree bindings for arc-emac driver, and emac nodes to the rk3188 device tree.
    • Added driver for Rockchip Successive Approximation Register (SAR) ADC.
    • RK808 PMIC: Added regulator driver, clkout driver, and mfd driver.
  • Amlogic – Added MesonX support, only Meson6 for now (Amlogic AML8726-MX). DTS for Geniatech ATV1200 media player
  • Added basic support for BCM63138 DSL SoC, Texas Instruments AM57xx family, Atmel SAMA5D4, Qualcomm IPQ8064, Renesas r8a7794 SoC,
  • New Device tree files for various board and products: Gateworks GW5520, SAMA5D4ek board,  i.MX1 Armadeus APF9828, i.MX1 ADS board, Technexion Thunder support (TAO3530 SOM based, Sony Xperia Z1, IFC6540 board, CM-QS600 SoM,  etc…

I could find a few changes for MIPS architecture in Linux 3.18 too:

  • SEAD3: Nuke PIC32 I2C driver.
  • Loongson: Make platform serial setup always built-in
  • Netlogic: handle modular USB case & AHCI builds
  • tlbex: Fix potential HTW race on TLBL/M/S handlers
  • cpu-probe: Set the FTLB probability bit on supported cores
  • fix EVA & non-SMP non-FPU FP context signal handling
  • Etc.. You can find a few more changes @ http://lwn.net/Articles/623825/

A more thorough changelog for Linux 3.18 will soon be published on Kernelnewbies.org. Remember to also check ARM architecture and drivers sections, for more details about changes related to ARM platforms.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linaro 14.11 Release with Kernel 3.18, Android 5.0, & Ubuntu Utopic. Debian 8.0 Gets ARM64 Port

November 28th, 2014 3 comments

Linaro 14.11 has been released with Linux kernel 3.18-rc5 (baseline), Linux 3.10.61 & 3.14.25 (LSK, same versions as last month), and Android 4.4.2, 4.4.4, and for the first time Android 5.0 Lollipop. There’s also been some news with regards to Linux desktop distributions, as Ubuntu baseline has been upgraded to Utopic (14.10), and Debian 8.0 (Jessie) will officially support ARM64 with 93% of packages built as of November 5th. Android Lollipop images are said to be built for TC2, Juno, Nexus 7, Nexus 10, and FVP models, but I could not find the images. Finally, it’s the first time I’ve noticed Hisilicon X5HD2 development board with a dual core Cortex A9 processor, but apparently it’s the same as Hi3716cv200.

Here are the highlights of this release:

  • Linux Linaro 3.18-rc5-2014.11
    • updated GATOR to version 5.20
    • updated topic from Qualcomm LT (include IFC6410 board support)
    • updated integration-linaro-vexpress64 topic by ARM LT (FVP Base and Foundation models, and Juno support)
    • updated integration-hilt-linux-linaro topic by HiSilicon LT (Hi36xx, HiP04, and X5HD2 families support)
    • updated LLVM topic (uses the community llvmlinux-latest branch) includes ILP32 patch set v3 rebased on 3.18-rc5. Build tested only.
  • Linaro builds of AOSP 14.11
    • built with Linaro GCC 4.9-2014.11
    • migrated to Android 5.0 (Lollipop) for all the targets on all CI loops. Here are the combinations: TC2-LSK-3.10, TC2-LSK-3.14, Juno-LSK, Nexus 7, Nexus 10, FVP-LSK-3.10 and FVP-LSK-3.14.
    • updated LSK pre-merge CI for 3.10 and 3.14
    • revamped to use overlay manifest with local_manifests
    • added AOSP master builds setup for Versatile Express TC2, Juno, Nexus 7 and Nexus 10
  • Linaro OpenEmbedded 2014.11
    • integrated Linaro GCC 4.9-2014.11
    • included perf tools in the rootfs
    • fixed gator FTBS
    • updated strace aarch64_be patch
    • fixed external toolchain support
    • upstreaming:
      • updated LTP to 20140828 release
      • updated PM QA to 0.4.14 release
      • updated ACPICA to 20140828 release
  • Linaro Ubuntu 14.11
    • Ubuntu baseline migrated from Trusty to Utopic
    • updated packages: Juno firmware 0.9.2, LSK 3.10.60/3.14.24 and linux-linaro 3.18-rc5 kernels
  • Debian release team announced ARM64 architecture has made enough progress to be a released architecture for Debian 8.0 (Jessie)
  • SELinux support is enabled in linux-linaro kernel
  • Test usage of Linaro toolchain binary to build OE rootfs has been added
  • CI bring up: coresight enabled build for TC2

You can visit https://wiki.linaro.org/Cycles/1411/Release for a list of known issues, and further release details about the LEB, LMB (Linaro Member Builds), and community builds, as well as Android, Kernel, Graphics, Multimedia, Landing Team, Platform, Power management and Toolchain components.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

Linaro 14.10 Release with Kernel 3.17 and Android 4.4.4, Debian ARM64 Port Almost Complete

October 31st, 2014 No comments

Linaro 14.10 has just been released with Linux kernel 3.17 (baseline), Linux 3.10.54 & 3.14.19 (LSK, same versions as last month), and Android 4.4.2 & 4.4.4.

Most of the work is a continuation of previous months working member hardware, and ARM64, but one particularly interesting point is that 90% of Debian packages have been built for ARM64, and the next version of Debian should have an official ARM64 port.

Here are the highlights of this release:

  • Linux Linaro 3.17-2014.10
    • updated linaro-android topic. In particular, CONFIG_IPV6=y is no longer the requirement for linux-linaro tree builds
    • GATOR version 5.19 (same version as in 2014.08 release). gatord is fixed to build for ARMv8.
    • dropped multi_pmu_v2 topic by ARM LT (no longer used)
    • updated topic from Qualcomm LT (include IFC6410 board support)
    • replaced integration-linaro-vexpress topic by integration-linaro-vexpress64. Starting from 2014.10 release, linux-linaro kernel tree will use the mainline support for 32-bit vexpress boards. integration-linaro-vexpress64 carried over FVP Base and Foundation models, and Juno support from the integration-linaro-vexpress.
    • updated LLVM topic (uses llvmlinux-2014.10.01 branch – the most recent v3.17-based version of llvmlinux-latest)
    • dropped ARMv7 big endian topic(obsoleted; most of the patches are upstream)
    • added ILP32 patch set v3 with one minor build fix. (ILP32 vs LP64 data models)
    • config fragments changes – distribution.conf: CONFIG_IPV6=y replaced with CONFIG_IPV6=m
  • Linux Linaro LSK 2014.10:
    • The v3.14 based LSK based on kernel.org 3.14.19 stable tree
    • Updates to:
      • kernel.org 3.10.55 stable tree
      • Android support (from Google and Linaro)
      • ARMv8 fixes and performance enhancements
      • UEFI support
      • Mailbox framework
  • Linaro Toolchain Binaries 2014.10
    • based on GCC 4.9 and updated to latest Linaro TCWG releases (Linaro GCC 4.9-2014.10)
    • first release built with cbuild2, adding more maintainable code base and automatic testing
    • binary tarballs have been splitted into 3 parts. As a result, you can install only the parts needed:
      • gcc-linaro-*.tar.xz – the compiler and tools
      • runtime-linaro-*.tar.xz – runtime libraries needed on the target
      • sysroot-linaro-*.tar.xz – sysroot (a set of libraries and headers to develop against)
  • Linaro builds of AOSP 14.10
    • built with Linaro GCC 4.9-2014.10
    • AOSP master build for Juno is cleaned up. It now builds without any patches on AOSP projects. It builds by adding 9 projects to AOSP manifest related to device, kernel, toolchain and helper tools.
    • LSK Android testing issues are fixed for ARMv8 Fast Models
    • bc tool is added to ARMv8 Android Juno build
  • Linaro OpenEmbedded 2014.10
    • integrated Linaro GCC 4.9-2014.10
    • fixed shadow securetty for SBSA compatible UART
    • switched OpenJDK to upstream aarch64 hg repos
    • dropped mongodb from LAMP images
    • upstreaming:
      • updated acpica 20140828 release
      • updated acpitests 20140828 release
      • updated pm-qa to 0.4.14 release
      • added aarch64 support to libunwind
      • fixed PHP build warnings
  • Linaro Ubuntu 14.10 – Updated packages: Juno firmware 0.8.2, LSK 3.10.58/3.14.22 and linux-linaro 3.17 kernels, xf86-video-freedreno 1.3.0
  • Debian arm64 support is going very well. More than 90% of the packages are built. The effort is on track to get next Debian release with an officially supported arm64 architecture.
  • KVM CI loop on Juno is completed. The remaining work is happening on Xen CI loop.

You can visit https://wiki.linaro.org/Cycles/1410/Release for a list of known issues, and further release details about the LEB, LMB (Linaro Member Builds), and community builds, as well as Android, Kernel, Graphics, Multimedia, Landing Team, Platform, Power management and Toolchain components.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter