5 Star 3 Fork 2

Phytium嵌入式软件 / FT2004-Android10-Device

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

FT2004EVB上Bringup Android10.0

本文介绍如何在天津飞腾信息科技有限公司FT2004 EVB board上Bringup Android10.0方法。

搭建开发环境

1.准备一台装有ubuntu20.04系统X86主机,内存最低配置要求16G。
2.新建一个存放下载脚本文件的目录:
mkdir ~/bin
PATH=~/bin:$PATH
3.下载repo脚本文件
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
vi ~/bin/repo
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
改为
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
4.安装JDK 8
sudo apt-get install openjdk-8-jdk
5.安装依赖库
5.1 sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt-get install libncurses5
5.2 安装依赖库时遇到libesd0-dev 安装不成功
E: 无法定位软件包 libesd0-dev
sudo vim /etc/apt/sources.list //在行尾添加如下两行的内容
deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe
sudo apt-get update && sudo apt-get install libesd0-dev
5.3 将默认python版本指定位phyton2
ln -s /usr/bin/python2 /usr/bin/python

代码下载

1.创建存放android源码的目录,进到该目录:
mkdir android_source
cd android_source
2.下载初始化包
wget -c -t 0 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar xvf aosp-latest.tar
3.解压后看到一个aosp的目录,进到该目录,同步到Android-10.0.0_R33版本
cd aosp
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r33
repo sync

温馨提示: 1.此处我们通过wget下载的是清华打包好的源,由于地域或者网络因素可能下载会很慢而且可能wget会异常退出,这个建议开发者最好是最清晨或者网络比较空闲的时候下载
2.如果使用清华的源下载的速度非常慢的话,建议开发者可以切换到中科大的源进行先关的操作,具体可以详见博客使用清华或中科大AOSP源镜像下载Android源码中科大AOSP 镜像使用帮助

代码整合

查看device/phytium/ft2004/patch/Readme文件
1.1 device/phytium/ft2004/patch目录下,增加和替换aosp项目中externl目录中对应的文件
1.2 合入system目录的patch
1.3 将libaudio.tar.gz解压到hardware目录; 将libcamera.tar.gz 解压到hardware目录
1.4 从phytium公司gitee网站中FT2004-Android10-Device仓库代码,将其拷贝到aosp目录下

代码编译

1.android system.img vendor.img 编译
1.1 cd aosp
source ./build/envsetup.sh
lunch
可以看到
You're building on Linux
Lunch menu... pick a combo:
1. android_ft2004-eng
2. android_ft2004-user
3. android_ft2004-userdebug
.....

 Which would you like? [aosp_arm-eng]  

输入3, 选择编译android_ft2004-userdebug这个工程

温馨提示: 1.在开发阶段我们可以选择userdebug工程,实际生产或者测试相关性能的时候强烈建议切到user模式
2.当我们从userdebug切到user模式进行相关烧录的时候,注意一定要对userdata分区进行相关清除工作(格式化或者直接删除掉该分区相关的内容),否则Android系统会启动异常

1.2
make -j4
开始编译过程,这里j后面的数字依据cpu的核数调整。第一次编译很耗时,Intel I5-9500 6核
4线程CPU编译时间为5小时左右。

温馨提示: 1.如果编译机器的配置不是特别高,强烈建议编译线程数不要过多,否则编译机器会出现操作迟缓甚至卡死的情况
2.在make的过程中可能会出现稍许错误(这个和个人的编译环境有关,有些情况我们也有可能是不能预知的),这个开发者可以根据实际情况来进行修改从而使编译通过
3.在编译过程中有开发者反馈会出现system分区分配的空间过小,导致编译失败的问题,如下:
在这里插入图片描述 如果出现这种情况,开发者可以根据实际情况修改device/phytium/ft2004/BoardConfig.mk的配置选项,如下: 在这里插入图片描述

1.3 编译成功,在out/target/product/ft2004目录下,就会看到编译生成的文件。 如下: 在这里插入图片描述

1.4 进到 ramdisk目录下,执行下面命令
find . | cpio -o -Hnewc |gzip -9 > ../image.cpio.gz
可以在上一级目录下看到image.cpio.gz这个文件,该文件为根文件系统,在编译kernel时会用到

