Skip to content

google/android-riscv64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 

Android/riscv64

What is this?

If you don't know what Android is, what risc-v is, or what they have to do with one another, start by reading Android and RISC-V: What you need to know to be ready.

This github project is solely for issue tracking/discussion/documentation purposes.

All Android/riscv64 work is being done directly in AOSP. Patches should be sent to AOSP using the usual AOSP contribution process and not as pull requests here.

You might also want to subscribe to the sig-android mailing list. (You need to send mail to [email protected] and then click "Join" on the mailing list web site.) You can see the topics up for discussion -- or add your own -- for the monthly meeting in the Android SIG meeting topics doc. But there's no need to wait for the meeting: you can ask questions on the mailing list at any time!

Status

We're currently (2024Q2) using cuttlefish virtual devices to run ART (with the JIT enabled) to boot to the homescreen, and the shell and command-line tools (and all the libraries they rely on) have been working great for a while.

You can see the current status of the riscv64 build in CI in the aosp_cf_riscv64_phone column (between arm64 and x86-64) of ci.android.com, but we're not currently (2024Q2) running the tests in CI.

We have not defined the Android NDK ABI for riscv64 yet, but we're working on it, and it will be added to the Android ABIs page (and announced on the SIG mailing list) when it's done. In the meantime, you can download NDK r27 beta 1 which has provisional support for riscv64. The ABI it targets is less than what the final ABI will be, so although code compiled with it will not take full advantage of Android/riscv64 hardware, it should at least be compatible with those devices. (Though obviously part of the point of giving early access to it is to try to find any serious mistakes we need to fix, and those fixes may involve ABI breaks!)

Can I try it?

Download the source using the usual AOSP download process and then:

$ cd aosp
$ source build/envsetup.sh
$ lunch aosp_cf_riscv64_phone-trunk_staging-userdebug

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline mainline_module_prebuilt_nightly
TARGET_PRODUCT=aosp_cf_riscv64_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=riscv64
TARGET_ARCH_VARIANT=riscv64
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=linux_musl
BUILD_ID=MAIN
OUT_DIR=out
============================================
$ make -j

If you want to check whether a particular directory builds, cd into that directory and use mm -j.

(For more tips on building in general, see Building Android.)

Cuttlefish (emulator) setup

To launch cuttlefish, follow the general AOSP cuttlefish setup instructions.

Note that you need at least qemu 8.1 (and qemu 9.0 has important fixes for the V extension), so you'll probably want to use the prebuilt qemu binaries in AOSP (as shown in the example commands below).

Getting to a shell (faster, but no graphics)

After building, run this following command from the same shell:

$ launch_cvd -cpus=4 --memory_mb=8192 --gpu_mode=none

After about 10s you should be able to use adb shell to connect to your riscv64 cuttlefish!

Getting to the home screen (slower, but with graphics)

After building, run this following command from the same shell:

$ launch_cvd -cpus=8 --memory_mb=8192

You can then use vncviewer localhost:6444 to connect to your riscv64 cuttlefish!

(Note that even on a fast Xeon workstation it takes several minutes to get to the boot animation and ten minutes to get to the home screen!)

How do I contribute?

Consult the regular AOSP Contributing documentation for more information on how to send us your patches.

Note that changes to projects under external/ (other than to Android.bp files) typically need to go to the upstream open source project in question first, and will then be merged into AOSP from there. In many cases, the METADATA file will point you to the upstream source, but feel free to ask here if not!

Review our Community Guidelines

This project follows Google's Open Source Community Guidelines.