北京讯为电子RK3568开发板Android11系统移植笔记

Android分层架构图

以进程的视角来看Android系统
Android系统启动架构图

Android源码获取途径

  1. 从谷歌网站获取Android源码

  2. 从芯片原厂获取Android源码

  3. 从方案厂商获取

优势:

  1. 从谷歌网站获取Android源码可以第一时间研究最新的技术,但是移植到具体的芯片上很难

  2. 从芯片原厂获取Android源码可以很容易得运行在某一个硬件上,但是更新较慢

AOSP下载

AOSP:Android Open-Source Project,中文为安卓开源项目。

repo工具下载

谷歌利用repo对所有git仓库进行管理,并且让用户通过repo工具批量下载Android源码,所以我们下载Android源码之前必须先安装repo工具。

Android官网repo介绍和安装方法

电脑硬件要求

内存:不少于16GB

存储:不少于300GB

Ubuntu版本:Ubuntu18.04

安装git

执行以下命令

sudo apt-get install git  

设置git

执行如下命令,填写名字和邮箱。

git config --global user.name “”

git config --global user.email “”

git config --list

下载repo

git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo 

注意这里有可能会因为网络问题下载不成功,如果不能访问,可以换中科大的下载源。也会给大家提供一个下载好的。

配置repo

mkdir  .repo //创建的是一个隐藏文件夹,我们使用命令“ll”查看。
mv git-repo .repo/repo  //将git-repo移动到刚刚创建的.repo文件中,并将名称改为repo
cp .repo/repo/repo ./   //将repo复制到当前目录。
chmod u+x repo   //修改repo操作权限。

下载源代码

官方下载教程

确定需要的安装版本的名称

用的是Android11,对应的版本标记可以在Android官网上找到

https://source.android.google.cn/docs/setup/about/build-numbers?hl=zh-cn%3F

这里我们选择android-security-11.0.0_r54,并记下这个标记会在下载的时候使用到。

AOSP源码可以清华和中科大的源中去下载:

中科大

清华

在repo所在路径下输入以下命令来下载源码

./repo-init -u git://mirrors.ustc.edu.cn/aosp/platform/mainfest -b android-security-11.0.0_r54

接着在repo所在路径输入命令,下载源码

./repo sync -j2

编译谷歌AOSP源码环境准备

需要使用apt命令安装以下依赖包:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev g++-multilib g++-,ultilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

JDK

sudo apt-get update
sudo apt-get install openjdk-8-jdk

编译Android源码步骤(通用)

步骤1:初始化编译环境

source build/envsetup.sh  //建立编译环境,提供编译所需要的命令(只对当前终端有效)

步骤2:选择对应产品

lunch   

选择哪些产品
在虚拟机ubuntu中跑,所以选择aosp_x86_64-eng(或者31)
前半部分是编译生成目标产品信息,后半部分是编译源码的主机信息
在这里插入图片描述

步骤3:编译

在这里插入图片描述
编译

make -j12

用模拟器启动编译好的Android镜像

注意:

  1. VMware ubuntu18.04开启虚拟化引擎
    在这里插入图片描述

2.shell终端切换到超级用户root

进入编译好的路径
在这里插入图片描述source build/envsetup.sh //建立编译环境,提供编译所需要的命令 lunch //选择编译产品aosp_x86_64-eng(或者31) emulator //启动模拟器 (+verbose 可查看更多调试信息) |grep kernel(查kernel关键词)
在这里插入图片描述

cd /out/host/linux-x86/bin    //存放相关命令
./adb shell    //adb调试

从一级目录入手来认识瑞芯微Android11原厂BSP

在这里插入图片描述比较安卓源码和瑞芯微RK3568开发板源码

  • Android.bp 从Android7开始来替代.mk文件,soong会使用Android.bp(类似make与makefile)
  • art 和dalvik Android运行环境相关(Android5.0以前用dalvik,5.0之后用art)
  • bionic Android系统C库 专门为移动计算而设计的一个文件夹
    在这里插入图片描述
  • bootable 和引导程序相关
  • build 编译规则
  • build.sh 编译rk3568脚本
  • compatibility Android兼容相关代码
  • cts 兼容性测试相关
  • developers 应用程序开发相关
  • device 和硬件相关(重点关注)
  • external 开源模组相关文件(重点关注)
  • frameworks 应用程序框架(重点关注)
  • hardware 硬件抽象层相关代码
  • kernel linux内核源码和底层驱动(重点关注)
  • libcore Android核心库相关
  • libnativehelper 动态库相关
  • out 编译之后生成镜像的文件夹(重点关注)
  • package 应用程序相关文件夹
  • pdk 本地开发套件
  • platform-testing 测试相关
  • prebuilts 资源文件相关比如编译器
  • sdk SDK
  • system 底层文件
  • test 测试相关
  • toolchain 编译链
  • tools 工具相关
  • u-boot uboot
  • vendor 厂商定制相关

