【Linux驱动开发】编译Android12源码

这篇具有很好参考价值的文章主要介绍了【Linux驱动开发】编译Android12源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 简单描述

  1. 基于讯为电子rk3568教程

2. 准备资料

  • rk_android12.0_sdk_20220720.tar.gz

3. 编译Android12

  1. 解压
tar -vxf rk_android12.0_sdk_20220720.tar.gz
  1. 设置屏幕配置
rk_android12.0_sdk/kernel-4.19/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi
  1. 整体编译 Android 固件
source javaenv.sh
java -version
  1. 使能编译环境
source build/envsetup.sh
lunch rk3568_s-userdebug
  1. 开始整体编译
./build.sh -AUCKu

rockdev/Image-rk3568_s // 编译成功镜像存放位置

  1. 单独编译u-boot (方法一)
./build.sh -U
  • 编译完成后在 u-boot 目录会生成 rk356x_spl_loader_v1.13.112.bin 文件、uboot.img
    文件、 resource.img 三个镜像文件

  • 同 时 编 译 成 功 后 会 将 rk356x_spl_loader_v1.13.112.bin 、 uboot.img 拷 贝
    到 rockdev/Image-rk3568_s 目录下,rk356x_spl_loader_v1.13.112 会改名为
    MiniLoaderAll.bin。 MiniLoaderAll.bin 也就是一级 loader,只需要将 MiniLoaderAll.bin 和 uboot.img 烧写到开发板即 可更新 uboot。

  1. 单独编译u-boot (方法二)
cd u-boot/
./make.sh rk3568
  • 这样编译后会在 uboot 目录下生成 uboot.img 和 rk356x_spl_loader_v1.13.112.bin,但是不会 拷 贝 到 rockdev/Image-rk3568_s 下 面 , 所 以 需 要 烧 写 uboot 目 录 下 的 uboot.img 和rk356x_spl_loader_v1.13.112.bin, 烧 写 时 将 rk356x_spl_loader_v1.13.112.bin 重 命 名 为MiniLoaderAll.bin,再烧写。
  1. 编译 Android 内核(很慢)
./build.sh -CKA

编译后会在 rockdev/Image-rk3568_s 目录下生成 boot.img,boot.img 为内核镜像。boot.img
镜像里面包含了设备树镜像。所以烧写 boot.img

  1. 编译 Android 内核(快)

cd kernel-4.19 // 讯为提供的sdk默认有 makekernel.sh,没有创建,内容如下

make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld rockchip_defconfig
android-11.config && make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld BOOT_IMG=../rockdev/Image-rk3568_s/boot.img rk3568-evb1-ddr4-v10.img
./makekernel.sh

BOOT_IMG 是指整编 Android 源码之后在 rockdev 目录下生成的 boot.img,所以在单独编 译 Android内核之前,一定要整编 Android 源码。整编 Android 源码生成的 rockdev 目录下的 boot.img 镜像里面不仅仅只有 kernel 和 resource,还有其他文件。当我们修改了内核源码并单 独编译 Android 内核时,kernel 和resource 发生了改变,这时候需要指定一个 boot.img,然后 将新编译的 kernel 和 resource 覆盖进去。打包完成之后,在 kernel 目录下会有新 boot.img 镜像 生成,就可以把这个 boot.img镜像单独烧写到开发板中进行调试了 如果不指定 BOOT_IMG,会在下载镜像之后,系统跑进 recovery 模式,而不是进入正常 的启动流程 rk3568-evb1-ddr4-v10.img 的意思是指定所使用的设备树 DTS;打包完后,在 kernel 目录有 boot.img 镜像生成,就可以把这个 boot.img 镜像单独烧入到 机器中进行调试了。

  1. 编译 Android 文件系统
vim build.sh
:set number!
# make installclean
./build.sh -A

编译完成后镜像文件会在 rockdev/Image-rk3568_s 目录下生成 super.img,单独烧写super.img 即可

各种镜像解释如下:

  • boot.img: 包含 kernel.img 和 resource.img 镜像文件
  • boot-debug.img: 与 boot.img 的差别是 user 固件可以烧写这个 boot.img 进行
    root权限操作
  • config.cfg: 烧写工具的配置文件,可以直接导入烧写工具显示需要烧写的选项。
  • MiniLoaderAll.bin: 包含一级 loader。
  • misc.img: 包含 recovery-wipe 开机标识信息,烧写后会进行 recovery。
  • parameter.txt: 包含分区信息。
  • pcba_small_misc.img : 包含 pcba 开机标识信息,烧写后会进入简易版 pcba 模式。
  • pcba_whole_misc.img: 包含 pcba 开机标识信息,烧写后会进入完整版 pcba 模式
  • recovery.img: 包含 recovery-ramdis、 kernel、 dtb
  • super.img: 包含 odm、 product、 vendor、 system、 system_ext 分区内容。
  • trust.img: 包含 BL31、 BL32 RK3566/RK3568 没有生成这个固件, 不需要烧写
  • uboot.img: 包含 uboot 固件
  • vbmeta.img: 包含 avb 校验信息, 用于 AVB 校验
  • update.img: 包含以上需要烧写的 img 文件, 可以用于工具直接烧写整个固件包。
  1. 编译 Android 模块

