4 Star 3 Fork 4

Phytium嵌入式软件/E2000-Android11-Device

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

  Phytium Android11 E2000 Device Bring up

引言

该项目主要是介绍如何在飞腾信息科技有限公司的E2000开发板上移植Android11 aosp和AMD显卡启动方案!如果您对该项目感兴趣的话,让我们一起来愉快的开启飞腾芯片运行Android系统之旅!




一.搭建开发环境

万事开头难,不过木有关系,千里之行始于足下吗!让我们先从最最简单的搭建Android aosp编译开发环境为起点,来开始我们的Android系统启动之旅!

1.1 准备一台装有ubuntu20.04系统X86主机,内存最低配置要求16G。

当然这个只是最低配置的要求,机器性能肯定是多多益善。配置越高,编译速度越快!而且强烈建议不要使用虚拟机安装ubuntu,而是直接安装ubuntu系统。不要问为什么,因为虚拟机跑ubuntu的效率太低,编译起来那酸爽,你懂的!

1.2 新建一个存放下载脚本文件的目录:

  mkdir ~/bin  
  PATH=~/bin:$PATH        

1.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'  

1.4.安装JDK 8

  sudo apt-get install openjdk-8-jdk  

1.5.安装编译依赖库

构建Android编译需要依赖的库非常多,如下都是我们需要安装下载的库:

  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  

如果在安装依赖库时遇到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

1.6.修改编译服务器默认python版本

将默认python版本指定位python2 ,执行如下命令

   ln -s /usr/bin/python2 /usr/bin/python  



二.Android aosp源代码下载

经过前面的一顿操作,我们Android的开发环境已经构建OK了(Android源码下载环境和编译环境),此时我们可以进行下载Android aosp源码的步骤了。

2.1 创建存放android aosp源码的目录,进到该目录:

  mkdir AN  
  cd AN  

2.2.下载初始化包

执行如下命令:

wget -c -t 0 --user-agent="Mozilla" https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar xvf aosp-latest.tar

2.3.解压后看到一个aosp的目录,进到该目录,同步到android-11.0.0_r37版本

cd aosp
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r37
repo sync

下载完成后的目录结构如下:

tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ cd aosp/
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp$ ls
Android.bp      build          development  ir3_parser.tab.c  out               sdk
art             compatibility  device       kernel            packages          system
bionic          cts            external     libcore           pdk               test
bootable        dalvik         frameworks   libnativehelper   platform_testing  toolchain
bootstrap.bash  developers     hardware     Makefile          prebuilts         tools
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp$ 

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




三. 代码整合

妈啊,不容易啊到这里,我们Android的编译环境和aosp源码也都已经下载OK了。是时候和入飞腾适配相关的源码了!

3.1 下载飞腾相关Android源码部分

这里强烈建议朋友们,不要将飞腾对Android源码修改部分下载到前面Android aosp仓库的根目录下面,最后是和Android根目录平级的一个目录。

开始下载,执行clone命令:

tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ git clone  https://gitee.com/phytium_embedded/e2000-android11-device.git
Cloning into 'e2000-android11-device'...
remote: Enumerating objects: 124436, done.
remote: Counting objects: 100% (124436/124436), done.
remote: Compressing objects: 100% (98852/98852), done.
remote: Total 124436 (delta 21032), reused 124429 (delta 21031), pack-reused 0
Receiving objects: 100% (124436/124436), 336.71 MiB | 9.04 MiB/s, done.
Resolving deltas: 100% (21032/21032), done.
Updating files: 100% (117557/117557), done.

执行完成之后,飞腾部分Android源码下载ok,这里我通过命令查看下:

tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ tree  -L 1 e2000-android11-device/
e2000-android11-device/
├── device_phytium_e2000
├── e2000_android_kernel.patch
├── external_alsa-lib
├── external_alsa-utils
├── external_drm_framebuffer
├── external_gbm_gralloc
├── external_libdrm
├── external_llvm-project
├── external_mesa
├── external_shaderc
├── external_toybox
├── hardware_interfaces
├── hardware_libaudio
├── hardware_libcamera
├── image
├── phytium_android11_patch
├── phytium_env.sh
├── LICENSE
├── README.md
└── system_core

16 directories, 4 files



3.2 执行飞腾android相关源码和入

飞腾android相关源码下载完毕之后,我们就可以执行和入代码呢,我们可以执行如下的操作:

