当前位置: 首页 > news >正文

[RISCV] 为android14添加一个新的riscv device

本篇博客将基于android-14-r18添加Sifive unmatched板子的支持。

Setup build envoronment

Establishing a build environment

$ sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig python3 python3-pip python3-setuptools python3-wheel ninja-build
$ sudo apt install libssl-dev python3-setuptools
$ sudo pip3 install meson
$ sudo pip3 install mako

Download Android source with local_manifests

Refer to Downloading the source

$ repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r18
$ git clone https://github.com/android-risc-v/local_manifests .repo/local_manifests -b arv-14
$ repo sync

Build Android for Unmatched

Refer to Building Android

$ source build/envsetup.sh
$ lunch unmatched-eng
$ make ramdisk systemimage vendorimage -j$(nproc)

Prepare sd card

Partitions of the card should be set-up like followings
p1: 128MB for /vendor ----------------->Do fdisk, new primary partition
p2: 1024MB for /system---------------->Do fdisk, new primary partition
p3: 128MB for boot---------------------->Do fdisk, set W95 FAT32(LBA) & Bootable type, sudo mkfs.vfat -n boot /dev/sdb3
p4: remainings for /data---------------->Do fdisk, sudo mkfs.ext4 -L data /dev/sdb4
Set volume label of /data partition as userdata : use -L option for mkfs.ext4

Write system & vendor partition

$ cd out/target/product/unmatched
$ sudo dd if=vendor.img of=/dev/<p1> bs=1M
$ sudo dd if=system.img of=/dev/<p2> bs=1M

Copy firmware & ramdisk to boot partition

$ cp -ra device/arv/unmatched/boot/* to p3:/
$ cp -ra out/target/product/unmatched/ramdisk.img to p3:/

Download & Build kernel

Install cross-compiler

$ sudo apt install gcc-riscv64-linux-gnu

Git clone following kernel source under separate folder apart from Android

git clone https://android.googlesource.com/kernel/common linux -b android14-6.1-lts

Build the kernel

$ ARCH=riscv scripts/kconfig/merge_config.sh arch/riscv/configs/defconfig kernel/configs/android-base.config kernel/configs/android-recommended.config
$ ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- make Image.gz sifive/hifive-unmatched-a00.dtb -j$(nproc)

Copy kernel binaries to boot partition

<kernel directory>/arch/riscv/boot/Image.gz to p3:/
<kernel directory>/arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dtb.dtb to p3:/dtbs/sifive/

Connect USB keyboard before power-up the board, at least one input device should exist.

Reference

  • android-risc-v/device_arv_jh7110
  • android-risc-v/hardware_arv
  • android-risc-v/kernel_arv
  • 史上最简最全,Android AOSP源码阅读+编译环境这一篇就够了

相关文章:

  • C语言中switch语句中的case后()
  • React TSX 从一组二维数据中,重新挑选数组组成新数组示例:
  • 实现 Spring Boot 项目热重载,无需重启,省时省力
  • DDOS攻击简介——什么是DDOS
  • PyQt5实现学生管理系统第三天(下)
  • 无法获取前置摄像头的预览图像?【Bug已解决-鸿蒙开发】
  • JavaScript 数组【详解】
  • LabVIEW在横向辅助驾驶系统开发中的应用
  • Spring中的上下文工具你写的可能有bug
  • 创建ROS的软件包服务器
  • 量子密码学简介
  • ADRC-跟踪微分器TD的Maltab实现及参数整定
  • 智慧城市新型基础设施建设综合方案:文件全文52页,附下载
  • pycharm2023.2激活和新建项目,python3.12安装永久换源
  • 2312llvm,用匹配器构建clang工具
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 2018一半小结一波
  • express + mock 让前后台并行开发
  • java8 Stream Pipelines 浅析
  • javascript 总结(常用工具类的封装)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Mithril.js 入门介绍
  • node学习系列之简单文件上传
  • Python进阶细节
  • Rancher如何对接Ceph-RBD块存储
  • Ruby 2.x 源代码分析:扩展 概述
  • springboot_database项目介绍
  • Vue2.0 实现互斥
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue全家桶实现一个Web App
  • WebSocket使用
  • 大数据与云计算学习:数据分析(二)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 简析gRPC client 连接管理
  • 聊一聊前端的监控
  • 什么是Javascript函数节流?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #include
  • #includecmath
  • (day 12)JavaScript学习笔记(数组3)
  • (javascript)再说document.body.scrollTop的使用问题
  • (第61天)多租户架构(CDB/PDB)
  • (离散数学)逻辑连接词
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)深入super,看Python如何解决钻石继承难题
  • .NET Core Web APi类库如何内嵌运行?
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .Net FrameWork总结
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net操作Excel出错解决