再安卓目录下运行以下指令,把mm添加到环境中

source javaenv.sh
source build/envsetup.sh
lunch rk3568_s-userdebug
ls ~/Android/rk_android12.0_sdk/out/target/product/rk3568_s/vendor/lib/hw/audio.primary.rk30board.so
  1. 打包 update.img
./build.sh -u

打包完成会在 rockdev/Image-rk3568_s 目录下生成 update.img 镜文章来源地址https://www.toymoban.com/news/detail-753010.html

到了这里,关于【Linux驱动开发】编译Android12源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【android12-linux-5.1】【ST芯片】驱动与HAL移植后数据方向异常

    ST的传感器驱动与HAL一直成功后,能拿到数据了,但是设备是横屏,系统默认是竖屏。就会出现屏幕自动转动时方向是错的的情况,设备横立展示的是竖屏,设备竖立展示的是横屏。 这个是PCB上设计的传感器贴片方向和横屏不一致导致的,只需要在HAL层旋转矩阵就行。利用地

    2024年02月11日
    浏览(40)
  • 【IMX6ULL驱动开发学习】12.Linux驱动之设备树

    承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分) 代码获取: https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了(实际上只有前两层),合并成一个dev_drv.c了,暂时没有加GPIO操作,只是个框架 合并前的代码在 11.butt

    2024年02月13日
    浏览(46)
  • Docker系列(1)安装Linux系统编译Android源码

    目录 一、开发环境搭建 1.Windows docker环境安装 2.配置ubuntu18.04系统 2.0 准备工作 2.1 安装ubuntu18.04 2.2 安装常用工具 2.3 安装rk3568环境编译工具 2.4 新增用户 2.5 注意避坑!! 二、下载编译 Android_SDK 3.1 第一步,下载 SDK 3.2 第二步,更新 SDK 3.3 第二步,编译 SDK 手动编译 iCore-3568JQ An

    2024年02月11日
    浏览(45)
  • 【IMX6ULL驱动开发学习】12.Linux SPI驱动实战:DAC驱动设计流程

    基础回顾: 【IMX6ULL驱动开发学习】10.Linux I2C驱动实战:AT24C02驱动设计流程_阿龙还在写代码的博客-CSDN博客 【IMX6ULL驱动开发学习】11.Linux之SPI驱动_阿龙还在写代码的博客-CSDN博客 查看芯片手册,有两种DAC数据格式,12位和16位,这里选用16位数据(2字节)编写驱动。  重点在

    2024年02月11日
    浏览(56)
  • 迅为iTOP-4412之Android 4.0/Linux源码编译

    搭建配置好   uboot 、 Linux3.0 和 Android4.0的 编译环境,完整搭建配置过程可参照下述博文: 迅为iTOP-4412之Android 4.0系统编译环境的搭建(完整版)-CSDN博客  https://blog.csdn.net/Eva20192020/article/details/134668004?spm=1001.2014.3001.5502 提示:虚拟机中解压完后的原打包文件建议删除,可以节

    2024年02月03日
    浏览(48)
  • 【android12-linux-5.1】【ST芯片】【RK3588】【LSM6DSR】驱动移植

    一、环境介绍 RK3588主板搭载Android12操作系统,内核是Linux5.10,使用ST的六轴传感器LSM6DSR芯片。 二、芯片介绍 LSM6DSR是一款加速度和角速度(陀螺仪)六轴传感器,还内置了一个温度传感器。该芯片可以选择I2C,SPI通讯,还有可编程终端,可以后置摄像头等设备,功能是很强大

    2024年02月09日
    浏览(54)
  • AOSP 源码编译android 12

    目录 一、python安装      a. python2安装     b. python3安装 二、repo管理多个git    a.第一步,   新建一个空白文件夹保存repo引导文件,并包含你的路径    b.下载启动器  c.将git-repo中的repo文件复制到 1 创建的.bin目录中  d.修改权限 e. 执行版本检查 三、初始化工程   a.执行创建文

    2024年01月16日
    浏览(53)
  • Qt5.12.6配置Android Arm开发环境(Linux)

    1.安装jdk 2.安装android studio 3.安装sdk 与ndk  设置代理  安装SDK工具  安装SDK Platform 安装QT   选择JDK 1.8安装路径,SDK与NDK路径  如出现Platform SDK或者Platform Build Tools未安装,点击Update Installed  配置成功后可看到ARMv7与AMD-v8a kits Qt Version也可看到ARMv7与AMD-v8a   如果 有安装了CMake,也

    2024年01月21日
    浏览(51)
  • 国内镜像:极速下载编译WebRTC源码(For Android/Linux/IOS)(二十四)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 优质专栏: 多媒体系统工程师系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径

    2024年01月17日
    浏览(60)
  • FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库

    ​ 《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2  交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。 登录Linux服务器(比如华为云的欧拉系统),依次执行下面的命令。 重

    2024年03月24日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包