This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/TDA2EXEVM:QSPI 引导(双模式)

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/641106/linux-tda2exevm-qspi-boot-dual-mode

器件型号:TDA2EXEVM

工具/软件:Linux

大家好、

我们将内核4.4与 VISION SDK 2.12结合使用。

我们尝试从 QSPI 引导。 那么、对于闪存至 QSPI 器件(/dev/mtd)。

我们在内核 menuconfig 中启用了所有必要的选项。 和 DTS 文件进行分区

但/dev/mtd 节点未创建?

注:SPI NOR 闪存(mt25ql02gc)

此致、

Raj M  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、

    是否可以运行命令:

    modprobe SPI-ti-QSPI

    并查看是否创建了/dev/mtd。 您还可以查看此 wiki、看看您是否可以找到有助于您:
    processors.wiki.ti.com/.../Linux_Core_QSPI_User's_Guide

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、您好!

    我在内核中启用了 SPI_TI_QSPI=y。

    我的设备树配置。

    &QSPI{
    状态="正常";
    m25p80@0{
    兼容="mt25ql02gc"、"JEDEC、SPI-NOR ";
    SPI-max-frequency =<76800000>;
    reg =<0>;
    SPI-TX-bus-width =<1>;
    SPI-Rx-bus-width =<2>;
    #address-cells =<1>;
    大小单元格=<1>;

    分区@0{
    标签="QSPI.SPL";
    REG =<0x00000000 0x000040000>;
    };
    分区@1{
    标签="qspi.u-boot";
    REG =<0x00040000 0x00100000 >;
    };
    分区@2{
    label ="qspi.u-boot-spl-os";
    REG =<0x00140000 0x00080000>;
    };
    分区@3{
    label ="qspi.u-boot-env";
    REG =<0x001c0000 0x00010000>;
    };
    分区@4{
    label ="qspi.u-boot-env.Backup1";
    REG =<0x001d0000 0x0010000>;
    };
    分区@5{
    标签="qspi.kernel";
    REG =<0x001e0000 0x0800000>;
    };
    分区@6{
    label ="qspi.file-system";
    REG =<0x009e0000 0x01620000>;
    };
    };

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Raj、

    我已与 QSPI 专家进行了交流、发表了意见。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Raj

    您在内核日志上观察到的错误是什么。 函数 MTD_DEVICE_parse_register ()(来自 drivers/MTD/mtdcore.c)解析 MTD 分区并添加 MTD 设备分区。 您能在此处进行调试。

    此致

    Ravi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Ravi:

    感谢您的回复。

    在正确的设备树绑定后,MTD 将解析分区。 我可以在前两个分区上刷写 MLO 和 u-boot.img。

    从 QSPI (SW2[5:0]= 110110)引导时

    U-Boot SPL 2016.05 (2017年11月28日- 17:44:59)
    DRA722-GP ES2.0
    尝试从 SPI 引导
    TI_SPI_SET_SPEED:Hz:76800000、时钟分频器75
    SPI_REACK_BUS:总线:0 CS:0
    SPI_xfer:bus:0 cs:0 bitlen:8标志:1
    TX cmd 003a0fff dc 00000000
    TX 完成、状态00010002
    SPI_xfer:bus:0 cs:0 bitlen:40标志:2
    RX cmd 00390fff dc 00000000
    RX 完成、状态00020002、读取20
    RX cmd 00390fff dc 00000000
    RX 完成、状态00030002、读取 BA
    RX cmd 00390fff dc 00000000
    RX 完成、状态00040002、读取22
    RX cmd 00390fff dc 00000000
    RX 完成、状态00050002、读取10
    RX cmd 00390fff dc 00000000
    RX 完成、状态00060002、读取44
    SF:获得 IDcode
    00000000:20 BA 22 10 44 "D
    SPI_REACK_BUS:总线:0 CS:0
    SPI_xfer:bus:0 cs:0 bitlen:8标志:1
    TX cmd 003a0ff00000
    TX 完成、状态00010002
    SPI_xfer:bus:0 cs:0 bitlen:8标志:2
    RX cmd 00390fff dc 00000000
    RX 完成、状态00020002、读取00
    SPI_RELEASE_BUS:总线:0 CS:0
    SPI_RELEASE_BUS:总线:0 CS:0
    不支持的操作系统映像.. 尽管如此,还是跳
    已加载-跳转到 U-Boot...图像入口点:0x0
    boot-common.c:映像大小:0x0
    图像 load_addr:0x0

    在这里停下来吧????

    我使用以下命令刷写到 QSPI。

    FLASH_ERASE -N /dev/mtd0 0 4.
    FLASH_ERASE -N /dev/mtd1 0 16

    MTD_DEBUG 写入/dev/mtd0 0 81724 MLO
    MTD_DEBUG 写入/dev/mtd1 0 573116 u-boot.img

    此致、
    Raj M
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Raj

    好的、现在您可以使用 MTD-utils 刷写 QSPI。

    对于 QSPI 引导、请让您在相应的 QSPI 部分加载 uImage 并修改 DTB 文件。 请参阅用户指南 processors.wiki.ti.com/.../Processor_SDK_Linux_Automotive_Software_Developers_Guide

    此致

    Ravi