2.kernel image 编译
2.1 安装编译kernel交叉编译工具链
2.1.1 下载Linaro交叉环境编译工具链
Linaro是一家非营利性质的开源软件公司,自成立以来一直致力于推动基于ARM的开源
软件开发,提供多种编译工具链,为基于Linux内核的开发这提供了稳定的编译环境。
基于Linaro的交叉编译工具链可从Linaro 官网下载,以下截止到2020年7月时最新版本的交叉编译工具: https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
2.1.2 解压到/opt目录
tar xvJf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C /opt
2.1.3 配置环境变量
export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
2.2 到phytium公司指定途径获得kernel 代码
2.3 合入需要支持显卡的修改
2.4 amd和radeon显卡,需要合入FT2004-Android10-Device仓库中kernel_radeon_amd_gpu_patch.diff中的改动
kernel_radeon_amd_gpu_patch.diff在device/phytium/ft2004/patch目录下
2.5 选择将1.4中的image.cpio.gz和kernel编译在一起
进到kernel 代码根目录,执行make menuconfig
选择进入General setup --->
选择Initial RAM filesystem and RAM disk(init ramfs/initrd) support
在 Initramfs source file(s) 项中输入image.cpio.gz文件路径,路径从根目录开始,例如文件保存在
用户的tmp目录下,则输入 /home/username/tmp/image.cpio.gz
保存退出
2.6 ARCH=arm64 scripts/kconfig/merge_config.sh arch/arm64/configs/defconfig arch/arm64/configs/sdk.config kernel/configs/android-base.config kernel/configs/android-recommended.config
2.7 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j6 开始kernel编译
2.8 编译完成,在kernel/arch/arm64/boot目录下,会生成Image文件。
在kenel/linux-4.19/arch/arm64/boot/dts/phytium/目录下,生成了ft2004-devboard-d4-dsk.dtb文件

镜像烧写

1.准备一块SATA硬盘,删除原有分区后,创建4个分区 在linux下,使用fdsik命令分区
p1 256MB for BOOT
p2 1920MB for /system : Do fdisk, new primary partition
p3 128MB for /vendor : Do fdisk, new primary partition
p4 remainings for /data, data分区依据硬盘大小,可以分的大一些,应有都会装在这个分区里。

温馨提示: 1.对于fdisk的使用不是很熟悉的,请开发者自行百度或者谷歌。或者通过命令查看帮助选项如下: 在这里插入图片描述

2.上述分区的大小只是建议,开发者可以根据实际情况来确定每个分区的大小。通常system分区和vendor分区和data分区分大点,预留升级空间。
3.且随着Android版本的sync,可能编译出来的vendor和system分区都会大于上述我们既定的大小,这个开发者可以自行修改不会影响正常的启动,并且对于data分区这个就是多多益善了。

2.将Boot分区格式化为ext4格式,并设置分区名称,/dev/sdX中的X要依据该盘实际名字修改
sudo mkfs.ext4 -L boot /dev/sdX1
sudo mkfs.ext4 -L userdata /dev/sdX4

3.烧写system分区和endor分区
进到aosp/target/product/ft2004目录下
sudo dd if=system.img of=/dev/sdX2 bs=1M
sudo dd if=vendor.img of=/dev/sdX3 bs=1M
sync

4.拷贝的kernel镜像和设备树文件到boot分区

sudo cp kernel/arch/arm64/boot/Image to p1:/
sudo cp kernel/arch/arm64/boot/dts/phytium/ft2004-devboard-d4-dsk.dtb p1:/

设备启动

1.FT2004 EVB 选择uboot启动方式
2.连接烧写好的SATA硬盘
3.连接串口线
4.打开putty,选择串口连接,波特率设置为115200
5.开机,串口console配置环境变量
5.1
setenv bootargs console=ttyAMA1,115200 earlycon=p1011,0x28001000 root=/dev/ram0 elevator=deadline rootwait rw loglevel=7 androidboot.hardware=android_ft2004 androidboot.selinux=permissive
ext4load scsi 0:1 0x90100000 ft2004-devboard-d4-dsk.dtb
ext4load scsi 0:1 0x90200000 Image
booti 0x90200000 - 0x90100000
5.2
设置DPI。它会影响Android界面图标的大小。在bootargs中添加一项 DPI=160.

遗留问题

1.安装32位应用,当打开过应用时,后面再次打开应用时需要清出应用的缓冲区
2.窗口无法自动翻转

开源许可协议

Apache 2.0

维护者邮箱

飞腾信息技术有限公司
zhangjianwei@phytium.com.cn
tangkaiwen@phytium.com.cn

空文件

简介

Android10.0中FT2004 EVB board配置文件。lunch名字为 android_ft2004-userdebug。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/phytium_embedded/ft2004-android10-device.git
git@gitee.com:phytium_embedded/ft2004-android10-device.git
phytium_embedded
ft2004-android10-device
FT2004-Android10-Device
master

搜索帮助