Settings

Theme

Exploring AArch64 assembler

thinkingeek.com

64 points by b3h3moth 9 years ago · 13 comments

Reader

Lichtso 9 years ago

For those who are interested in running your software on AArch64 hardware directly, without any additional firmware or operating system in between, I've developed a boot loader and tool chain to test and execute unikernels on a Pine64:

https://github.com/Lichtso/UnikernelExperiments

  • lgeek 9 years ago

    Hmm, what are the advantages of using this bootloader over U-Boot? Or is it simply that U-Boot doesn't support Ethernet or some other peripherals on the A64 SoC?

    • Lichtso 9 years ago

      On one hand it is very light weight: less than 4k LOC and 16 kB executable (which fits completely in the first stage of SRAM), so it is easier to grasp compared to U-Boot: https://github.com/trini/u-boot/search?q=sunxi&type=Code

      On the other hand, it has different goals and is just meant to load a blob of instructions over ethernet (faster evaluation cycle) not an entire Linux kernel with all the POSIX / UNIX stuff from SD. So you have far more control but are also on a lower level, somewhat like developing for a more powerful Arduino.

dpc_pw 9 years ago

This article is very short and shallow. I mean... you can apply it to any architecture that Qemu supports (and there are many). Altogether there are 2 assembler instructions in the whole article. Not much of an exploration...

Qemu usermode emulation is nice, but the full-hardware emulation is way more interesting. Eg. in https://github.com/dpc/titanos - toy kernel for Aarch64 written in our lord-and-saviour programming language: Rust, I use Qemu to run kernel and unittests for that kernel. With Qemu gdb stubs it's like having a software-defined hardware platform with a JTAG debugger attached. `make run` and it runs - no need to plug cables and press reset buttons.

  • cikey 9 years ago

    nice, from "i dont like this article" to "rust advertising" in 5 sentences?

faragon 9 years ago

I recommend the Pine 64 board. I bought one (2GB RAM, gigabit ethernet model, for 29$ [1]), and despite running its 4 cores at just 1.2GHz, it is quite speedy, and rock solid running Debian 24/7 as ARM64 build server.

[1] https://www.pine64.org/ (I'm not related to Pine, just a satisfied user)

  • conradev 9 years ago

    I wish I had know about the Pine 64! I ended up buying an ODROID-C2 (http://www.hardkernel.com/main/products/prdt_info.php) when looking for an AArch64 board, which is pretty similar.

    • CountSessine 9 years ago

      I think you're better off with the Odroid and it's Amlogic CPU - the Pine 64 has an Allwinner CPU. You'll have fewer headaches getting kernels to build for and run on the Amlogic chip.

  • Palomides 9 years ago

    shame it's an allwinner SoC, they seem to have a history of GPL problems and binary blobs.

    • Lichtso 9 years ago

      Except from HDMI almost everything is open or reverse engineered.

      To me it was sill more attractive than the Ordroid-U3 with its Samsung chip, which boots only signed software and is totally undocumented. Same with the PI3 and its GPU code, which is needed to boot.

wyldfire 9 years ago

Another cool thing you can do is setup the kernel's binfmt handler to run the user-mode qemu emulation automatically.

ndesaulniers 9 years ago

> single-board computers that support the 64-bit mode of ARMv8 are less common

hey, you can use Nexus 5x, 6p or Pixel phones! I've been meaning to write a blog post about this.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection