独立编译
Embedded Linux for i.MX Applications Processors | NXP Semiconductors
1. 编译 SCfirmware
打开一个终端:
pwd
~/imx-yocto-bsp
mkdir standalone
cd standalone
tar -xzvf imx-scfw-porting-kit-1.2.tar.gz (untar scfw tools kit)
|->packages| |-> imx-scfw-porting-kit-1.2.bin
chmod a+x ./ imx-scfw-porting-kit-1.2.bin
sh ./ imx-scfw-porting-kit-1.2.bin (run the bin file to install scfw tools kit)
cd imx-scfw-porting-kit-1.2/src
tar xzvf scfw_export_mx8qm_b0.tar.gz
tar xzvf scfw_export_mx8qx_b0.tar.gz (untar source codes)
从以下地址 下载编译工具链:

https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads (E.g. Linux 64-bit File:

gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 (95.90 MB) )
注意最新验证过的工具链版本是 2017-q2,不建议使用最新的工具链。

pwd
~/imx-scfw-porting-kit-1.2
mkdir toolchain
mv gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2 toolchain/
cd toolchain
tar jxvf gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2
pwd
~/imx-scfw-porting-kit-1.2/src/scfw_export_mx8qx_b0
export TOOLS= ../.. /toolchain/
make qx B=mek R=B0 (如果需要看串口调试信息就增加 M=1 参数,U=2 表示使用 SCU 本身串口,注意重新
编译之前要 make clean-qx 一下)
编译结束打印为:make qx B=mek R=B0 M=1 U=2
Generating platform/board/mx8qx_mek/dcd/imx8qx_dcd_1.2GHz.h
Generating platform/board/mx8qx_mek/dcd/dcd.h from platform/board/mx8qx_mek/dcd/imx8qx_dcd_1.2GHz.h
Generating platform/board/mx8qx_mek/dcd/imx8qx_dcd_1.2GHz_retention.h
Generating platform/board/mx8qx_mek/dcd/dcd_retention.h from
platform/board/mx8qx_mek/dcd/imx8qx_dcd_1.2GHz_retention.h
Compiling platform/drivers/pmic/fsl_pmic.c
Compiling platform/drivers/pmic/pf8100/fsl_pf8100.c
Compiling platform/drivers/pmic/pf100/fsl_pf100.c
Compiling platform/board/mx8qx_mek/board.c
Compiling platform/board/board_common.c
Compiling platform/board/pmic.c
Linking build_mx8qx_b0/scfw_tcm.elf ....
Objcopy build_mx8qx_b0/scfw_tcm.bin ....
done.
2. 编译 uboot:
另打开一个终端
pwd
~/imx-yocto-bsp/standalone
git clone https://source.codeaurora.org/external/imx/uboot-imx
cd uboot-imx
git tag | grep rel_imx_4.14.
....
rel_imx_4.14.98_2.0.0_ga
...
git checkout rel_imx_4.14.98_2.0.0_ga
git status
HEAD detached at rel_imx_4.14.98_2.0.0_ga
nothing to commit, working directory clean
ls configs | grep imx8qxp
…
imx8qxp_mek_defconfig
…
source ~ /imx-yocto-bsp/imx8qxpmek_xwayland/sdk/environment-setup-aarch64-poky-linux
make imx8qxp_mek_defconfig
make
编译 log 如下:…
LDS u-boot.lds
LD u-boot
OBJCOPY u-boot.srec
OBJCOPY u-boot-nodtb.bin
start=$(aarch64-poky-linux-nm u-boot | grep __rel_dyn_start | cut -f 1 -d ' '); end=$(aarch64-poky-linux-nm u-boot |
grep __rel_dyn_end | cut -f 1 -d ' '); tools/relocate-rela u-boot-nodtb.bin 0x80020000 $start $end
DTC arch/arm/dts/fsl-imx8dx-17x17-val.dtb
DTC arch/arm/dts/fsl-imx8qm-ddr4-arm2.dtb
DTC arch/arm/dts/fsl-imx8qm-lpddr4-arm2.dtb
DTC arch/arm/dts/fsl-imx8qm-mek.dtb
DTC arch/arm/dts/fsl-imx8qm-mek-xen.dtb
DTC arch/arm/dts/fsl-imx8qxp-17x17-val.dtb
DTC arch/arm/dts/fsl-imx8qxp-lpddr4-arm2.dtb
DTC arch/arm/dts/fsl-imx8qxp-mek.dtb
make[2]: 'arch/arm/dts/fsl-imx8qxp-mek.dtb' is up to date.
SHIPPED dts/dt.dtb
FDTGREP dts/dt-spl.dtb
CAT u-boot-dtb.bin
COPY u-boot.bin
SYM u-boot.sym
COPY u-boot.dtb
LD u-boot.elf
CHK include/config.h
CFG u-boot.cfg
CFGCHK u-boot.cfg
编译结束后的输出镜像为:
u-boot.bin
arch/arm/dts/fsl-imx8qxp-mek.dtb
3. 编译 Linux 内核:
pwd
~/imx-yocto-bsp/standalone
git clone https://source.codeaurora.org/external/imx/linux-imx
cd linux-imx
git tag |grep rel_imx_4.14
...
rel_imx_4.14.98_1.0.0_ga
...
git checkout rel_imx_4.14.98_2.0.0_ga
git status
HEAD detached at rel_imx_4.14.98_2.0.0_ga
source ~ /imx-yocto-bsp/imx8qxpmek_wayland/sdk/environment-setup-aarch64-poky-linux
make defconfig
LDFLAGS="" CC="$CC" make
LDFLAGS="" CC="$CC" make dtbs clean
LDFLAGS="" CC="$CC" make dtbs //just make dtb
编译结束后的输出镜像为:
arch/arm64/boot/dts/freescale/fsl-imx8qxp-mek.dtb
arch/arm64/boot/Image
4. 编译 ATF:
pwd
~/imx-yocto-bsp/standalone
git clone https://source.codeaurora.org/external/imx/imx-atf
cd imx-atf
git tag
...
rel_imx_4.14.98_2.0.0_ga
...
git checkout rel_imx_4.14.98_2.0.0_ga
git status
HEAD detached at rel_imx_4.14.98_2.0.0_ga
source ~/imx-yocto-bsp/imx8qxpmek_wayland/sdk/environment-setup-aarch64-poky-linux
LDFLAGS="" make PLAT=imx8qx
编译 log 为:
…
LD build/imx8qxp/release/bl31/bl31.elf
BIN build/imx8qxp/release/bl31.bin
Built build/imx8qxp/release/bl31.bin successfully
编译结束后的输出镜像为:
./build/imx8qxp/release/bl31.bin
5. 运行 imx-mkimage 脚本生成 flash.bin 镜像:
另打开一个终端,不要与编译 uboot&kernel 同用一个终端:
pwd
~/imx-yocto-bsp/standalone
git clone https://source.codeaurora.org/external/imx/imx-mkimage
cd imx-mkimage
git tag
...
rel_imx_4.14.98_2.0.0_ga
...
git checkout rel_imx_4.14.98_2.0.0_ga
git status
HEAD detached at rel_imx_4.14.98_1.0.0_ga
imx-mkimage 需要调用 host PC 的 GCC 工具,所以需要退出之前的 terminal。重新进入,从而
退出之前 source 的交叉编译变量。
将 mx8qx-ahab-container.img, sc firmware bin, atf 和 uboot 拷贝至对应 iMX8QX 目录:
cp ../../imx8qxpmek_xwayland/tmp/deploy/images/imx8qxpmek/imx-boot-tools/mx8qx-ahab-container.img ./iMX
8QX/
cp ../packages/imx-scfw-porting-kit-1.2/src/scfw_export_mx8qx_b0/build_mx8qx_b0/scfw_tcm.bin ./iMX8QX/
cp ../imx-atf/build/imx8qx/release/bl31.bin ./iMX8QX/
cp ../uboot-imx/u-boot.bin ./iMX8QX/
运行 imx-mkimage 脚本生成 flash.bin 镜像
make SOC=iMX8QX flash_b0
include misc.makinclude m4.mak
include android.mak
include test.mak
include autobuild.mak
include rev_a.mak
include alias.mak
./../mkimage_imx8 -commit > head.hash
630+1 records in
630+1 records out
645154 bytes (645 kB, 630 KiB) copied, 0.00327583 s, 197 MB/s
./../mkimage_imx8 -soc QX -rev B0 -append mx8qx-ahab-container.img -c -scfw scfw_tcm.bin -ap u-boot-atf.bin
a35 0x80000000 -out flash.bin
SOC: QX
REVISION: B0
New Container: 0
SCFW: scfw_tcm.bin
AP: u-boot-atf.bin core: a35 addr: 0x80000000
Output: flash.bin
CONTAINER FUSE VERSION: 0x00
CONTAINER SW VERSION: 0x0000
ivt_offset: 1024
rev: 2
Platform: i.MX8QXP B0
ivt_offset: 1024
container image offset (aligned):a800
flags: 0x10
Hash of the images = sha384
1+0 records in
1+0 records out
150528 bytes (151 kB, 147 KiB) copied, 0.000348217 s, 432 MB/s
292+1 records in
292+1 records out
149568 bytes (150 kB, 146 KiB) copied, 0.000953368 s, 157 MB/s
SCFW file_offset = 0xa800 size = 0x24c00
Hash of the images = sha384
1+0 records in
1+0 records out
777216 bytes (777 kB, 759 KiB) copied, 0.00122179 s, 636 MB/s
1516+1 records in
1516+1 records out
776226 bytes (776 kB, 758 KiB) copied, 0.00426954 s, 182 MB/s
AP file_offset = 0x2f400 size = 0xbdc00
CST: CONTAINER 0 offset: 0x400
CST: CONTAINER 0: Signature Block: offset is at 0x590
DONE.
Note: Please copy image to offset: IVT_OFFSET + IMAGE_OFFSETHash of the images = sha384
1+0 records in
1+0 records out
760832 bytes (761 kB) copied, 0.00102483 s, 742 MB/s
1485+1 records in
1485+1 records out
760702 bytes (761 kB) copied, 0.00259972 s, 293 MB/s
AP file_offset = 0x28c00 size = 0xb9c00
CST: CONTAINER 0 offset: 0x400
CST: CONTAINER 0: Signature Block: offset is at 0x590
DONE.
Note: Please copy image to offset: IVT_OFFSET + IMAGE_OFFSET
结束后生成的 flash.bin 在:
./iMX8QX/flash.bin

6. 烧写镜像到 sdcard

bootloader:
vmuser@ubuntu:~$ cat /proc/partitions
major minor #blocks name
...
8 32 7761920 sdc
8 33 32768 sdc1
8 34 6918144 sdc2
sudo dd if=flash.bin of=/dev/sdc bs=1k seek=32
sync
kernel and btb:cp Image to Boot imx8qx
cp fsl-imx8qxp.dtb to Boot imx8qx

不使用yocto搭建 i.MX8QXP Linux 4.14.98_ga 板级开发包编译环境,单步编译相关推荐

  1. 使用yocto搭建 i.MX8QXP Linux 4.14.98_ga 板级开发包编译环境

    1.1 下载板级开发包 https://www.nxp.com/support/developer-resources/run-time-software/i.mx-developer-resourc ...

  2. 徒手搭建编译环境,编译Android源码--手把手,嘴对嘴版本

    作为有点点小追求的Android Developer,应该都需要拥有一套自己的Android源码吧,一方面方便自己对源码的理解,另一方面也方便自己验证自己的很多猜想.本文主要记录一下源码从下载到编译成 ...

  3. 搭建RK3568 Android11 编译环境以及编译固件

    电脑配置 CPU 64位 越强劲越好: 磁盘:最好500GB以上(SDK压缩包约81GB:一套代码编完之后 占225GB:还要预留一些空间备用). 虚拟机内存要求16GB以上,多多益善,小于16GB编 ...

  4. gtk linux 离线安装,FC下gtk+开发包安装手记

    FC下gtk+开发包安装手记 发布时间:2007-10-26 10:13:17来源:红联作者:stillaust 基本package: gtk+ 是基于以下三个库开发的: glib:gtk+与gnom ...

  5. [Android6.0][MTK6737] MTK 编译环境搭建

    Hardware: MTK6737 Android: 6.0(API 23) Kernel: Linux 3.4.67 安装编译环境并编译 安装编译环境依赖包 bootloader 和 kernel ...

  6. Linux系统的安装和Android编译环境的配置

    Linux系统的安装和Android编译环境的配置 亲测Android8.1-Android10.0可用 电脑硬件配置 安装Linux系统 配置Android编译环境 常见编译报错 亲测Android ...

  7. 迅为IMX6开发板非设备树源码编译环境搭建(一)

    本小节适用 ITOP-IMX6Q(商业级 2G+16G),ITOP-IMX6Q(工业级 1G+8G), ITOP-IMX6D(商业级 1G+8G) 内核版本为 3.0.35 的系统编译. 13.1 编 ...

  8. rockchip的yocto编译环境的搭建

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:Conscience_Remains 总述   嵌入式的朋友们,应该知道Linux驱动开发过程中,需要进行搭建交叉编译工具链环境.移植u-boot ...

  9. IMX8QX 编译环境搭建(不用yocto)

    目录 吐槽 镜像结构 NXP官网需要下载哪写东西 U-BOOT下载 kernel下载 交叉编译器下载 aarch64-poky-linux arm-none-eabi scfw_tcm.bin bl3 ...

