What’s Up Doc? Optimizations for Arm
Software runs best when it fully utilizes the underlying hardware,…
96Boards OpenHours is a Linaro effort to provide a weekly discussion and interview with leaders in the ARM community. Issue 65 is an interview with Peter Robinson and Paul Whalen of Red Hat, talking about their efforts to port Fedora to a series of ARM-based single board computers.
Peter and Paul are looking forward to a release in the Fedora 27 timeframe with support for Linaro’s 96Boards. The goal is to have these machines, like the Hikey 960, booting Fedora from SD card. The published Fedora timeline has a beta release in mid September 2017, with a target release in late October 2017.
They note that the state of kernel development for single-board computers has improved greatly over time, as there used to be nearly a different kernel needed for each device and a different boot method. Diligent efforts to upstream patches into the mainline kernel and to get the vendor binary blobs into open licenses has vastly expanded the number of systems that can be supported.
OpenHours is hosted by Linaro’s Robert Wolff.
DietPi is a lightweight Debian based distribution for single board ARM computers. It advertises support for vendors including Allo, Asus, BananaPi, NanoPi, Odroid, OrangePi, Pine, and Raspberry Pi, plus versions that will run on virtual machines.
The DietPi web site has a handy comparison of the capabilities of the 64-bit ARM single-board computers that it supports, noting the various things you might need to think about when making a choice among them including price, performance, thermal handling and compatibility. Even if you don’t plan to run this particular distribution, it’s a good reference for shopping.
If you’re interested in DietPi, you’ll probably also be interested in [Armbian], which is a distribution with the same target pool of SBCs. Armbian was featured in the W27 issue.
Work is underway by Hamid Zamani (HAMIDx9) to port this system to arm64. The pull request includes unofficial builds of Electron, plus its dependencies FFMpeg and libchromiumcontent. The target for the official release is the 1.8.x milestone, because the build process will require a newer toolchain that what’s available to Electron in the 1.7.x release chain.
Among the other apps built on this that are eyeing arm64 support are a community build of Microsoft’s Visual Studio Code managed by Jay Rodgers (@headmelted).
Flatpak is the next-generation technology for building and installing desktop applications. It has straightforward cross-compilation support for generation of ARM and aarch64 binaries in its Intel based build system, since Fedora 25.
Flatpak is designed for easy distribution of desktop binaries. It uses containerization to corral dependencies.
Thanks to Christian Hergert for bringing this to my attention. He writes: “I can’t understate how awesome it is to quickly have an arm/aarch64 build environment with flatpak. So quick and easy.”
The Unicorn CPU emulator is based on QEMU, a great open source software emulator. It allows emulation of a variety of CPU architectures including Arm, Arm64 (Armv8), M68K, Mips, Sparc, & X86 (including X86_64).
A notable difference between Unicorn and QEMU is that we only focus on emulating CPU operations, but do not handle other parts of computer machine like QEMU. Internally, Unicorn reuses the CPU emulation component of QEMU as its core (with quite a lot of changes to adapt to our design). Therefore, our engine is able to emulate all the instructions that QEMU can, but beyond that we can do more & do better in many aspects.
Find more about the techinical details of Unicorn in their Blackhat USA 2015 slides.
uEmu is a plugin for IDAs based on the Unicorn engine. The author, Alexander Hude, writes that it is good for emulating bare metal code like bootloaders and embedded firmware, but not so good for the analysis of complex OS code.
uEmu supports the following architectures out of the box: x86, x64, ARM, ARM64.
Capstone is a disassembler. “Our target is to make Capstone the ultimate disassembly engine for binary analysis and reversing in the security community.”
Includes ARM64 (Armv8) support. The current release is Version 3.0.5-rc3 as of July 31, 2017.
Works on Arm News is released weekly on Fridays. Follow @worksonarm on Twitter for the weekly link, or follow the worksonarm-news project on Github for notifications. Email to [email protected] if you’d like a direct email.
Back and current issues are available from the Works on Arm News archive on Github.