# 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