最新文章

  1. C语言 (条件编译#ifdef、#ifndef) (#if 常量,#if 1,#if 0)的用法
  2. [算法 笔记]堆排序(续)
  3. C++学习笔记之对文件的操作2
  4. win7系统0xt000000f错误代码的解决方法
  5. 元素周期表排列的规律_元素周期表排列规律
  6. 51单片机4位抢答器_倒计时可调仿真设计
  7. MacOS怎么使用分区加密功能?MacOS硬盘分区加密功能使用方法
  8. [原创]K8飞刀Final
  9. python爬取五百丁ppt模板(有图+有代码)
  10. 这是一篇关于如何成为一名AI算法工程师的长文
  11. 微信小程序:蓝牙通讯,搜索、发送与接收
  12. Pocket PC C#
  13. 第七届区块链全球峰会 | 谢晗剑:区块链的抽象与演进
  14. 中柏平板bios对照表_中柏平板设置u盘启动图文教程
  15. windows, pip install xgboost 出现错误:No files/directories in ******
  16. jQuery国际电话区号选择插件intlTelInput.js
  17. 游戏AI paper记录
  18. HTML5 的一些新标签
  19. Python socket 获取本机IP地址
  20. 如何在ppt中剔除图片的背景

热门文章

  1. 5G专网技术在智能电网中的应用
  2. 数据库 之 ER模型、函数依赖、无损分解、关系代数
  3. 神作 - Clash of Clans
  4. 老徐FrankXuLei受邀为 @IGT中国研发中心 讲授《WCF分布式开发与SOA架构设计》课程...
  5. 浅谈直流电机并联瓷片电容的作用
  6. 《强化学习周刊》第71期:ICAPS2023强化学习论文推荐、Meta:通过将语言模型与战略推理相结合,在外交游戏中发挥人的水平...
  7. python编程实现屏幕记录功能
  8. GD32F130之FMC用户非易失存储器
  9. #debug# 用cv2读的图片送到dataset前不要转chw
  10. 小冬冬历险记_行为驱动发展历险记