tangkaiwen@phytium-PowerEdge-R740xd:~/AN/e2000-android11-device$ chmod 777 phytium_env.sh 
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/e2000-android11-device$ ./phytium_env.sh  /home/tangkaiwen/AN/aosp
THE ANDROID_PATH_ROOT /home/tangkaiwen/AN/aosp 
 #### sync phytium env start! #### 
 #### sync system_core  #### 
 #### sync system_core end  #### 
 #### sync device_phytium_e2000  #### 
 #### sync device_phytium_e2000 end  #### 
 #### sync hardware_libaudio  #### 
 #### sync hardware_libaudio end  #### 
 #### sync hardware_libcamera  #### 
 #### sync hardware_libcamera end  #### 
 #### sync hardware_interfaces  #### 
 #### sync hardware_interfaces end  #### 
 #### sync external_alsa-lib  #### 
 #### sync external_alsa-lib end  #### 
 #### sync external_alsa-utils  #### 
 #### sync external_alsa-utils end #### 
 #### sync external_shaderc  #### 
 #### sync external_shaderc end  #### 
 #### sync external_toybox  #### 
 #### sync external_toybox end #### 
 #### sync external_libdrm  #### 
 #### sync external_libdrm end #### 
 #### sync external_llvm-project  #### 
 #### sync external_llvm-project end #### 
 #### sync external_mesa  #### 
 #### sync external_mesa end #### 
 #### sync external_gbm_gralloc  #### 
 #### sync external_gbm_gralloc end #### 
 #### sync external_drm_framebuffer  #### 
 #### sync external_drm_framebuffer end #### 
 #### apply patch  ####
 
patching file frameworks/av/media/libstagefright/colorconversion/ColorConverter.cpp
patching file frameworks/av/media/libstagefright/colorconversion/SoftwareRenderer.cpp
patching file frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java
patching file frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java
 #### applay patch end ####
 
 #### sync phytium end! #### 

这里我们需要对上述脚本传入一个参数,即前面我们下载好之后的aosp源码路径。




四.编译Android代码

执行到这里,万事俱备只欠东风了。我们可以开始最终的Android源码编译和构建了。这里我们分为如下两部分进行:

4.1 lunch编译项目

进入前面aosp的根目录执行,如下命令:

tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp$ 
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp$ source build/envsetup.sh && lunch 41

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=11
TARGET_PRODUCT=e2000
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-5.15.0-56-generic-x86_64-Ubuntu-20.04.5-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=RQ2A.210505.003
OUT_DIR=out
PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl
============================================
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp$ make


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

4.2 开始构建lunch项目

开始编译过程,这里j后面的数字依据cpu的核数调整。第一次编译很耗时,Intel I5-9500 6核
4线程CPU编译时间为5小时左右(当然线程数越多越好,但是如果编译服务器不够强大,那么开几个线程都是假的了)

  make -j4  

温馨提示:
1.如果编译机器的配置不是特别高,强烈建议编译线程数不要过多,否则编译机器会出现操作迟缓甚至卡死的情况
2.在make的过程中可能会出现稍许错误(这个和个人的编译环境有关,有些情况我们也有可能是不能预知的),这个开发者可以根据实际情况来进行修改从而使编译通过

4.3 构建根文件系统

进入out下面的ramdisk目录,执行如下命令生成根文件系统镜像

tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp/out/target/product/e2000/ramdisk$ 
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp/out/target/product/e2000/ramdisk$  find . | cpio -o -Hnewc > ../initramfs.img  
4062 blocks

4.4 查看最终构建结果

编译成功,我们可以到out/target/product/e2000目录下查看,就会看到编译生成的相关镜像文件。 如下:

tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp$ cd out/target/product/e2000/
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/aosp/out/target/product/e2000$ ls
android-info.txt       initramfs.img                       installed-files-vendor.txt  recovery
apex                   installed-files.json                misc_info.txt               root
appcompat              installed-files-ramdisk-debug.json  module-info.json            symbols
build_fingerprint.txt  installed-files-ramdisk-debug.txt   module-info.json.rsp        system
build_thumbprint.txt   installed-files-ramdisk.json        obj                         system.img
clean_steps.mk         installed-files-ramdisk.txt         obj_arm                     userdata.img
data                   installed-files-root.json           previous_build_config.mk    vendor
debug_ramdisk          installed-files-root.txt            ramdisk                     vendor.img
fake_packages          installed-files.txt                 ramdisk-debug.img
gen                    installed-files-vendor.json         ramdisk.img




五.编译E2000内核

通过前面一顿猛如虎的操作,我们完成了Android镜像的编译了,是时候来编译飞腾相关的内核镜像了。大致流程无外乎,下载,配置编译环境,编译!

5.1下载E2000内核,然后切到正确分支

tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ 
tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ git clone  https://gitee.com/phytium_embedded/phytium-linux-kernel.git  phytium_android_kernel
Cloning into 'phytium_android_kernel'...
remote: Enumerating objects: 8031123, done.
remote: Counting objects: 100% (148/148), done.
remote: Compressing objects: 100% (148/148), done.
remote: Total 8031123 (delta 110), reused 0 (delta 0), pack-reused 8030975
Receiving objects: 100% (8031123/8031123), 1.50 GiB | 2.99 MiB/s, done.
Resolving deltas: 100% (6764024/6764024), done.
Updating files: 100% (62233/62233), done.
tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ cd phytium_android_kernel
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/phytium_android_kernel$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/linux-4.19
  remotes/origin/linux-4.19-rt
  remotes/origin/linux-5.10
  remotes/origin/linux-5.10-rt
  remotes/origin/master
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/phytium_android_kernel$ git checkout remotes/origin/linux-4.19
Note: switching to 'remotes/origin/linux-4.19'.
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/phytium_android_kernel$ git branch -a
* (HEAD detached at origin/linux-4.19)
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/linux-4.19
  remotes/origin/linux-4.19-rt
  remotes/origin/linux-5.10
  remotes/origin/linux-5.10-rt
  remotes/origin/master


5.2 构建正确config配置

将前面git仓库下的e2000仓库中相关内核的配置打入内核工程文件,如下

tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ cd phytium_android_kernel/ 
tangkaiwen@phytium-PowerEdge-R740xd:~/AN/phytium_android_kernel$ git applay ~/AN/e2000-android11-device/e2000_android_kernel.patch ./

5.3 构建编译环境开始编译

  • 下载Linaro 的交叉编译工具链,具体地址如下:

    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
    
  • 解压到/opt 目录

    $ export PATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$P
    ATH
    $ export ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
    $ export CC=aarch64-linux-gnu-gcc
    $ cd ~/AN/phytium_android_kernel
    $ make e2000_android_defconfig
    $ make
    
  • 配置环境变量和编译内核




六. 镜像烧写

通过前面艰苦卓绝的战斗,我们终于构建出来我们想要的各种Android镜像文件了,是时候见证奇迹的时刻了,让我们通过上述镜像来开启我们的Android启动之旅!

6.1 烧录分区初始化

首先准备一块SATA硬盘,删除原有分区后,创建4个分区, 这里我们在linux下以伪代码来介绍下fdsik创建相关分区

  p1 256MB for BOOT  
  p2 1920MB for /system : Do fdisk, new primary partition  
  p3 256MB for /vendor : Do fdisk, new primary partition  
  p4 remainings for /data, data分区依据硬盘大小,可以分的大一些,应有都会装在这个分区里。  

这里我简单的来实际操作一番,如下:

tangkw@tangkw:~$ sudo fdisk  /dev/sdb

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-1953525134, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525134, default 1953525134): +256M

Created a new partition 1 of type 'Linux filesystem' and of size 256 MiB.

Command (m for help): n
Partition number (2-128, default 2): 
First sector (526336-1953525134, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-1953525134, default 1953525134): +2G

Created a new partition 2 of type 'Linux filesystem' and of size 2 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Command (m for help): n
Partition number (3-128, default 3): 
First sector (4720640-1953525134, default 4720640): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4720640-1953525134, default 1953525134): +256M

Created a new partition 3 of type 'Linux filesystem' and of size 256 MiB.

Command (m for help): n
Partition number (4-128, default 4): 
First sector (5244928-1953525134, default 5244928): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (5244928-1953525134, default 1953525134): +20G

Created a new partition 4 of type 'Linux filesystem' and of size 20 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

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

tangkaiwen@phytium-PowerEdge-R740xd:~/AN$ sudo fdisk -h

Usage:
 fdisk [options] <disk>      change partition table
 fdisk [options] -l [<disk>] list partition table(s)

Display or manipulate a disk partition table.

Options:
 -b, --sector-size <size>      physical and logical sector size
 -B, --protect-boot            don't erase bootbits when creating a new label
 -c, --compatibility[=<mode>]  mode is 'dos' or 'nondos' (default)
 -L, --color[=<when>]          colorize output (auto, always or never)
                                 colors are enabled by default
 -l, --list                    display partitions and exit
 -o, --output <list>           output columns
 -t, --type <type>             recognize specified partition table type only
 -u, --units[=<unit>]          display units: 'cylinders' or 'sectors' (default)
 -s, --getsz                   display device size in 512-byte sectors [DEPRECATED]
     --bytes                   print SIZE in bytes rather than in human readable format
 -w, --wipe <mode>             wipe signatures (auto, always or never)
 -W, --wipe-partitions <mode>  wipe signatures from new partitions (auto, always or never)

 -C, --cylinders <number>      specify the number of cylinders
 -H, --heads <number>          specify the number of heads
 -S, --sectors <number>        specify the number of sectors per track

 -h, --help                    display this help
 -V, --version                 display version

