文章目录
前言
本文将介绍NXP i.MX8的SDK包使用方法,是根据以下手册做的笔记,建议还是啃原版手册。
1.DDR配置
DDR配置是指使用寄存器编程辅助工具(RPA)为用户具体的DDR 配置(DDR 芯片类型、容量等)进行 DDR 初始化。
下载RPA
RPA的介绍
RPA是一个excel表格,通过修改表格中的数据,生成BOARD_NAME.cfg
或者BOARD_NAME.ds
,在SCFW移植中使用。
RPA中一共有6个选项卡:
不同的选项卡有不同的功能,在本文下文会介绍部分选项卡的作用。
Register Configuration选项卡
我们先重点关注Register Configuration
选项卡,它将用于配置DDR的基本信息。
表格的颜色代表不同的信息,可以简单理解为:
橙色:经常需要认为修改,为DDR配置信息
绿色:可以修改,但不经常修改的信息
灰色:自动更新的信息
白色:不更改的信息
黄色:在其他选项卡出现,表示其他选项卡(如DCD CFG file CBT
)中黄色部分的信息与Register Configuration
的配置有关。
BoardDataBusConfig选项卡
用来配置DDR与SOC的连接关系
“DCD CFG file CBT” 与 “DCD stress test script”
根据前两个选项卡生成的副本,需要复制生成.cfg或.ds文件。
RPA使用方法
-
获得DDR提供商的datasheet,根据datasheet填写
Register Configuration
选项卡。
-
根据原理图,填写
BoardDataBusConfig
选项卡配置DDR与SOC的物理连接信息。
手册中的例子:
-
填写好以上两个选项卡后,会自动更
DCD CFG file CBT
与DCD stress test script
。
如果要生成配置文件用于移植,则将DCD CFG file CBT
中的内容复制到一个文本中,命名为xxx.cfg
如果要进行压力测试,则将DCD stress test script
中的内容复制到一个文本中,命名为xxx.ds
-
将以上两个文件移入dcd目录下(SCFW移植中会讲到)
2. SCFW移植
在imx8系列中除了A核,还有M核,硬件资源是可以进行分配的,我们使用SCU对其进行资源分区,SCU上运行的程序就是SCFW。
SCFW提供的服务:
编译scfw
SCFW代码请在手册中找
1.下载交叉编译工具链,并配置环境变量TOOLS
2. 将DDR配置生成的xxx.cfg
文件拷贝到目录SCFW_SOURECE/scfw_export_mx8qm_b0/platform/board/mx8qm_mek/dcd
下。
3. 编译代码,命令格式为:
编译生成scfw_tcm.bin
3. ATF移植
ATF的作用是电源管理与资源分区,是一个启动固件。
电源管理
linux的电源管理-PSCI,主要用于:
- 处理器空闲管理
- 处理器动态加载/移除,以及二次启动
- 系统关闭和复位
源码位置:ATF_SOURCE/plat/imx/imx8qm/imx8qm_psci.c
资源分区
源码位置:ATF_SOURCE/plat/imx/imx8qm/imx8qm_bl31_setup.c
编译ATF
在目录ATF_SOURCE/plat/imx/imx8qm/下 执行make命令:
如果编译成功,二进制文件将位于 ATF_SOURCE/build/imx8qx/release/bl31.bin 中。
4. UBOOT移植
- 制作deconfig文件
使用deconfig配置需要的文件有:
deconfig文件内存放一些配置信息
编译目录
- 在
uboot-imx/
录编译生成u-boot.bin
SPL ,镜像位于uboot-imx/spl/u-boot-spl.bin
make xxx_deconfig
make -j4
5. 内核移植
在linux-imx/目录编译生成u-boot.bin
make xxx_deconfig
make -j4
编译完成的 Linux 内核镜像为 arch/arm64/boot/image
,dtb 文件位于arch/arm64/boot/dts/freescale/
folder。
6. 镜像打包
- 将编译好的二进制镜像放入imx-mkimage/中对应板子的目录下,包括:
- ATF编译生成的
bl31.bin
- uboot编译生成的
u-boot.bin
u-boot-spl.bin
- scfw编译生成的
scfw_tcm.bin
- 下载版本对应的seco.bin
wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/<package file name>
其中根据手册选取对应版本
例如:
wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/imx-seco-3.7.1.bin
chmod a+x imx-seco-3.7.1.bin
cd imx-seco-3.7.1/firmware/seco/mx8qxc0-ahab-container.img
- 如果有M4的程序,可以把M4的镜像命名为
m4_image.bin
后放入打包文件夹
- 我们先来根据makefile看看打包的流程(非SPL启动):
- 打包