当前位置: 首页 > 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源码阅读+编译环境这一篇就够了
http://www.lryc.cn/news/267923.html

相关文章:

  • 【Fastadmin】通用排序weigh不执行model模型的事件
  • logstash收集华为、H3C、Cisco交换机日志
  • 云上荆楚丨云轴科技ZStack成功实践精选(湖北)
  • C语言字符串处理提取时间(ffmpeg返回的时间字符串)
  • NC(65)元数据增加字段
  • SParC数据集介绍
  • OpenGL 绘制Mesh数据(Qt)
  • 9.传统的轨道画线算法()
  • F (1164) : B DS二叉排序树_有效的二叉排序树
  • 结合el-upload修改支持上传图片、视频并预览
  • 1.SQL - 概述
  • GaussDB数据库表创建行访问控制策略
  • 提升设备巡检效率的关键:易点易动设备管理系统的应用
  • 【C++】STL 容器 - list 双向链表容器 ① ( 容器特点 | 容器操作时间复杂度 | 构造函数 )
  • [C/C++]数据结构 希尔排序
  • SQL进阶:子查询
  • 5、IDEA集成Git
  • oracle数据库sqlplus登录卡顿
  • 【C#】Visual Studio 2022 远程调试配置教程
  • LSTM的记忆能力实验
  • Unity之ShaderGraph如何实现瓶装水效果
  • 【python与机器学习3】感知机和门电路:与门,或门,非门等
  • 关键字:extends关键字
  • KEPServerEX 6 之【外篇-1】PTC-ThingWorx服务端软件安装 Tomcat10本地安装
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • 万能刷题小程序源码系统:功能强大+试题管理+题库分类+用户列表 附带完整的搭建教程
  • 5.2 显示窗口的内容(二)
  • SpringCloud 整合 Canal+RabbitMQ+Redis 实现数据监听
  • 一体机定制_工控触控一体机安卓主板方案
  • Android10.0 人脸解锁流程分析