Available output columns:
 gpt: Device Start End Sectors Size Type Type-UUID Attrs Name UUID
 dos: Device Start End Sectors Cylinders Size Type Id Attrs Boot End-C/H/S Start-C/H/S
 bsd: Slice Start End Sectors Cylinders Size Type Bsize Cpg Fsize
 sgi: Device Start End Sectors Cylinders Size Type Id Attrs
 sun: Device Start End Sectors Cylinders Size Type Id Flags

For more details see fdisk(8).

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

6.2 格式化boot分区和userdata分区

将Boot分区格式化为ext4格式,并设置分区名称,/dev/sdX中的X要依据该盘实际名字修改 ,伪代码如下:

  sudo mkfs.ext4 -L boot   /dev/sdX1  
  sudo mkfs.ext4 -L userdata /dev/sdX4   

我们将前面前面创建的分区,进行格式化如下:

tangkw@tangkw:~$ sudo mkfs.ext4  -L boot /dev/sdb1
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 65536 4k blocks and 65536 inodes
Filesystem UUID: 3ccd6c98-ef91-4b16-a871-f2775d9f0ada
Superblock backups stored on blocks: 
	32768

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

tangkw@tangkw:~$ sudo mkfs.ext4 -L userdata /dev/sdb4
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: f0c1ff27-4ceb-4d15-bdbb-c14de2b4360c
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

6.3 烧写system分区和endor分区

还是老规矩先使用伪指令演示一下:

  sudo dd if=system.img of=/dev/sdX2 bs=1M  
  sudo dd if=vendor.img of=/dev/sdX3 bs=1M  
  sync  

结合前面我们编译的环境,以及具体的创建的分区,进到out/target/product/e20000目录下 ,执行如下指令:

tangkw@tangkw:~/hgfs/AN/aosp/out/target/product/e2000$ sudo dd if=system.img  of=/dev/sdb2 bs=1M
2049+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 184.983 s, 11.6 MB/s
tangkw@tangkw:~/hgfs/AN/aosp/out/target/product/e2000$ sudo dd if=vendor.img  of=/dev/sdb3 bs=1M
256+0 records in
256+0 records out
268435456 bytes (268 MB, 256 MiB) copied, 25.6534 s, 10.5 MB/s

6.4 拷贝的kernel镜像和设备树文件以及ramdisk到boot分区

还是老规矩先使用伪指令演示一下:

  sudo cp kernel/arch/arm64/boot/Image to p1:/  
  sudo cp kernel/arch/arm64/boot/dts/phytium/e2000q-demo-board.dtb p1:/  
  sudo cp initramfs.img p1:/  

结合前面我们编译的环境,以及具体的创建的分区,我们来具体烧录:

tangkw@tangkw:~/xxx$ sudo cp arch/arm64/boot/Image /media/tangkw/boot/
tangkw@tangkw:~/xxx$ sudo cp arch/arm64/boot/dts/phytium/e2000q-demo-board.dtb /media/tangkw/boot/
tangkw@tangkw:~/xxx$ sudo cp initramfs.img /media/tangkw/boot/




七. 配置相关参数,启动设备

见证奇迹的时刻就要到了,成功还是失败就在这把操作了。让我们紧跟步伐来执行这最后一套组合拳,步骤如下:

7.1 e2000 EVB 选择uboot启动方式
7.2 连接烧写好的SATA硬盘
7.3 连接串口线
7.4 打开putty,选择串口连接,波特率设置为115200
7.5 开机,串口console配置环境变量
setenv bootargs console=ttyAMA1,115200 earlycon=p1011,0x2800d000 root=/dev/ram0 elevator=deadline rootwait rw loglevel=7 androidboot.hardware=e2000 androidboot.selinux=permissive initrd=0x93000000,90M
ext4load scsi 0:1 0x90100000 e2000q-demo-board.dtb
ext4load scsi 0:1 0x90200000 Image
ext4load scsi 0:1 0x93000000 initramfs.img
booti 0x90200000 - 0x90100000
7.6 设置DPI。它会影响Android界面图标的大小。在bootargs中添加一项 DPI=160.

如果不出意外的话,静等片刻就可以看到我们的Android开机动画了,最终进入Android的启动界面。

输入图片说明 输入图片说明




八. 开源许可协议

这个项目我们采用的协议是:Apache 2.0 。




九.项目维护者联系方式

各位朋友,如果在使用过程中有遇到相关疑问,可以联系如下的相关维护者,我们将在第一时间为您提供答疑解惑,助您及时解决相关问题。
zhangjianwei@phytium.com.cn
tangkaiwen@phytium.com.cn
xiayan1086@phytium.com.cn

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

本文介绍如何在飞腾信息科技有限公司E2000 EVB board上Bringup Android11.0方案! 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/phytium_embedded/e2000-android11-device.git
git@gitee.com:phytium_embedded/e2000-android11-device.git
phytium_embedded
e2000-android11-device
E2000-Android11-Device
master

搜索帮助