# T-HEAD Android
本项目为平头哥维护的生态开发板对安卓开源项目(AOSP)支持的仓库,主要包含了生态开发板的板级配置、外设HAL层、内核、u-boot和预编译组件支持,其余组件则可直接从上游AOSP仓库拉取。目前仓库中维护了基于[曳影1520](https://occ.t-head.cn/product/wujian/4080405462988689408?spm=a2cl5.27298288.0.0.60998L2t8L2tm0&product=wujian600) SoC原型的BeagleV Ahead和Lichee Pi 4A开发板相关支持。
平头哥一直致力于RISC-V架构的安卓支持,开源了安卓10和安卓12两个版本的RISC-V架构支持,推动了RISC-V架构支持向安卓主线的合入并贡献了大量补丁提交;目前RISC-V架构已经得到了安卓开源项目的官方支持并作为Tire 1目标进行维护;后续平头哥也会持续贡献AOSP主线、上游三方项目、算法库优化、生态开发板、应用支持和RISC-V标准规范制定,帮助RISC-V的安卓支持在功能、性能、稳定性以及软硬件生态上进一步完善;也欢迎社区开发者参与到RISC-V的安卓支持和生态开发板支持的贡献。
## 生态开发板
### BeagleV Ahead
BeagleV Ahead是Beagle board推出的开发板产品,可以支持安卓、Debian、Ubuntu等多种操作系统;开发板集成了TH1520 SoC,包含4核运行于1.85G的玄铁C910处理器和4TOPS算力的NPU,内置GPU支持OpenGL ES、OpenCL和Vulkan,拥有USB、WiFI/BT、以太网、hdmi、mipi csi/dsi等多种设备接口,可用于视频会议一体机、人脸识别考勤门禁、医学成像等AI边缘计算应用场景。
![beaglev](https://gitee.com/thead-android/thead-android/raw/master/resources/beaglev.jpeg)
图 1. BeagleV Ahead
更多信息可以访问beagleboard文档页面了解:
https://beaglev-ahead.beagleboard.io/docs/latest/boards/beaglev/ahead/index.html
### Lichee Pi 4A EVB
Lichee Pi 4A是Sipeed推出的开发板产品,可以支持安卓、Debian、OpenWrt等多种操作系统;开发板集成了TH1520 SoC,包含4核运行于1.85G的玄铁C910处理器和4TOPS算力的NPU,内置GPU支持OpenGL ES、OpenCL和Vulkan,拥有USB、WiFI/BT、以太网、hdmi、mipi csi/dsi等多种设备接口,可用于视频会议一体机、人脸识别考勤门禁、医学成像等AI边缘计算应用场景。
![licheepi4a](https://gitee.com/thead-android/thead-android/raw/master/resources/licheepi4a.png)
图 2. Lichee Pi 4A EVB
更多信息可以访问sipeed官网了解:
https://wiki.sipeed.com/licheepi4a
## 快速上手
在下载安卓开源项目源代码之前,请检查您的工作环境,建议使用具有至少250G磁盘空间、16GB+内存的Linux系统(推荐使用Ubuntu 20.04以上版本)的工作环境, 编译时间和主机的处理器核心数有关,建议使用有较多核心的主机。
将安卓开源项目(主线版本)和开发板支持源代码下载到工作目录,使用固定版本上游代码:
```
mkdir riscv-android-src && cd riscv-android-src
repo init -u https://gitee.com/thead-android/local_manifests.git -b main_2023_7_7
git clone https://gitee.com/thead-android/local_manifests.git .repo/local_manifests -b thead-android-community
repo sync
```
使用最新版本上游代码,可能会由于兼容性导致一些编译问题:
```
mkdir riscv-android-src && cd riscv-android-src
repo init -u https://android.googlesource.com/platform/manifest -b master
git clone https://gitee.com/thead-android/local_manifests.git .repo/local_manifests -b thead-android-community
repo sync
```
若无法连接google源可使用清华源镜像:
```
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
```
### BeagleV Ahead
完成下载后可以通过以下命令对系统进行构建
```
source build/envsetup.sh
lunch beaglev_ahead-userdebug
m -j
```
编译生成文件如下所示,可以将需要的文件拷贝供fastboot使用
```
$ ls out/target/product/beaglev_ahead/*img
out/target/product/beaglev_ahead/boot.img out/target/product/beaglev_ahead/super_empty.img out/target/product/beaglev_ahead/vendor_boot-debug.img
out/target/product/beaglev_ahead/cache.img out/target/product/beaglev_ahead/system.img out/target/product/beaglev_ahead/vendor_boot-test-harness.img
out/target/product/beaglev_ahead/dtb.img out/target/product/beaglev_ahead/system_ext.img out/target/product/beaglev_ahead/vendor_boot.img
out/target/product/beaglev_ahead/dtbo-unsigned.img out/target/product/beaglev_ahead/userdata.img out/target/product/beaglev_ahead/vendor_ramdisk-debug.img
out/target/product/beaglev_ahead/dtbo.img out/target/product/beaglev_ahead/vbmeta.img out/target/product/beaglev_ahead/vendor_ramdisk-test-harness.img
out/target/product/beaglev_ahead/product.img out/target/product/beaglev_ahead/vbmeta_system.img out/target/product/beaglev_ahead/vendor_ramdisk.img
out/target/product/beaglev_ahead/ramdisk.img out/target/product/beaglev_ahead/vendor-bootconfig.img
out/target/product/beaglev_ahead/super.img out/target/product/beaglev_ahead/vendor.img
$ mkdir fastboot
$ cd out/target/product/beaglev_ahead/
$ cp u-boot-with-spl.bin bootpart.ext4 boot.img super.img userdata.img vbmeta.img vbmeta_system.img vendor_boot.img ../../../../../fastboot/
```
![beaglev_connect](https://gitee.com/thead-android/thead-android/raw/master/resources/beaglev_connect.png)
图3. BeagleV Ahead 连接
开发板使用主要需要连接电源、串口、usb和显示:
- 串口主要用于U-boot和内核中的命令交互,可通过底板上Debug的RX和TX连接,波特率为115200
- USB Device接口主要用于fastboot和adb工具的连接
- MIPI DSI/HDMI接口可以使用于连接屏幕显示UI界面
对系统进行完整烧写需要按住开发板的USB按键同时按复位键进入boot烧写模式。
之后使用fastboot对系统镜像进行烧写,adb和fastboot工具可以访问安卓开发者网站下载
https://developer.android.com/tools/releases/platform-tools
```
#烧录uboot并初始化boot环境变量
fastboot flash ram u-boot-with-spl.bin
fastboot reboot
fastboot flash uboot u-boot-with-spl.bin
#烧录各个分区
#在非boot烧写模式,可以在uboot的命令行中输入命令fastboot usb 0,单独烧录分区
fastboot flash bootpart bootpart.ext4
fastboot flash boot boot.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash super super.img
fastboot flash userdata userdata.img
fastboot flash vbmeta vbmeta.img
fastboot flash vbmeta_system vbmeta_system.img
#初始化metadata和misc分区
fastboot erase metadata
fastboot erase misc
```
当完成烧写后重新复位上电进入系统启动模式,可以通过串口/ADB访问系统的命令行,并可通过触屏或外接HDMI显示系统图像界面进行交互。
![beaglev_aosp](https://gitee.com/thead-android/thead-android/raw/master/resources/beaglev_aosp.png)
图4.在BeagleV Ahead上运行AOSP主线
### Lichee Pi 4A EVB
完成下载后可以通过以下命令对系统进行构建
```
source build/envsetup.sh
#若使用Lichee Pi 4A开发板
lunch lichee_pi_4a-userdebug
m -j
```
编译生成文件如下所示,可以将需要的文件拷贝供fastboot使用
```
$ ls out/target/product/lichee_pi_4a/*img
out/target/product/lichee_pi_4a/boot.img out/target/product/lichee_pi_4a/super_empty.img out/target/product/lichee_pi_4a/vendor_boot-debug.img
out/target/product/lichee_pi_4a/cache.img out/target/product/lichee_pi_4a/system.img out/target/product/lichee_pi_4a/vendor_boot-test-harness.img
out/target/product/lichee_pi_4a/dtb.img out/target/product/lichee_pi_4a/system_ext.img out/target/product/lichee_pi_4a/vendor_boot.img
out/target/product/lichee_pi_4a/dtbo-unsigned.img out/target/product/lichee_pi_4a/userdata.img out/target/product/lichee_pi_4a/vendor_ramdisk-debug.img
out/target/product/lichee_pi_4a/dtbo.img out/target/product/lichee_pi_4a/vbmeta.img out/target/product/lichee_pi_4a/vendor_ramdisk-test-harness.img
out/target/product/lichee_pi_4a/product.img out/target/product/lichee_pi_4a/vbmeta_system.img out/target/product/lichee_pi_4a/vendor_ramdisk.img
out/target/product/lichee_pi_4a/ramdisk.img out/target/product/lichee_pi_4a/vendor-bootconfig.img
out/target/product/lichee_pi_4a/super.img out/target/product/lichee_pi_4a/vendor.img
$ mkdir fastboot
$ cd out/target/product/lichee_pi_4a/
$ mkdir fastboot
$ cp bootpart.ext4 boot.img super.img userdata.img vbmeta.img vbmeta_system.img vendor_boot.img ../../../../../fastboot/
```
![licheepi4a_connect](https://gitee.com/thead-android/thead-android/raw/master/resources/licheepi4a_connect.png)
图5. Lichee Pi 4A EVB 连接
开发板使用主要需要连接电源、串口、usb和显示:
- 串口主要用于U-boot和内核中的命令交互,可通过底板上 GPIO 的 U0-RX 和 U0-TX连接,波特率为115200
- USB Device接口主要用于fastboot和adb工具的连接
- MIPI DSI/HDMI接口可以使用于连接屏幕显示UI界面
对系统进行完整烧写需要按住开发板的boot按键同时按复位键进入boot烧写模式。
之后使用fastboot对系统镜像进行烧写,adb和fastboot工具可以访问安卓开发者网站下载
https://developer.android.com/tools/releases/platform-tools
```
#烧录uboot并初始化boot环境变量
fastboot flash ram u-boot-with-spl.bin
fastboot reboot
fastboot flash uboot u-boot-with-spl.bin
#烧录各个分区
#在非boot烧写模式,可以在uboot的命令行中输入命令fastboot usb 0,单独烧录分区
fastboot flash bootpart bootpart.ext4
fastboot flash boot boot.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash super super.img
fastboot flash userdata userdata.img
fastboot flash vbmeta vbmeta.img
fastboot flash vbmeta_system vbmeta_system.img
#初始化metadata和misc分区
fastboot erase metadata
fastboot erase misc
```
当完成烧写后重新复位上电进入系统启动模式,可以通过串口/ADB访问系统的命令行,并可通过触屏或外接HDMI显示系统图像界面进行交互。
![licheepi4a_aosp](https://gitee.com/thead-android/thead-android/raw/master/resources/licheepi4a_aosp.png)
图6.在Lichee Pi 4A上运行AOSP主线
## 改动列表
2023/07/06
- 发布 BeagleV Ahead 开发板 Alpha版本支持
- 发布 Lichee Pi 4A EVB Alpha版本支持
## 贡献
本项目使用Pull Requests接收外部贡献,可参考以下流程:
1. 在个人账户中Fork需要修改的代码仓库。
2. 创建一个对应于改动的开发分支。
3. 用个人账户下的代码仓库替换原始仓库来源和修订版本:
```
-
+
```
4. 所有新工作都应基于相应的开发分支。
5. 创建提交时需要尽量保证改动的独立和完整,并填写适当的提交消息。
6. 创建改动时最好包含相关单元测试结果。
7. 将开发分支推送到你在 Gitee 上的个人存储库 Fork。
8. 创建一个针对相应开发分支的Gitee Pull Request,若该提交为bug修复请将该提交关联至问题跟踪器中的问题。
## 相关链接
本项目问题跟踪器(生态板支持安卓相关问题请提交至该跟踪器):
https://gitee.com/thead-android/thead-android/issues
平头哥其他开源软件项目可以通过以下链接进行访问:
T-HEAD Yocto Linux: https://gitee.com/thead-yocto
YoC Open: https://gitee.com/yocop
若希望了解更多TH1520原形及无剑600平台信息可以访问:
https://xuantie.t-head.cn/product/wujian/4080405462988689408
若希望了解更多RISC-V架构安卓支持的动态,可以订阅RISC-V Android SIG邮件列表,参与社区讨论:
https://lists.riscv.org/g/sig-android
若对RISC-V架构的安卓支持有任何疑问,可以提交问题至Android-riscv64的通用问题跟踪:
https://github.com/google/android-riscv64/issues
## 许可证
我们不需要任何正式的版权转让或贡献者许可协议。任何有意向本仓库提交的贡献都被认为是按照Apache许可证2.0条款提供的。有关详细信息请参见LICENSE文件。
## 关于我们
该仓库由阿里巴巴平头哥维护。
若需要技术支持可以通过OCC提交工单:
https://occ.t-head.cn/people/workorder-submit
也可以通过以下方式联系我们:
邮箱: occ_thead@service.alibaba.com