瑞芯微厂商添加的

  • rknin
  • RKDocs
  • rkst
  • RKTools

RK3568原厂Android源码编译

在这里插入图片描述
在这里插入图片描述

代码编译

一键编译命令

各个平台编译命令汇总

./build.sh -UKAup 
( WHERE: -U = build uboot 
-C = build kernel with Clang 
-K = build kernel 
-A = build android 
-p = will build packaging in IMAGE 
-o = build OTA package 
-u = build update.img 
-v = build android with 'user' or 'userdebug' 
-d = huild kernel dts name 
-V = build version 
-J = build jobs 
------------大家可以按需使用,不用记录uboot/kernel编译命令了------------------ )
============================================================ 
请注意使用一键编译命令之前需要设置环境变量,选择好自己需要编译的平台,举例:
source build/envsetup.sh 
lunch rk3568_r-userdebug 
============================================================

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

原厂uboot源码顶层目录讲解

Android下uboot移植

uboot->kernel->rootfs
在这里插入图片描述

  • api 独立的API,给外部APP调用的,跟硬件的关系不大
  • arch cpu架构相关代码
    这里我们看ARM架构,mach-xxx 分别是不同的公司的CPU,(cpu,dts,include,lib都是ARM架构处理器通用文件夹)
    在这里插入图片描述
  • board 开发板相关代码(我们可以添加自己开发板的代码)
  • cmd 支持shell命令
  • common uboot通用文件(对硬件依赖性不是那么强)
  • configs 编译uboot所用的配置文件
  • disk 分区相关的数据结构
  • doc Documentation 这两个文件夹放的是官方的文档
  • drivers 驱动程序相关
  • dts 编译好的设备树文件
  • env 环境变量相关文件
  • .example 示例相关代码
  • fit 打包格式相关
  • config.mk,Kbuild,Kconfig,Makefile,PREUPLOAD.cfg, README,snapshot.commit 和编译相关
  • fs 表示uboot支持哪些文件系统
  • include 头文件
  • lib 库文件
  • Licenses 许可
  • make.sh 瑞芯微自己实现的自定义编译脚本
  • net 网络功能实现相关代码
  • post 测试相关
  • scripts 固件操作的脚本
  • spl tpl 编译uboot后放置的文件夹
  • test 测试文件相关
  • tools 工具相关

编译uboot

cd rk_android11/rk_android11.0_sdk_211130
./build.sh -U

报错提示不用管
在这里插入图片描述
编译后生成的两个重点文件
在这里插入图片描述
编译之后生成的文件分析
在这里插入图片描述
圈起来的是可行固件

  • resource.img 资源文件
  • u-boot 编译之后的elf格式uboot镜像文件
  • u-boot.bin 编译之后的二进制格式uboot镜像文件
  • u-boot.cfg u-boot.cfg.configs 编译之后的配置文件,可以通过这个来看我们配置哪些选项
  • u-boot-dtb u-boot的设备树文件
  • u-boot.lds 链接脚本
  • u-boot.map 映像文件
  • u-boot-nodtb.bin u-boot-dtb.bin
  • u-boot.srec srec格式的uboot镜像文件
  • u-boot.sym 符号文件
  • tee.bin optv的镜像文件

将u-boot.img 烧写进开发板

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RK3568开发板是基于Rockchip RK3568处理器的一个开发平台,主要用于嵌入式系统开发和媒体应用领域。该开发板具有丰富的硬件资源和灵活的扩展接口,适合各类嵌入式项目的开发和调试。 首先,RK3568开发板采用了Rockchip自家研发的RK3568处理器,该处理器采用了先进的ARM架构,具有强大的计算和图形处理能力。它基于22nm工艺制造,拥有六个Cortex-A55核心,最高主频可达1.8GHz,能够提供出色的性能和能效比。 其次,该开发板还配备了丰富的外设接口,包括多个USB接口、以太网口、HDMI接口等,方便用户连接外部设备。此外,还提供了各类扩展接口,如SPI、I2C、UART等,方便用户接入各类传感器、显示屏等外部硬件。 另外,开发板上还搭载了完整的软件开发环境,包括针对RK3568的开发工具链、操作系统以及各类应用程序库。开发者可以利用这些工具进行应用程序的开发、调试和性能优化。同时,Rockchip还提供了丰富的开发文档和示例代码,帮助开发者快速上手。 总之,RK3568开发板是一款功能强大、资源丰富的开发平台,适用于嵌入式系统开发和媒体应用领域。它提供了高性能的处理器、丰富的硬件资源和完善的软件开发环境,为开发者提供了一站式的开发解决方案。无论是进行系统调试还是开发新的应用程序,该开发板都能够满足开发者的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值