查看: 1341|回复: 1

[分享] 如何在新的 iMX8/8X 板上启用 Linux BSP L5.4

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3303

    主题

    6550

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32055
    最后登录
    2024-4-30
    发表于 2022-6-22 14:21:20 | 显示全部楼层 |阅读模式
    如何在新的 iMX8/8X 板上启用 Linux BSP L5.4


    1 介绍
    1.1 目标
    本应用笔记介绍了在新的自定义 i.MX8/8X 板上启用标准 Linux BSP L5.4 的一般过程,帮助用户快速移植标准 Linux BSP 版本代码到自定义 i.MX8/8X 板上,并提示用户注意那些需要修改的关键部分。
    1.2 示例板
    本应用笔记使用 i.MX8QXP 汽车参考板作为示例板,因为标准的 Linux BSP版本不支持该参考板。更多详细信息,请联系恩智浦代表。
    该板的硬件设计基于 i.MX8QXP MEK 板,但有如下变化:
    • i.MX8QXP C0 芯片
    • 三星汽车级 LPDDR4 和 eMMC5.1
    • MIPI-CSI,配备 NVP6324 汽车 AHD 解决方案
    • LVDS 显示器,配备 TI DS90UB947/948 Serdes(通过 FPD Link III),用于汽车应用
    • MIPI-DSI 显示器,配备 Maxim 96752/96755 Serdes(通过 GMSL2),用于汽车应用
    • 恩智浦 TJA1101 汽车 100Mbps 以太网 PHY
    • 用于 Carplay/AA 的 USB3.0 host 和用于调试的 USB2.0 OTG
    11.png
    1.3 Linux BSP 的版本
    本应用笔记以 L5.4.47_2.2.0 Linux BSP 版本为例。查询所有 i.MX Linux BSP 的版本,请参见“面向 i.MX 应用处理器的嵌入式Linux”(Embedded Linux for i.MX Applications Processors)。
    以下章节介绍了移植 SCFW、ATF、U-Boot 和 Linux 内核的一般过程。每项都可以独立编译,您可从以下链接下载软件包或源码:
    • SCFW
    https://www.nxp.com/webapp/Download?colCode=L5.4.47_2.2.0_SCFWKIT-1.6.0&appType=license
    • Arm® Trusted Firmware (ATF)
    git clone https://source.codeaurora.org/external/imx/imx-atf -b rel_imx_5.4.47_2.2.0
    • U-Boot
    git clone https://source.codeaurora.org/external/imx/uboot-imx -b rel_imx_5.4.47_2.2.0
    • imx-mkimage
    git clone https://source.codeaurora.org/external/imx/imx-mkimage -b rel_imx_5.4.47_2.2.0
    • Linux Kernel
    git clone https://source.codeaurora.org/external/imx/linux-imx -b rel_imx_5.4.47_2.2.0
    2 生成 DDR 配置文件
    i.MX 8/8X DDR 寄存器编程辅助工具(RPA)是 Excel 电子表格工具,用于为用户具体的 DDR 配置(DDR 芯片类型、容量等)进行 DDR 初始化。RPA 以两种格式(参见单独的 Excel 工作表选项卡)启动 DDR 初始化:


    • DDR 压力测试脚本
    这种格式专门用于 DDR 压力测试,首先复制“DDR 压力测试脚本 CBT”选项卡上的内容,再将其粘贴到一个文本文件中,以.ds 文件扩展名命名该文档。请在执行 DDR 压力测试时使用此文件。
    • DCD CFG 文件
    这种格式是 SCU 固件(SCFW)专用的配置文件。在这种情况下,用户复制“DCD CFG 文件 CBT”选项卡上的内容,并将其粘贴到一个文本文件,以.cfg 文件扩展名命名该文档并将该文件放入相应的 SCFW 板级文件目录中。
    2.1 下载 RPA 工具
    注意
    在所有情况下,RPA 修订参照都是最低 SCFW 版本,参见“i.MX 8/8X 系列 DDR 工具版本”表。在某些情况下,还可以进行 BSP 调节。

    要获取最新的 RPA,请参见以下链接:
    • i.MX8QM DDR 寄存器编程辅助工具(RPA)
    • i.MX8QXP/DXP/DX DDR 寄存器编程辅助工具(RPA)
    要参照 L5.4.47_2.2.0 BSP 和 SCFW 1.6.0,请在以下步骤中使用 MX8QXP_C0_B0_LPDDR4_RPA_1.2GHz_v14.xlsx RPA 版本。


    2.2 使用 RPA 工具
    要使用 RPA 工具为用户自定义板上的具体 DDR 生成新的 DDR 压力测试脚本和 DCD CFG 文件,请按以下步骤操作。
    1. 从 DDR 供应商处获取所需的 DDR 数据手册
    要在 RPA 工具中填写 DRAM 参数,请使用 DDR 供应商提供的 DDR 数据手册,通常可从 DDR 供应商的网站下载。用户也可直接联系 DDR 供应商获取此数据手册。

    2. 更新“寄存器配置”选项卡上的芯片信息表
    12.png
    在图 2 突出显示的芯片信息表中更新以下信息:
    • 制造商
    • 存储器型号
    • 每个片选信号通道的容量(Gb)
    • 片选信号数量
    • 行地址的数量
    • 列地址的数量
    • BANK 地址的数量
    • 总线宽度
    • 时钟周期频率(MHz)
    其他参数将使用上述信息自动计算并填入表格。
    3. 更新“BoardDataBusConfig(板数据总线配置)”选项卡上的数据总线映射
    13.png
    通常,由于物理布局的限制,DDR 芯片和 SOC 之间数据引脚的物理连接并不是直接配对的。因此,我们需要一个映射表来记录DDR 数据引脚的物理连接,并将这些信息放入 DDR 控制器的寄存器中,使 DDR 数据引脚能够正确进行逻辑连接。在图 3 突出显示的行中,根据硬件原理图更新 DDR 芯片和 SOC 之间数据引脚的物理映射。其他参数将根据用户的输入自动更新。
    例如,从图 4 的示例板示意图中,我们可以发现 DDR 芯片上的 DQ0_A 引脚与 iMX8QXP 上的 DDR_DQ13 引脚相连,因此我们在圈出的单元格中输入 13,对于其他引脚,请遵循相同的方法。
    14.png
    4. 将“DCD CFG 文件 CBT”和“DDR 压力测试脚本 CBT”选项卡中的文本复制到文件
    单击 RPA 工具中的“DCD CFG 文件 CBT”选项卡,将所有文本复制到一个文件中,命名为 BOARD_NAME.cfg。该文件稍后将在移植 SCFW 时使用。
    单击“DDR 压力测试脚本 CBT”选项卡,将所有文本复制到一个文件中,命名为 BOARD_NAME.ds。该文件稍后将在DDR 压力测试中使用。


    3 SCFW 移植
    SCFW 移植
    系统控制器单元(SCU)对硬件的许多底层功能进行了抽象。在 SCU 上运行的软件称为 SC 固件(SCFW)。SCFW 提供以下功能和服务。
    • 系统初始化和启动
    • 系统控制器通信
    • 电源管理
    • 资源管理
    • 引脚配置
    • 计时器
    • 中断
    • 安全
    • 其他
    大多数 SCFW 代码仅在 SCFW 移植工具包中以目标文件格式提供,用户无法修改。但对于与板级相关的设置,SCFW 移植工具包提供了 board.c 文件的源代码,其中包含了与板级相关的初始化功能和自定义特性。本章重点介绍如何为新板级移植 board.c文件。
    3.1 提取 SCFW 代码
    要提取 SCFW 代码,请按以下步骤操作。
    1. 从应用(Apps)下载 SCFW 1.6.0 软件包 imx-scfw-porting-kit-1.6.0.tar.gz。
    2. 解压文件。
    3. 转到软件包文件夹。
    4. 使用以下命令提取 SCFW 代码。
    $chmod a+x imx-scfw-porting-kit-1.6.0.bin
    $./imx-scfw-porting-kit-1.6.0.bin
    1. 阅读并接受许可证后,提取 imx-scfw-porting-kit-1.6.0 文件夹中的 SCFW 代码。除了代码之外,还有在 imx-scfw-portingkit-1.6.0/doc/pdf 文件夹提取的版本文档,包括版本说明、API 用户指南和更详细的移植指南。对于 i.MX8/8X 产品的新用户和开发员,这些文档非常有用。如对 SCFW 有任何疑问,请先查看这些文档。
    2. 使用以下命令提取 i.MX8QXP 专有的 SCFW 代码。
    $cd imx-scfw-porting-kit-1.6.0/src/
    $tar zxvf scfw_export_mx8qx_b0.tar.gz
    代码位于 imx-scfw-porting-kit-1.6.0/src/scfw_export_mx8qx_b0/路径。
    我们可以将此路径设为 SCFW_DIR。
    $cd imx-scfw-porting-kit-1.6.0/src/
    $tar zxvf scfw_export_mx8qx_b0.tar.gz
    3.2 创建新的板级文件
    每块板都有自己独特的硬件设计,在 SCFW 层面可能有各种板操作。因此,SCFW 在 SCFW_DIR/platform/board/下为每个受支持的板提供板级文件夹。
    15.png

    板级文件夹包含以下部分:
    • board.bom:包括 PMIC 驱动的信息
    • board.c:与板相关的操作
    • board.h:board.c 的标头文件,包括 board.c 中使用的宏定义
    • Makefile:用于编译 board.c 的 makefile
    • dcd/:DDR 配置文件的文件夹,通常至少包含以下两个脚本:
    — ddr_stress_test_parser.cfg:用于为 DDR 压力测试编译 SCFW。
    — BOARD_NAME.cfg:在“Using RPA tools(使用 RPA 工具)”中生成的 ddr 脚本,用于编译 SCFW 以供正常系统使用。
    为了简化移植,用户可以直接从参考板级文件夹 mx8qx_mek 复制这些文件,并根据自身要求修改。
    由于具体修改取决于板的设计和最终产品的用例,本文档未列出详细的修改,但以下三点,通常需要用户在 board.c 文件中自行改。
    1. 在 board_system_config()函数中
    SCFW 提供的一个主要特性是资源分区。它将资源划分到不同的域以保护系统。默认情况下,我们将为 M4 内核创建一个分区,在 board.c 中的 board_system_config()中执行。通常,M4 的资源分区按以下步骤进行:
    a. 将所有资源标记为不可移动。
    17.png

    b. 为 M4 内核创建一个新分区。
    18.png

    c. 将 M4 子系统的所有资源和引脚标记为可移动。
    19.png

    d. 将 M4 内核需要使用的资源和引脚标记为可移动。
    20.png

    通常这部分需要根据板的设计和用例进行修改。



    完整版查看:
    AN13275.pdf (2.36 MB, 下载次数: 17)
    16.png
    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 1283 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13264
    最后登录
    2024-4-30
    发表于 2022-6-24 15:16:11 | 显示全部楼层
    i.MX8QXP功耗比较大? 风扇用上了
    跟着日天混 ,三天饱九顿!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-3 02:19 , Processed in 0.143718 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表