IMX8Mnano Android13下载编译烧录记录

IMX8Mnano Android源码拉取编译

参考资料

  1. 8MNANOD4-EVK官网地址,Android源码发布包及对应版本的指导文档可以从此处下载:https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-nano-applications-processor:8MNANOD4-EVK
  2. 主要参考从上述网址中获取到《ANDROID_13.0.0_1.0.0_DOCS》/《Android_User’s_Guide.pdf》进行移植,不过因为中国的网络原因,中间会出现很多问题,接下来的过程我会把解决方法写上
  3. 开源Android使用指导 https://source.android.google.cn/docs/setup/start/initializing?hl=zh-cn

环境准备

  1. 系统使用Ubuntu18.04,可以从网上寻找镜像源进行下载:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04/
  2. 虚拟机,我使用的VMware,可自行选择
  3. Ubuntu软件源更换为国内服务器,打开软件和更新->下载自->其他站点->中国->选择腾讯或者清华源
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQqh3QmX-1681873505723)(./pictures/Ubuntu%E8%BD%AF%E4%BB%B6%E6%BA%90%E6%9B%B4%E6%94%B9.png)]
    执行如下指令
sudo apt update
sudo apt upgrade
  1. 安装所需的软件包 (Ubuntu 18.04)
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop git curl
sudo apt-get install u-boot-tools mtd-utils android-sdk-libsparse-utils android-sdk-ext4-utils device-tree-compiler gdisk m4 zlib1g-dev bison flex make libssl-dev gcc-multilib libghc-gnutls-dev swig liblz4-tool liblz4-tool libdw-dev dwarves bc cpio tar lz4 rsync ninja-build clang
  1. 配置git
git config --global user.name "First Last"
git config --global user.email "first.last@company.com"
git config --global http.postBuffer 1148586000
git config --global http.sslVerify false
  1. 解压安卓系统的发布包,提前把官网下载的Android源码发布包imx-android-13.0.0_1.0.0.tar.gz放入Ubuntu 相应文件夹下,之后的示例都是以放在用户根目录~为例
cd ~ (or any other directory you like)
tar xzvf imx-android-13.0.0_1.0.0.tar.gz

解压后修改imx_android_setup.sh文件

repo init -u https://github.com/nxp-imx/imx-manifest -b imx-android-13 -m imx-android-13.0.0_1.0.0.xml

替换为

repo init -u https://ghproxy.com/github.com/nxp-imx/imx-manifest -b imx-android-13 -m imx-android-13.0.0_1.0.0.xml

并在

if [ "$rc" != 0 ]; then
    echo "---------------------------------------------------"
    echo "-----Repo Init failure"
    echo "---------------------------------------------------"
    return 1
fi

      rc=$?
      if [ "$rc" != 0 ]; then
         echo "---------------------------------------------------"
         echo "------Repo sync failure"
         echo "---------------------------------------------------"
         return 1
      fi

后各增加一行

find -name 'aosp-android-13.0.0_1.0.0.xml'|xargs perl -pi -e 's|https://android.googlesource.com/|https://aosp.tuna.tsinghua.edu.cn/|g'

构建IMX Android镜像

获取IMX Android release source code

接下来参照官方指导执行如下命令

mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=${PATH}:~/bin

进入到~/bin目录下打开repo文件,修改repo地址REPO_URL为清华源

REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/git-repo'

开始拉取源码

source ~/imx-android-13.0.0_1.0.0/imx_android_setup.sh

拉取过程中在获取github代码时可能会经常失败(如果没有本节下面的可以跳过),没关系,可以直接ctrl+c先打断进行,然后进入到~android_build/.repo/manifests目录下打开imx-android-13.0.0_1.0.0.xml,将如下网址:

<remote name="imx-android" fetch="https://github.com/nxp-imx-android" review="" />
<remote name="imx-linux-sdk" fetch="https://github.com/nxp-imx" review="" />
<remote name="imx-proprietary" fetch="https:github.com/nxp/" review="" />
<remote name="wireless-regdb" fetch="https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/" review="" />
<remote name="github" fetch="https:github.com/" review="" />

替换为

<remote name="imx-android" fetch="https://ghproxy.com/github.com/nxp-imx-android" review="" />
<remote name="imx-linux-sdk" fetch="https://ghproxy.com/github.com/nxp-imx" review="" />
<remote name="imx-proprietary" fetch="https://ghproxy.com/github.com/nxp/" review="" />
<remote name="wireless-regdb" fetch="https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/" review="" />
<remote name="github" fetch="https://ghproxy.com/github.com/" review="" />

然后重新执行

source ~/imx-android-13.0.0_1.0.0/imx_android_setup.sh

repo sync

然后就是等待,第一次拉取有60G左右。
如果重新使用的是repo sync的方式后面可能还需要多个步骤,这是因为在imx_android_setup.sh最后有如下几个指令,将所有专有软件包imx-android-13.0.0_1.0.0.tar中部分内容复制到安卓构建文件夹~/android_build下面

# Copy all the proprietary packages to the android build folder
cp -r "$REL_PACKAGE_DIR"/vendor/nxp "$android_builddir"/vendor/
cp -r "$REL_PACKAGE_DIR"/EULA.txt "$android_builddir"
cp -r "$REL_PACKAGE_DIR"/SCR* "$android_builddir"

但是因为上述打断操作,执行不到这边,所以~/android_build里面就缺失了这些文件,就需要手动拷贝

  • ~/imx-android-13.0.0_1.0.0/vendor/nxp 拷贝到 ~/android_build/vendor/ 下
  • ~/imx-android-13.0.0_1.0.0/EULA.txt 拷贝到 ~/android_build/ 下
  • ~/imx-android-13.0.0_1.0.0/SCR-android-13.0.0_1.0.0.txt 拷贝到 ~/android_build/ 下

默认情况下,在前面的命令完成执行后,当前的工作目录将更改为IMX安卓源代码根目录。把此目录导出为Android源码根目录环境变量

export MY_ANDROID=`pwd`

不过上述方式只对当前终端起作用,为避免之后每次都要重新把MY_ANDROID的路径配置一遍,可以直接把环境变量配置到全局配置

sudo vim /etc/profile

在文件末尾添加后保存退出

export MY_ANDROID='/home/dx/android_build'

构建Android镜像文件

首次编译环境准备

  1. 下载配置交叉编译工具链
    从网址 https://developer.arm.com/downloads/-/gnu-a 下载 gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz, 放入Ubuntu解压并配置环境变量
sudo tar -xvJf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz -C /opt
export AARCH64_GCC_CROSS_COMPILE=/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-

同样上述方式只对当前终端起作用,为避免之后每次都要重新把AARCH64_GCC_CROSS_COMPILE配置一遍,可以直接把环境变量配置到全局配置

sudo vim /etc/profile

在文件末尾添加后保存退出

export AARCH64_GCC_CROSS_COMPILE="/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-"
  1. 设置clang工具
sudo git clone https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/prebuilts/clang/host/linux-x86 /opt/prebuilt-android-clang
cd /opt/prebuilt-android-clang
sudo git checkout 0fc0715d9392ca616605c07750211d7ca71f4e36
export CLANG_PATH=/opt/prebuilt-android-clang

为避免之后每次都要重新把CLANG_PATH配置一遍,可以直接把环境变量配置到全局配置

sudo vim /etc/profile

在文件末尾添加后保存退出

export CLANG_PATH="/opt/prebuilt-android-clang"
  1. 开始构建镜像
    此处注意内存最好分配大一些(或者交换分区配置大一些,这个方式我没有实测,我直接分配了28G内存),我是用-j2最大时候内存都占用了28G,内存不足会报错,编译报错时可以注意下是否在内存占用爆满后没多久就报错了。
    然后参照官方指导执行如下命令,等待编译完成即可
cd ${MY_ANDROID}
source build/envsetup.sh
lunch evk_8mn-userdebug
./imx-make.sh -j2 2>&1 | tee build-log.txt
  1. 构建完成
    构建完成则会在${MY_ANDROID}/out文件下找到构建好的镜像文件

烧录镜像文件

参考《ANDROID_13.0.0_1.0.0_DOCS》/《Android_Quick_Start_Guide.pdf》使用uuu方式下载,将8MNANOD4-EVK设置为为Download mode:SW1101设置为1000
进入镜像文件存放路径下
如在Ubuntu环境下烧录到EMMC则运行

sudo ./uuu_imx_android_flash.sh -f imx8mn -a -e -u ddr4 -d ddr4

如在Ubuntu环境下烧录到SD卡(>32G)则运行

sudo ./uuu_imx_android_flash.sh -f imx8mn -a -e -u ddr4 -d ddr4 -t sd -c 28

如在Windows环境下烧录到EMMC则运行

uuu_imx_android_flash.bat -f imx8mn -a -e -u ddr4 -d ddr4

如在Windows环境下烧录到SD卡(>32G)则运行

uuu_imx_android_flash.bat -f imx8mn -a -e -u ddr4 -d ddr4 -t sd -c 28

烧录完成则切换启动方式重新启动即可运行
启动后界面如下
Android13界面
串口调试信息输出
串口调试信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值