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.

[参考译文] TMS320C6657:RBL 或 IBL 的 DDR3配置、用于引导定制硬件

Guru**** 1980945 points
Other Parts Discussed in Thread: TMS320C6657, SN74AVC4T774
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware

器件型号:TMS320C6657
主题中讨论的其他器件: SN74AVC4T774

我们按照说明编译、加载和使用 C6657 EVM 的 IBL、并能够将应用程序加载到电路板上并启动应用程序。  

[ https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057566/faq-tms320c6657-how-to-flash-the-ibl-intermediate-boot-loader-into-eeprom-and-how-to-flash-the-application-binary-into-nor-how-to-boot-the-ibl-application-binary]

我们现在正在逐步升级到我们自己的定制硬件。  我们的初始硬件具有与 EVM 相似的存储器映射(即 I2C EEPROM、SPI 闪存、DDR3)。  主要区别在于、DDR3存储器需要不同的 DDR3配置设置才能正常运行。  

第一步是 修改 EVM GEL 文件以正确配置我们的硬件。  通过这些更改、我们正确配置了 DDR3存储器、并验证了处理器正在运行、并且能够调试应用。

下一步是修改 IBL/RBL 配置以使用这些更改。  我们正在尝试仿真 EVM 的启动特性。 (即从 I2C EERPOM 加载 IBL、并从 SPI 闪存加载应用。)  但是、我们正在努力确定在何处/如何完成此任务。

  • 是否有任何文档/应用手册/说明/示例显示了在加载应用之前修改/配置 IBL 以正确配置 DDR3接口的位置/方法?
  • 是否可以直接从 SPI 闪存加载 RBL? (即直接从 SPI 闪存引导处理器。)  如果可能、是否有任何文档/应用手册/说明/示例显示在加载应用之前修改/配置 RBL 以正确配置 DDR3接口的位置/方法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bras、

    问题:  

    下一步是修改 IBL/RBL 配置以使用这些更改。  我们正在尝试仿真 EVM 的启动特性。 (即从 I2C EERPOM 加载 IBL、并从 SPI 闪存加载应用。)  但是、我们正在努力确定在何处/如何完成此任务。

    • 是否有任何文档/应用手册/说明/示例显示了在加载应用之前修改/配置 IBL 以正确配置 DDR3接口的位置/方法?
    • 是否可以直接从 SPI 闪存加载 RBL? (即直接从 SPI 闪存引导处理器。)  如果可能、是否有任何文档/应用手册/说明/示例显示在加载应用之前修改/配置 RBL 以正确配置 DDR3接口的位置/方法?

    答案:

    1.可以,可以修改 IBL。 请访问此处、以修改和重新构建 IBL。

    4.d)如何构建 IBL–

    2.我想您的问题是在没有 IBL 的情况下从 SPI 引导。  

    是的、这也是可能的。   https://www.ti.com/lit/an/spracn2/spracn2.pdf

    页码: 2.  

    2个直接引导示例(不带 IBL) TI C66xx EVM 在上电复位后始终实现中间引导加载程序。 EVM 上的 FPGA 固件将内核重定向到 EEPROM 上刷写的 IBL、然后将其定向到所需的引导模式。 但是、在定制设计中、由于成本和尺寸原因、添加额外的 EEPROM 来实现 IBL 可能不切实际。 C667x PG 2.0芯片解决了 PLL 锁定问题、不再需要在定制电路板上实现 IBL; C665x PG 1.0器件不存在 PLL 锁定问题、因此也不需要在定制板上实现 IBL。 为了证明硬件可以直接从 ROM 引导加载程序引导而不使用 IBL、创建了一些示例、可用于在 EVM 硬件上验证此流程。

    下面介绍的两个示例分别是 C6678上的 SPI 引导和 C6657上的 NAND 引导。 每个示例都有一个 readme.txt 或文档、指导用户完成创建这些引导映像的处理。

    •C6678 EVM SPI 引导示例

    •具有 DDR 初始化功能的 C6657 EVM SPI 引导示例

    •C6657 EVM NAND 启动示例

    请注意、指向"C6657 EVM SPI 引导示例"的链接似乎已断开。 让我在这里搜索并上传   

    此致

    Shankari G

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

    感谢您的快速响应。  我一直在查看 C:\ti\pdk_c665x_2_0_16\packages/ti\boot\IBL 目录中的代码。  但是、由于该 IBL 支持多个处理器、并且不是 IDE 支持的 CCS 工程。 我很想确定 IBL 的流程以及在哪里进行必要的更改以支持定制硬件。  此外、我不确定 IBL 是否需要更改。

    1) 1)是否有说明 IBL 操作的文档?

    2) 2)我在找对的地方吗?  (即 需要对 IBL 进行更改以支持我的系统的不同 DDR3内存。

    3) 3)在哪里可以找到您的响应中提到的示例代码/项目  

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4210573 #4210573"]具有 DDR 初始化功能的 C6657 EVM SPI 引导示例[/quot]

    谢谢、

    Brad

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

    Brad、

    我可以在以下方面为您提供帮助 (如果您的要求是随 IBL 一起启动应用程序....)  

    1.如何构建 IBL。

    如何将 IBL 刷写到 EEPROM 中

    3.如何将应用二进制文件刷写到 SPI-NOR 中。

    --

    如前所述,“具有 DDR 初始化功能的 C6657 EVM SPI 引导示例”(没有 IBL)示例项目的链接已断开。

    我将很快在链接上更新您,我们可以在其中下载 SPI 引导示例的源代码(不带 IBL)

    --

    请告诉我您的选择、以便我可以指导您朝这个方向前进。

    有 IBL 还是没有 IBL?

    此致

    Shankari G

     

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

    我们的定制硬件通过 I2C EEPROM、SPI NOR 闪存和 DDR3存储器复制了 EVM 的配置。  

    我们当前的目标是让我们的定制硬件从 I2C EEPROM 存储器引导、并将应用从 SPI NOR 闪存加载到 DDR3存储器中。  为此、我的初始目标是使用 IBL。

    正如我看到的、修改和加载该过程的步骤是:

    1. 修改代码。
      在代码中找到修改 DDR3存储器配置的位置、我需要修改这些配置以支持我的定制硬件。
      我一直在寻找、但尚未找到 IBL 代码库中用于更改 DDR3存储器配置的位置。  您能否将我指向配置 DDR3存储器的正确文件?
    2. 编译 IBL
      这可以通过点击上面显示的链接"如何构建 IBL–"来实现
    3. 将"新"IBL 加载到硬件中。
      这可以通过按照以下链接中的说明来实现(对我们的定制硬件进行修改)
      https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057566/faq-tms320c6657-how-to-flash-the-ibl-intermediate-boot-loader-into-eeprom-and-how-to-flash-the-application-binary-into-nor-how-to-boot-the-ibl-application-binary 

    我的延伸目标是直接从 SPI NOR 闪存完成应用的负载。  正如您在前面的注释中所述、代码链接显示了如何断开直接从 SPI 闪存链接加载处理器的操作。  我想回顾一下这个代码、看看我将来如何实现这个引导模式。  

    总之、我的问题是:

    1. IBL 代码库中的哪个位置是 C6657 DDR3存储器初始化的配置?
    2. 在哪里可以找到"C6657 EVM SPI 引导示例及 DDR 初始化"?

    提前感谢您的帮助、

    Brad

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

    Bras 说:  

    --------

    总之、我的问题是:

    1. IBL 代码库中的哪个位置是 C6657 DDR3存储器初始化的配置?
    2. 在哪里可以找到"C6657 EVM SPI 引导示例及 DDR 初始化"?

    --

    答案:

    让我看一下它、然后返回 EOD。

    2.我已将下载示例的链接断开、转交给问题部门。 我们可能必须等到他们作出答复。

    此致

    Shankari G

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

    Bras、

    给你。

    2.答案  

    我已上传 “C6657 EVM SPI boot example with DDR initialization”的源代码:  e2e.ti.com/.../2781.C6657_5F00_directROM_5F00_Boot_5F00_example.zip

    1.答案:

    当我搜索 IBL 源时、我可以找到如下 DDR3实例:

    逐个浏览。 仅关注"C665x"

    此致

    Shankari G

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

    在查看直接 SPI 引导的示例代码时、用户似乎需要使用硬件所需的寄存器配置来配置 emif4Cfg 结构。  我正在翻译一个工作配置(从 GEL 文件)以填写此结构。  但是、我不明白结构中的某些值来自哪里。  此帖子底部是我的当前配置。

    问题:

    1.  值(3、     /* pllPrediv         */)从何处 派生?
    2. 我的工作 GEL 文件具有 DataX_WRLVL_INT_Ratio 和 DataX_GTLVL_INIT_Ratio 的值。  这些值应添加到配置结构的哪个位置?
    3. 在结构的末尾、有些值没有任何注释。  (即0x87A0047F、0、0、0、0、0、 0、0x33、0x3A……)
      1. 这些值代表/执行什么操作?   

    谢谢、

    Brad

    const boot_EMIF4_TBL_T emif4Cfg = {
     
        BOOT_EMIF4_ENABLE_MSW_pllCtl              |\
        BOOT_EMIF4_ENABLE_MSW_SDRamTiming1        |\
        BOOT_EMIF4_ENABLE_MSW_SDRamTiming2        |\
        BOOT_EMIF4_ENABLE_MSW_SDRamTiming3        |\
        BOOT_EMIF4_ENABLE_MSW_ddrPhyCtl1          |\
        BOOT_EMIF4_ENABLE_MSW_SDRamRefreshCtl     |\
      BOOT_EMIF4_ENABLE_MSW_SDRamOutImpedCalCfg |\
        BOOT_EMIF4_ENABLE_MSW_SDRamConfig、
     
        BOOT_EMIF_ENABLE_SLSW_CONFIG0 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG6 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG7 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG8 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG9 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG10 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG18 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG19 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG20 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG22 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG12 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG23 |\
        BOOT_EMIF_ENABLE_SLSW_CONFIG21、     //配置选择 slw *
        0、     /*配置选择 lsw */
        
        3、     /* pllPrediv         */
        79、    //(originalvalue) 40、    // pllMult   */
        2、     //(originalvalue) 2、     // pllPostDiv */
     
        0x63026AB2、 //(originalvalue) 0x62477AB2、 // sdRamConfig *
        0、          /* sdRamConfig2、         无关*/
        0x00001458、 //(originalvalue) 0x0000144F、 // sdRamRefreshCtl *
        0x1113783C、 //(originalvalue) 0x1333780C、 // sdRamTiming1 */
        0x30B37FE3、 //(originalvalue) 0x30717FE3、 // sdRamTiming2 *
        0x559F8ADF、 //(原始值) 0x559F86AF、 // sdRamTiming3 *
     
        0、          /* lpDdrNvmTiming、       无关*/
        0、          //* powerManageCtl,       无关*/
        0、          /* iODFTTestLogic、       无关*/
        0、          /* performCountCfg、      无关*/
        0、          //* performCountMstRegSel,无关*/
        0、          /* readIdleCtl、          无关*/
        0、          //* sysVbusmIntEnSet,     无关*/
        0x70074c1f、 /* sdRamOutImpedCalCfg 、无关*
        0、          /* tempAlterCfg、         无关*/
     
        0x0010010F、 /* ddrPhyCtl1 *
     
        0、          //* ddrPhyCtl2、           无关*/
        0、          /* priClassSvceMap、      不用考虑*/
        0、          /* mstId2ClsSvce1地图,    无关*/
        0、          /* mstId2ClsSvce2Map、    无关*/
        0、          /* eccCtl、               无关*/
        0、          //* eccRange1,            无关*/
        0、          /* eccRange2、            无关*/
        0、          /*读数 WrtExcelThresh、       无关*/
     
        0x87A0047F、0、0、0、0、 0、0x33、0x3A、
        0x2C、0x2C、0x21、0、0xAF00002、 0、0、0、
        0、0、0xB7、0xB1、0xA4、 0xA4、0x98、0x200、
        0、0、0、0、0、 0、0、0、
        
        0、0、0、0、0、 0、0、0、
        0、0、0、0、0、 0、0、0、
        0、0、0、0、0、 0、0、0、
        0、0、0、0、0、 0、0、0
     };

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

    Brad、

    这里是节日季。

    很抱歉耽误你的时间。

    让我看看它并返回。

    此致

    Shankari G

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4354816 #4354816")结构的末尾有一些值没有任何注释。  (即0x87A0047F、0、0、0、0、0、 0、0x33、0x3A……)
    1. 这些值代表/执行什么操作?  
    [/报价]

    这些64是     tiboot.h 中 typedef struct bootEmif4Tbl_s 内的 chipConfig " uint32 chipConfig[64];"的值

    将 " DDR3配置0寄存器(DDR3_CONFIG_0)的值更改为 DDR3配置60寄存器(DDR3_CONFIG_60)、它们保留在数组  UINT32芯片配置[64]中;

    有关更多详细信息、请参阅"Keystone 架构 DDR3存储器控制器用户指南"- https://www.ti.com/lit/ug/sprugv8e/sprugv8e.pdf

    第88至117页,第4.31至4.89节

    ----------------------

    typedef 结构体 bootEmif4Tbl_s{

    uint32 configSelect_msw;/*位映射定义要设置的寄存器*/
    uint32 configSelect_slsw;/*位映射定义要设置的寄存器*/
    uint32 configSelect_LSW;/*位映射定义要设置的寄存器*/

    uint32 pllPrediv;/*所有0的值将禁用 PLL */
    uint32 pllMult;
    uint32 pllPostDiv;

    uint32 sdRamConfig;//由 configSelect_msw 的位1控制
    uint32 sdRamConfig2;//位2 *
    uint32 sdRamRefreshCtl;//位3 *
    uint32 sdRamTiming1;//位4 *
    uint32 sdRamTiming2;//位5 *
    uint32 sdRamTiming3;//位6 *
    uint32 lpDdrNvmTiming;//位7 */
    uint32 powerManageCtl;//位8 *
    uint32 iODFTTestLogic;/*位9 *
    uint32 performCountCfg;/* bit 10 */
    uint32 performCountMstRegSel;//位11 *
    uint32 readIdleCtl;//位12 *
    uint32 sysVbusmIntEnSet;//位13 *
    uint32 sdRamOutImpedCalCfg;/*位14 *
    uint32 tempAlterCfg;//位15 *
    uint32 ddrPhyCtl1;//位16 *
    uint32 ddrPhyCtl2;/*位17 *
    uint32 priClassSvceMap;//位18 *
    uint32 mstId2ClsSvce1Map;//位19 */
    uint32 mstId2ClsSvce2Map;//位20 *
    uint32 eccCtl;//位21 *
    uint32 eccRange1;//位22 *
    uint32 eccRange2;/*位23 */
    uint32读数 WrtExcelThresh;//位24 */

    uint32芯片配置[64];

    } BOOT_EMIF4_TBL_T;

    ----

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4354816 #4354816"]我的工作 GEL 文件具有 DataX_WRLVL_INT_Ratio 和 DataX_GTLVL_INIT_Ratio 的值。  应将这些值添加到配置结构的何处?[/quot]

    请上传您使用的 GEL 文件。 因为在 TI 提供的标准 GEL 文件中、如 evmc6657l.gel、我找不到"DataX_WRLVL_INT_Ratio"

    ----

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4354816 #4354816"] 其中值(3、     // pllPrediv         *) 源自?

    这是源自系统时钟的外设时钟。

    请参阅  

    https://www.ti.com/lit/ds/symlink/tms320c6657.pdf 页码:83 - 85 -章节:6.6.1 主 PLL 控制器特定于器件的信息6.6.1.1内部时钟和最大工作频率

    SYSCLK3:用于为 MSMC、超链接、和 DDR EMIF 计时的1/2速率时钟

     https://www.ti.com/lit/ug/sprugv2i/sprugv2i.pdf 

    此致

    Shankari G

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

    感谢您的回答。   

    对 SPRUGV8E 的引用清除了我的几个问题、并提出了更多问题。

    1. 您的响应会清除附加寄存器的定义。
    2. 我的问题与 DataX_WRLVL_INT_Ratio 和 DataX_GTLVL_INIT_Ratio 有关、这是为了概括引用 Data0_WRLVL_INT_Ratio、Data1_WRLVL_INT_Ratio、...  SPRUGV8E 回答了这个问题。  这些值在芯片配置寄存器中设置。
    3. 到 DDR PLL 的时钟速率是系统时钟速率的1/2。  这引起了   与2781.C6657_directROM_Boot_Example.zip 中包含的 DDR3示例有关的问题。  在此示例中 、pllPrediv 设置为3、因此这意味着提供给 DDR 存储器的时钟是系统时钟速率的1/3。  此示例是否错误?  即 pllPrediv 是否应设置为2?
    4. 我使用 SPRUGV8E 中的定义来解码 TI 提供的直接启动示例。  DDR3_CONFIG_0正在设置为0x87A0047F。  文档指出用户不应写入这些位。  为什么 TI 的示例写入这些保留位?
    5. 与 DDR3_CONFIG_12相同的问题。  该寄存器设置为0xAF00002、其中大多数位在保留域中。  为什么 TI 的示例写入这些保留位?
    6. 将 SPRUGV8E 与示例相关联。 此示例为将芯片配置2至5的值设置为零、这些值是 C6657的 reg_phy_wrlvl_init_ratio 寄存器、并为芯片配置6至9设置值、这些值也是 reg_phy_wrlvl_init_ratio 值、但在 C6657中列为 nA。  哪些文档是正确的、示例代码还是文档?
    7. 对于芯片配置14至21 (reg_phy_gatelvL_init_Ratio)寄存器、问题与6相同。  该示例写入 NA 寄存器。  哪些文档是正确的?
    8. 在查看直接引导示例时、 sdRamOutImpedCalCfg 配置为值、但注释指出该值是"无关"。  用户是否需要 配置此值?  提供的值是需要设置的值还是真正的"无关"寄存器?
    9. 我不是 DDR3或 TI EMIF 的专家, 为什么示例中说大多数配置寄存器是“无关”的?

    谢谢、

    Brad

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

    Brad、

    转至 KeyStone I DDR3初始化指南- https://www.ti.com/lit/an/sprabl2e/sprabl2e.pdf

    并下载  http://www.ti.com/lit/zip/sprabl2。位于第1页。

    对于定制板、我们必须使用以下扩展表来计算 DDR3寄存器和进行配置。

    --

    e2e.ti.com/.../5164.DDR3-PHY-Calc-v11.xlsx

    e2e.ti.com/.../5417.DDR3-Register-Calc-v4.xlsx

    此处使用的器件的一些示例值是 K4B2G1646C (1333)- DRAM 芯片

    对于定制板,您必须使用这些扩展表,这些扩展表将自动为您提供要在 GEL 文件和 软件源文件中使用的 DDR3寄存器值....  

    DDR3时钟时序  
      设计值 单位
    DDR3输出时钟频率 666.667 MHz
    双倍数据速率时钟   1333.333 MHz
    DDR3输出时钟周期 1.500 ns
    器件和速度等级 K4B2G1646C (1333)  

    此处使用的器件的一些示例值是 K4B2G1646C (1333)- DRAM 芯片

    寄存器 地址 十六进制值 十进制值
    Data0_WRLVL_INIT_Ratio 0x0262040C 00000099 153.
    Data1_WRLVL_INIT_Ratio 0x02620410 00000099 153.
    Data2_WRLVL_INIT_Ratio 0x02620414 00000099 153.
    Data3_WRLVL_INIT_Ratio 0x02620418 0000008D 141.
    Data4_WRLVL_INIT_Ratio 0x0262041C 00000075 117
    Data5_WRLVL_INIT_Ratio 0x02620420 00000077 119
    DATA6_WRLVL_INIT_Ratio 0x02620424 00000062 98
    DATA7_WRLVL_INIT_Ratio 0x02620428 0000005E 94
    DATA8_WRLVL_INIT_Ratio 0x0262042C 00000080 128
       
    寄存器 地址 十六进制值 十进制值
    Data0_GTLVL_init_Ratio 0x0262043C 000000DF 223.
    Data1_GTLVL_INIT_Ratio 0x02620440 000000DF 223.
    Data2_GTLVL_INIT_Ratio 0x02620444 000000C2 194.
    Data3_GTLVL_INIT_Ratio 0x02620448 000000CE 206.
    Data4_GTLVL_INIT_Ratio 0x0262044C 000000AE 174.

    --

    由于 C6657、C6678、KeyStone -II 器件(例如 K2E、K2H 等)使用相同的代码库、因此有时可能无法更新源代码中的注释。 另外、请注意、这是一个7年前的代码。

    最好坚持阅读文档。

    --

    如果 C6657 EVM 可用,请尝试以下操作.....

    首先,使用 Readme.txt---尝试直接引导示例(仅二进制文件)在 C6657 EVM 上工作。 >位于"C6657_directROM_Boot_Example.zip\c6657\SPIboot_DDR\docs"

    如果成功,作为下一步,重建二进制文件,并尝试使用位于 C6657_directROM_Boot_Examples\C6657\SPIboot_DDR_UserGuide.docx 的"SPIboot_With DDR_UserGuide.DOCK"-->加载和检查

    如果成功,我们将深入了解更多详细信息...深入了解 芯片配置值

    请分享您的想法

    --

    一般注意事项:您可以在产品文件夹- https://www.ti.com/product/TMS320C6657#tech-docs 下找到所有必要的技术文档

    "KeyStone I DDR3 Initialization"指南是82个技术文档中的一个。

    --

    我在这里专门创建了一个关于 DDR3寄存器计算的常见问题解答页面: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1096375/faq-66ak2e05-how-to-calculate-the-ddr3-interface-registers-for-keystone-ii-devices-and-test-debug-on-keystone-ii-evm

    但这适用于 Keystone - II (两个- K2H 和 K2E)器件。 但是对于 KeyStone (一个器件- C6657和 C6678),此过程仍然相同,只是电子表格必须从“KeyStone I DDR3 Initialization guide”下载....  

    此致

    Shankari G

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

    在我解决查找和处理 TI 提供的信息的问题时、感谢您的理解。

    我知道该示例是旧的、开发为许多处理器的常见示例、错误确实会进入示例。  由于我对这个主题不是很了解、我希望这些示例足够正确、能够指导我完成初始开发。  

    我似乎需要重新开始讨论和工作,从简单到复杂。  为此、我已经编写了一个示例 、该示例应该可以在 EVM 和我的定制硬件上运行。  这里的最终目标是能够从 SPI NOR 闪存启动处理器、并让 RBL 将代码加载到 DDR3存储器中并启动程序。  为此、需要介绍几个步骤。  

    • 连接到定制硬件
    • 将数据加载到 SPI NOR 存储器中。
    • 将 RBL 配置为从 SPI NOR 存储器引导  

    为了完成下面的操作、我详细介绍了创建可验证的良好 SPI NOR 映像的当前步骤以及将该映像加载到定制硬件的过程。

    1. 创建了一个自定义 GEL 文件以支持自定义硬件(例如 DDR3存储器)。
      1. 这是 evmc6657l.gel 的副本、根据我们的电路板和存储器修改了 DDR3配置。   
      2. GEL 文件修改基于 http://www.ti.com/lit/zip/sprabl2上的 DDR3 PHY calc v11.xlsx 和 DDR3 Registers v4.xlsx 电子表格
      3. 该文件中添加了其他调试语句、以便在连接到处理器时报告 DEVSTAT 和引导模式。
      4. 通过这些更改、GEL 文件正确调试器能够连接到定制硬件、将代码加载到 DDR3存储器和 execute.e2e.ti.com/.../saratoga_5F00_1333.gel 中
    2. SPI 直接引导代码
      1. 我已下载示例代码 2781.C6657_directROM_Boot_Example.zip、  
      2. 向该示例添加了代码、以证明代码已加载并正在执行。  唯一的修改就是主函数、将 GPIO21/UARTTXD 转换为 GPIO 线路、并以标称速率永久切换该线路。  
        Fullscreen
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        void main(void)
        {
        volatile uint32_t *BOOT_COMPLETE = (volatile uint32_t *)0x0262013C;
        volatile uint32_t *PIN_CONTROL_0 = (volatile uint32_t *)0x02620580;
        volatile uint32_t *GPIO_C6657_DIR = (volatile uint32_t *)(0x02320000 + 0x10);
        volatile uint32_t *GPIO_C6657_OUT_DATA = (volatile uint32_t *)(0x02320000 + 0x14);
        uint32_t loop_cnt = 0;
        *BOOT_COMPLETE = 0x00000003;// Set BootComplete 0 and 1
        *PIN_CONTROL_0 = 0x00200000;
        *GPIO_C6657_DIR = 0xFFDFFFFF;// GPIO21 Output
        for (loop_cnt = 0; loop_cnt < 0x0FFFFFFF; loop_cnt++) {
        uint32_t x;
        for (x=0; x<0x1fffffe;x++) {
        *GPIO_C6657_OUT_DATA = 0x00200000;// GPIO21 High
        }
        for (x=0; x<0x1fffffe;x++) {
        *GPIO_C6657_OUT_DATA = 0x0; // GPIO21 Low
        }
        }
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      3. 按照 directrom_Boot_example 文档中的指令编译了此代码。
      4. 在 EVM 上执行示例代码。
        1. 已将编译的代码加载到 TMDS6657LS EVM。  按照示例文档中的说明进行操作。
        2. 已将 EVM 配置为 SPI 引导 SW3{引脚0 - PIN8)= 10110000 (0开、1关) SW5 (引脚0 - PIN8)= 00100000。
        3. 已重新启动 EVM。
        4. 启动后、EVM 的 GPIO21会切换。
    3. 对 SPI 直接引导代码的其他更改
      1. 更改了 GPIO 切换的速率
      2. 我更改了 spidboot.cmd 文件以添加新的内存定义 L2_data  : origin = 0x800000,  length = 0x6000,并指示所有已定义的段指向此内部内存。
        Fullscreen
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        spiboot.obj
        -c
        -a
        -stack 0x400
        MEMORY
        {
        DDR_CFG : origin = 0x8ffd20, length = 0x180
        L2MAGIC : origin = 0x8ffffc, length = 0x4
        DDR : origin = 0x80000000, length = 0x2000
        L2_DATA : origin = 0x800000, length = 0xff000
        }
        SECTIONS
        {
        .emif4Cfg > DDR_CFG
        .stack > L2_DATA
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      3. 按照 directrom_Boot_example 文档中的指令编译了此代码。
      4. 在 EVM 上执行上述2.d 中所述的示例代码
      5. GPIO 以新的数据速率切换。
    4. 验证自定义硬件是否按预期响应代码。
      1. 将代码更改添加到在自定义硬件上运行的项目中的 main()函数的顶部。
      2. 编译代码并将其加载到定制硬件中。
      3. 运行代码并验证  GPIO21/UARTTXD 线是否按照代码的指示切换。
    5. 在定制硬件上运行内部 RAM 示例。
      1. 定制硬件与 EVM 非常相似  
        1. 使用了类似的 SPI 存储器(例如、由于可用性而更大)
        2. SPI 存储器 CS 与 EVM 相同。  另一个 SPI CS 脱离板(即未使用/未连接)
        3. 使用与处理器相同的输入时钟频率。
        4. 引导模式引脚是可配置的。  MODE 引脚可通过开关配置、其他引脚可通过电阻器上拉和下拉电阻器进行配置(安装/拆卸)
      2. 将代码加载到定制硬件中
        1. C6657的引导模式引脚设置为 No Boot。  (GEL 文件报告当前 DevStat 寄存器值 C66xx_0:GEL 输出:DEVSTAT 0x00018401 引导模式= 0x00000000)
        2. 使用修改后的 GEL 文件、在 XDS200开发仓体和定制硬件之间建立连接。
        3. NOR 编写器从2781.C6657_directROM_Boot_Examples\C6657\SPIboot_DDR\bin\flashwriter\norwriter_evm6657l.out 加载
        4. app.dat 被加载到 DDR 存储器中。
        5. 执行 NOR 编写器应用程序。
        6. 控制台报告成功。  
      3. 将引导模式引脚更改为 SPI 引导。 (通过连接 XDS200并查看 DEVSTAT 寄存 器显示 C66xx_0:GEL 输出:DEVSTAT 0x0001840D 引导模式= 0x00000006进行了验证。
      4. 自定义电路板上电后、GPIO21/UARTTXD 不会切换。

    注: 我认为代码正在加载到内部 L2 RAM 中、因此此时 DDR 存储器的设置不会出现任何问题。

    • 由于引导模式引脚不是由 EVM 用户开关直接设置的、因此我不知道在 EVM 的 SPI 引导期间如何配置引导模式线路。  您能否确认我在启动时对引导模式行的设置是否适用于 SPI 引导?
    • 您是否对自定义硬件为何不引导有任何想法?

    在等待您的回答时、我将 读取/重新读取您引导我的 DDR3资源、并在设备可以从 SPI 引导后提出更多问题。

    提前感谢您的帮助。

    Brad

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

    Brad、

    好的。 让我检查您的所有步骤。

    此致

    Shankari G

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

    Brad、

    您的所有步骤似乎都是正确的。

    你总结的很好…  太好了。

    我正在通过 C6657 EVM 实验和验证您的步骤, 我手头有该 EVM。

    将在一天或两天内告知我的结果。

    此致

    Shankari G

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

    Brad、

    1.我已验证 C6657 EVM 上的直接引导示例(使用 NOR 编写器的 SPI-NOR 与 DDR)、并可以验证直接引导是否成功。

    2、让我在明天通过屏幕截图和视频发布这些步骤。

    (我想、您可能已经离开了这个步骤-在 CCS 中打开 app.dat、并将 0x1F 偏移处的值编辑为00。  它将为0x51。) 除此之外、您的所有步骤都应该正确

    您使用的 DIP 开关设置正确:  

    SW3{引脚0 - PIN8)= 10110000 (0开、1关) SW5 (引脚0 - PIN8)= 00100000。 (与 C6657 EVM 上用于 ROM SPI 引导的 I 相同)

     

    此致

    Shankari G

      

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

    正如我在上一篇文章中尝试解释的那样、我能够创建两个应用、即 EVM、它们可以加载到 SPI 或闪存中、并且能够正常运行。  通过监控 TXD 线(配置为 GPIO 输出)在低电压和高电压之间的切换来验证这一点。  第一个加载到外部 DDR3 存储器中、第二个加载到内部 L2_DATA 存储器中。  

    注意: 这些应用均已通过 EVM 硬件验证为可正常运行!!  (即切换的 GPIO 线路)

    因此、通过这次测试、应用二进制文件的创建被证明是正确的构建!!!

    因为我的定制硬件与 EVM 非常非常相似

    1. 相同的制造商
    2. 同一个系列
    3. 连接到 DSP 的相同引脚
    4. SPI NOR 编写器程序报告加载 SPI 存储器时成功。  

    除了调试器能够连接、加载和 调试代码外、我唯一可以想象的问题是与引导模式引脚不同的问题。

    为此,我要明确重申我在上一篇文章中提出的问题。

    1. 引导模式引脚[12..0]的正确配置是什么
      1. EVM 引导的工作原理
        1. FPGA 将引导模式引脚设置为从 I2C EEPROM 引导。  
        2. DSP 从 EEPROM 引导 IBL。
        3. 然后 IBL 配置 DDR3存储器。
        4. 然后、IBL 会向 FPGA 查询用户配置的引导模式开关/设置。
        5. 然后、IBL 修改用户选择的引导模式的 DEVSTAT 寄存器(包含引导模式引脚)。  在本例中为 SPI 引导。
        6. 然后 IBL 调用 RBL 、就像直接从硬件调用它一样。
        7. 如果不正确、请更正此描述!!!
      2. 我的问题: 为了在我的定制硬件上复制 EVM 的 SPI 引导、当 IBL 调用 RBL 时、我需要确认 DEVSTAT 寄存器的值。 请提供此值吗?
    2. 您是否对自定义硬件为何不引导有任何想法?
      1. 假设您已与其他客户合作、他们在从 SPI NOR 闪存引导 C6657时遇到问题。  
        1. 您能否提供有关其他客户从 SPI 引导 C6657时遇到的问题的任何信息?  (即其他客户案例的问题和解决方案)
        2. C6657中是否有其他子系统会导致处理器从 SPI 引导的问题?
        3. 您是否有任何故障排除指南可帮助我们确定处理器为何不从 SPI 引导?
      2. 您是否看到我在调试 SPI 引导问题时遵循的流程存在任何问题。
      3. 您是否需要任何其他信息来帮助调试 C6657的 SPI 引导?

    我 一直在努力与您合作、并尝试解决此问题超过三周!!!  

    由于该处理器不会从闪存引导、因此它现在正在影响我们的产品开发。  需要快速解决此问题!!!

    注意:我们的定制硬件还包含 I2C EEPROM (如 EVM)。  如果使用此命令启动处理器、则可以更快地实现目标、我愿意切换到使用 C6657从 I2C 引导。  无论我需要什么、都可以让该处理器尽快从非易失性存储器引导。  

    提前感谢您的帮助。

    Bard

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

    Brad、

    现在、您对 IBL 有什么疑问?

    到目前为止、我们正在尝试在没有 IBL 的情况下直接执行引导? 。 直接 SPI-boot 示例具有如下引导流程:- RBL -->在 SPI-NOR 上的应用-->不使用 IBL!。

    --

    1. RBL 是 ROM 引导加载程序--这不能修改。

    IBL 是中间引导加载程序--这也称为次级引导加载程序。

    3. app.dat 是被刷写到非易失性存储器中并被执行的二进制文件。

    请注意:- IBL 从不调用 RBL。  

    --

    引导方法只有两种。

    RBL + IBL + app.bin  

    2. RBL + app.dat ->直接引导示例。

    --

    对于第一种方法、

    1. RBL + IBL + app.bin -这是唯一可靠的文档: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057566/faq-tms320c6657-how-to-flash-the-ibl-intermediate-boot-loader-into-eeprom-and-how-to-flash-the-application-binary-into-nor-how-to-boot-the-ibl-application-binary

    2. RBL + app.dat -->直接启动示例-->我尚未将其作为常见问题发布。

    让我知道您要以哪种方式/方法继续?  

    --

    以下是有关引导加载程序和引导模式的文档。

     https://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf -  KeyStone 架构文献编号:SPRUGY5C 2013年7月 DSP 引导加载程序用户指南

    .https://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#c66x

    3. https://www.ti.com/lit/an/spracn2/spracn2.pdf -引导加载程序常见问题解答。

    --

    此致

    Shankari G

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

    Brad、

    现在、您对 IBL 有什么疑问?

    到目前为止、我们正在尝试在没有 IBL 的情况下直接执行引导? 。 直接 SPI-boot 示例具有如下引导流程:- RBL -->在 SPI-NOR 上的应用-->不使用 IBL!。

    --

    1. RBL 是 ROM 引导加载程序--这不能修改。

    IBL 是中间引导加载程序--这也称为次级引导加载程序。

    3. app.dat 是被刷写到非易失性存储器中并被执行的二进制文件。

    请注意:- IBL 从不调用 RBL。

    RBL 调用 IBL、不能相反。

    --

    引导方法只有两种。

    RBL + IBL + app.bin  

    2. RBL + app.dat ->直接引导示例。

    --

    对于第一种方法、

    1. RBL + IBL + app.bin -这是唯一可靠的文档: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1057566/faq-tms320c6657-how-to-flash-the-ibl-intermediate-boot-loader-into-eeprom-and-how-to-flash-the-application-binary-into-nor-how-to-boot-the-ibl-application-binary

    2. RBL + app.dat -->直接启动示例-->我尚未将其作为常见问题发布。

    让我知道您要以哪种方式/方法继续?  

    --

    以下是有关引导加载程序和引导模式的文档。

     https://www.ti.com/lit/ug/sprugy5c/sprugy5c.pdf -  KeyStone 架构文献编号:SPRUGY5C 2013年7月 DSP 引导加载程序用户指南

    .https://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#c66x

    3. https://www.ti.com/lit/an/spracn2/spracn2.pdf -引导加载程序常见问题解答。

    --

    此致

    Shankari G

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

    好的、我的 IBL 的内部操作信息一定是错误的。

    正确的方法是、我们的最终目标(以及我迄今为止一直在努力的内容)是直接从 SPI NOR 闪存引导 C6657、而不使用 IBL。  我提出了这样一个事实、即我们也可以尝试使用 IBL、因为我似乎没有使用直接引导方法。

    RBL+IBL+app.bin

    我之前已在 EVM 上阅读并复制了 IBL 示例。  即、我已重新编译 IBL 代码并将其加载到 EVM 上、并且能够获得该版本的 IBL 来引导 EVM。  但是、这就是链接显示的所有内容。 在哪里以及如何修改 IBL 以与定制硬件配合使用时、不会出现问题。 (这是我的需求)

    RBL+app.dat

    我已经阅读  了2781.C6657_directROM_Boot_example.zip 文档 、并已将其用于创建已成功加载到 EVM 上的应用。

    但是、这两个示例都没有讨论在引导 DSP 时将 BOOTMODE[12..0]引脚设置为什么。

    EVM 讨论

    从我所读过的 EVM 中、FPGA 将 C6657的引导模式引脚配置为某种("我不知道引脚设置为什么")、从而使 C6657从 I2C 引导。  IBL 之前已加载到 I2C EEPROM 中。  此时 C6657开始执行 IBL。 IBL 配置 DDR 存储器、然后向 FPGA 查询 EVM SW3和 SW5设置的用户配置。  然后、IBL 根据这些配置为该引导模式配置、然后加载处理器。  

    我想要/需要知道的内容

    要继续调试自定义硬件、我需要确认是否已为 SPI 引导正确配置了引导模式引脚。  这不是 directROM_Boot_example 中的直接地址。  显示的设置适用于 EVM 引导模式开关设置。  
    我想知道的是:

    1. 为了正确配置 SPI 和引导的 RBL、应该将 BOOTMODE 引脚[12..0]设置为什么?
    2. 根据我的理解、EVM FPGA 在启动 C6657时会将 BOOTMODE 引脚[12..0]设置为什么?  我认为这些将是 I2C 引导的设置。

    请在下一次答复中回答这两个问题。

    提前感谢您、  

    Brad

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

    Brad、

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4365775 #4365775"]

    要继续调试自定义硬件、我需要确认是否已为 SPI 引导正确配置了引导模式引脚。  这不是 directROM_Boot_example 中的直接地址。  显示的设置适用于 EVM 引导模式开关设置。  
    我想知道的是:

    1. 为了正确配置 SPI 和引导的 RBL、应该将 BOOTMODE 引脚[12..0]设置为什么?
    2. 根据我的理解、EVM FPGA 在启动 C6657时会将 BOOTMODE 引脚[12..0]设置为什么?  我认为这些将是 I2C 引导的设置。
    [/报价]

    ===========================

    问题[1]的答案:

    ===========================

    DEVSTAT 的值会显示值:,表示为 SPI-boot。

    请在内存浏览器窗口中查看 DEVSTAT 寄存器值的值:如果可以将其与数据表映射、我可以解码为 SPI-boot。

    在您的定制电路板设置中、请检查它显示的值...  

    Devstat 值- 0x40D = 0100 0000 1101 =解码、数据表  https://www.ti.com/lit/ds/symlink/tms320c6657.pdf 中的页码为205

    ===

    1101 -

    ===

    0th 位 -->显示系统是在大端模式还是小端模式下运行的状态。 •

    值0 =系统在大端模式下运行

    值1 =系统在小端模式下运行

    因此、.dat 是 LE 格式-小端字节序格式-我们构建为"spirom_le_swap.dat"

    ----

    Devstat - 位[1:13]= bootmode[12:0] --> 110 -- SPIBOOT (此处,devstat 中的引导模式值与引导模式和 SW3开关5432匹配,为0110)

    Devstat [1:3]=引导模式[0:2]

    这里的值是110。

    Devstat 1:3 =引导模式0:2

    ===========================

    问题[2]的答案:

    ===========================

    https://www.einfochips.com/wp-content/uploads/2016/04/C6657-Lite-EVM_TechnicalReferenceManual.pdf

    2.2 EVM 引导模式和引导配置开关设置 C6657 Lite EVM 具有三个配置开关 SW3、SW5和 SW9、这些开关在释放 RESET 时锁存18个值。 当电路板通电、用户按下 FULL_RESET 按钮或 MMC 请求 POR 复位后、会发生这种情况。 SW3、SW5和 SW9决定了通用 DSP 配置、小端或大端模式和引导器件选择、DSP 引导器件配置、CorePac PLL 设置以及 PCIe 模式选择和启用。 有关默认开关设置和每个开关的详细信息、请参阅本文档的第3.3节。 有关 DSP 支持的引导模式的更多信息、请参阅 TMS320C6657数据表和 C66x 引导加载程序用户指南。

    由于 EVM 是 Advantech 的制造、有关其他文档、请参阅此网站 :https://www.einfochips.com/partnerships-and-alliances/device-partnerships/texas-instruments/tms320c6657-evm/ 的"资源-列"下

    --

    我理解您的观点。

    让我们逐个、多地逐个选择。

    将尝试很少的技术来分析或调试直接引导、然后让我们进入 RBL+IBL +app。

    --

    让我们检查以下内容并逐一缩小... (在定制硬件方面,耐心将对像我们这样的人起到关键作用。)  

    直接引导示例的大小似乎为25KB。 在 NOR 存储器上刷写到定制板中的.dat 文件的大小是多少。

    2.在存储器字段的长度部分的"加载存储器选项"期间设置的长度值是多少?  

    3.让我将这些步骤发布到我验证为直接引导示例的内容上。

    然后、请尝试在 EVM 和定制硬件上重复此操作、并观察行为。 然后让我们尝试从那里获取它。。

    --

    此致

    Shankari G

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

    从您的问题列表开始...

    1. 直接引导示例的大小似乎为25KB。 在 NOR 存储器上刷写到定制板中的.dat 文件的大小是多少。
      我要加载的文件是对 SPI 直接引导示例的微小修改。  
      Fullscreen
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      /* Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
      *
      *
      * Redistribution and use in source and binary forms, with or without
      * modification, are permitted provided that the following conditions
      * are met:
      *
      * Redistributions of source code must retain the above copyright
      * notice, this list of conditions and the following disclaimer.
      *
      * Redistributions in binary form must reproduce the above copyright
      * notice, this list of conditions and the following disclaimer in the
      * documentation and/or other materials provided with the
      * distribution.
      *
      * Neither the name of Texas Instruments Incorporated nor the names of
      * its contributors may be used to endorse or promote products derived
      * from this software without specific prior written permission.
      *
      * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


      按照应用手册中的构建说明操作后、app.dat 文件是  
      e2e.ti.com/.../app.dat

      此文件已成功加载到 EVM 并引导。  该文件基本上只是以  DMM 可监控的速率切换 GPIO21/UARTTXD 引脚。   这是我要加载到我们的定制硬件上的文件。

    2. 在存储器字段的长度部分中、在"加载存储器选项"期间设置的长度值是多少?  
       

    在本对话的前面部分、我完成了创建此示例所使用的步骤、并且在 EVM 和自定义硬件上加载了示例、包括 DEVSTAT 寄存器的值。  

    请参阅我关于此帖子的讨论。

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4360409 #4360409"]在自定义硬件上运行内部 RAM 示例[/quot]

    希望这能解答您的问题。

    Brad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4360409 #4360409">将引导模式引脚更改为 SPI 引导。 (通过连接 XDS200并查看 DEVSTAT 寄存器显示 C66xx_0的内容进行了验证:GEL 输出:DEVSTAT 0x0001840D 引导模式= 0x00000006。[/引用]

    --

    40D 在 DEVSTAT 中匹配。

    让我们重点介绍 DEVSTAT - 0x00018 -

    --

    14至15位-- 10b =根复合体模式下的 PCIe

    第16位---- 1 = PCIe 模块被启用

    --

    不应怀疑值00018影响 SPI 引导模式。

    但是、是否可以禁用 PCIe 模块? 暂时? 并检查它是否启动?

    --

    接下来,让我给出一些要插入到 SPI-Direct 引导代码中的代码行的示例...

    此致

    Shankari G

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

    我已经修改了定制板、使 PCIe 配置线路全部连接到低电平。   我尝试从 SPI 引导处理器、但仍然没有成功。  然后、我连接了调试器并验证了 DEVSTAT 寄存  器(DEVSTAT = 0x0000040D 引导模式= 0x00000006)。

    然后、我继续验证应用程序是否正确加载将起作用。  我通过以下方式完成了此操作:连接调试器后、我加载了 spidboot.out 文件并运行程序。  在我的硬件上、启动完成行被激活、 GPIO21/UARTTXD 切换。 (如预期)。

    您还想让我尝试什么?

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

    Brad、

    让我们在 C6657 EVM 以及您的定制硬件上执行一次简单/类似的测试。

    ===================================================================================================

    情况(1): 在 C6657 EVM 上使用"无引导模式"- CCS + XDS + GEL (观看下面的视频)

    ===================================================================================================

    引导模式:"无引导"

    1.下载下面给出的 spidboot.c。 (不修改任何代码)

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
    *
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    *
    * Redistributions of source code must retain the above copyright
    * notice, this list of conditions and the following disclaimer.
    *
    * Redistributions in binary form must reproduce the above copyright
    * notice, this list of conditions and the following disclaimer in the
    * documentation and/or other materials provided with the
    * distribution.
    *
    * Neither the name of Texas Instruments Incorporated nor the names of
    * its contributors may be used to endorse or promote products derived
    * from this software without specific prior written permission.
    *
    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2.下载下面提供的 spidboot.cmd。 (不修改任何代码)

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    spiboot.obj
    -c
    -a
    -stack 0x400
    MEMORY
    {
    DDR_CFG : origin = 0x8ffd20, length = 0x180
    L2MAGIC : origin = 0x8ffffc, length = 0x4
    DDR : origin = 0x80000000, length = 0x2000
    }
    SECTIONS
    {
    .emif4Cfg > DDR_CFG
    .stack > DDR
    .msmc > DDR
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    3.使用"gmake"构建 spidboot.c 并获取 spidboot.out。  

    3.1 -->请注意 spidboot.out 文件的大小为60KB ( 稍后,此值可能有助于比较自定义硬件的实际应用程序二进制文件的大小,同时从 SPI-NOR 加载和引导)

    4.将 C6657 EVM 与 CCS +XDS 连接并启动目标配置文件。 执行"connect target"并让其运行 GEL 文件并在控制台上生成输出。 (向我共享 GEL 文件输出消息)

    5.使用 spiboot.out 加载内核0并运行。

    观察输出:  

    6.转至 CCS 中的寄存器视图选项并点击"DDR3"。 将寄存器值导出到文档中。 (分享给我)。

    请注意 DDR3已配置。。。[请在运行 GEL 文件、加载 spidboot.out 之前以及加载并运行 spidboot.out 之后比较 DDR3值)  

    7.进入内存浏览器窗口,将 GPIO 寄存器地址作为“0x2320000”输入。 (如下面所示,将其分享给我)。

    请注意 、该值将在 GPIO_bank 寄存器_out_data 中更改为"00000100"。

    视频:  

    e2e.ti.com/.../C6657_5F00_spiboot_5F00_no_5F00_bootmode.mp4

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    情况(2): 在使用 NOR 写入器刷写到 NOR 存储器后,使用“SPI 引导模式”的 C6657 EVM 上。  (开始测试之前,请查看下面的视频)

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    1.相同的 spidboot.c (不修改任何代码)

    2.相同的 spidboot.cmd (不修改任何代码)

    3.使用"gmake"构建 spidboot.c 并获取 spidboot.out。  

    4.将.out 转换为 app.dat 并将 app.dat 的大小记录为"12KB"

    5.在 CCS 中打开 app.dat 并将偏移值51修改为00 -如 SPIboot_with_DDR_UserGuide.docx 中给出的那样

    5.使电路板处于“无引导模式”。 连接到 CCS、启动 cXML、加载 NOR 写入器.out。  使用存储器加载选项、找到 app.dat、选择二进制文件作为"TI 数据"。 单击"下一步"选项、选择地址"0x8000000000 "、长度为"0x4000"或0xC000"

    6.记下如下所示的控制台消息。

    7。现在、将引导模式更改为 SW3{引脚0 - PIN8)= 10110000 (0 - ON、1 - OFF) SW5 (引脚0 - PIN8)= 00100000。

    8.给电路板加电

    9.连接到 XDS。 启动 cXML。 连接目标。 它将在控制台中将引导模式值显示为"6"。

    9.转到寄存器视图-将 DDR3的值与 spiboot.c 中的值进行比较

    7.进入内存浏览器窗口,将 GPIO 寄存器地址作为“0x2320000”输入。 (如下面所示,将其分享给我)。

    请注意 、该值将在 GPIO_bank 寄存器_out_data 中更改为"00000100"。

    此屏幕截图值应与上述案例(1)步骤7屏幕截图匹配。

    这将证明 SPIBOOT 在 spidboot.c 的 main()内工作并执行代码

    e2e.ti.com/.../direct_5F00_boot_5F00_flashing_5F00_booting.mp4

    --

    ================================================================================

    案例3:在您的自定义硬件上使用"不启动"模式   

    ================================================================================

    不修改 spidboot.c 和 spidboot.cmd

    2.按照自定义硬件情况(1)中给出的步骤重复相同的测试

    ~~~~~~~~~~~~~~μ A

    要做的事情列表:-比较案例(1)与案例(3)

    ~~~~~~~~~~~~~~~μ A

    1.比较 C6657 EVM 的 GEL 文件和定制硬件的 GEL。 分析差异。

    2.比较 CCS 寄存器窗口中的 DDR3寄存器值- C6657 EVM 与定制硬件-分析差异。

    3.比较 GPIO 寄存器值的屏幕截图-  C6657 EVM 与定制硬件-分析差异。  

    如果输出相同、则 DDR3、GPIO 在定制硬件中正常工作。  

    请告诉我您在案例(3)以及中的观察结果

       -在 CCS 中分享 GPIO 输出屏幕截图

       -从 CCS 导出 DDR3寄存器值 并共享。

       -共享定制硬件的 GEL 源代码

       -共享 GEL 输出

    ========================================================================================

    案例4:在使用 NOR 写入器刷写到 NOR 存储器后、使用"SPI-boot mode"在定制硬件上。  

    ================================================================================

    不修改 spidboot.c 和 spidboot.cmd

    2.按照自定义硬件情况(2)中给出的步骤重复相同的测试

    ~~~~~~~~~~~~~~μ A

    要执行的操作列表:

    ~~~~~~~~~~~~~~~μ A

    1. 将 GEL 控制台输出消息与步骤9中发布的屏幕截图进行比较-案例(2)  

    2.比较 CCS 寄存器窗口中的 DDR3寄存器值-与您的情况(3) DDR3值-分析差异。

    3.将 CCS 寄存器窗口中的 DDR3寄存器值与 spiboot.c 中的 DDR3 emif4Cfg 值进行比较

    4.将 GPIO 寄存器值的屏幕截图 与您的案例(3)进行比较(此屏幕截图应为您的所有案例(1、2、3和4)提供相同的输出

    请告诉我您在案例(4)中的观察结果

       -在 CCS 中分享 GPIO 输出屏幕截图

       -从 CCS 导出 DDR3寄存器值 并共享。

       - 与引导模式值共享 GEL 输出

    ================================================================================

    此致

    Shankari G

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

    回答您的问题。

    注意:在以下响应中、我尝试导出 DDR3寄存器。  但是 、当尝试这样做时、控制台窗口中报告了错误、 "无法保存寄存器 DDR3_"、并且未将任何数据保存到.txt 文件中。

    案例1:使用"NoBoot"的 EVM

    1. 已将 spiboot.c 和 spiboot.cmd 复制到我的构建目录。
    2. 已运行 make 文件并创建~60kB sipboot.out 文件。
    3. 使用 emvc6657l GEL 文件连接到 C6657 EVM。 GEL 结果:
    4. DDR3寄存器
    5. 加载寄存器现在显示的 spidata.out 文件
    6. 运行应用程序后、将显示以下结果。
         

    案例2:使用"SPI-Boot"的 EVM

    1. 按照  SPIboot_with_DDR_UserGuide.docx 中的信息为 SPI 加载构建相同的程序
      1. 已将"0x51更改为0x00"更改为 app.dat 文件
      2. app.dat 文件大小为12KB。
      3. 加载了 norwriter 应用程序。  已加载存储器、app.dat 设置为:ADDR 0x8000000大小为0xC000。
        1. 注意:在控制台上生成警告"C66xx_0:意外的文件结束:C:/ti/pdk_c665x_2_0_16/packages/ti/boot/writer/nor/evmc6657l/bin/app.dat. 只有3780个字节从文件加载到存储器中、其余字节设置为零。"
      4. 运行了北边的人
    2. 将 EVM 引导模式更改为 SW3{引脚0 - PIN8)= 10110000 (0开、1关) SW5 (引脚0 - PIN8)= 00100000。
    3. 为电路板通电并连接了调试器。  DDR3值为:

    案例3:自定义硬件"无法引导"

    1. 我的定制 GEL 文件也将在 EVM 上运行。  基本来说、唯一的变化是:  
      1. 修改了 DDR 存储器测试以可配置测试长度、并在 DDR 存储器测试的每个部分中将 GEL_TextOut 添加到四次。
      2. 经过修改、可在每次调试器连接时打印 DEVSTAT 和 BOOTMODE 值。
      3. 添加了 GEL_TextOut 列印、以指示 GEL 文件中每个函数的开始作为结束。
      4. 将内存初始化调用从 DDR3_setup_auto_lvl_1333 (0)更改为 DDR3_setup_auto_lvl_1333 (); 因为没有变量传递到 DDR3_setup_auto_lvl_1333函数。
      5. 将 DATAx_WRLVL_INIT_Ratio 值修改为从硬件计算电子表格中获取的值。
      6. 将 DDR_SDTIT2、DDR_SDTIM3和 DDR_SDCFG 修改为电子表格计算中的值。
      7. 注意:我的定制 GEL 文件 Saratoga_1313.gel 也适用于 EVM!!!
    2. 调试器连接到目标
      1. 加载了我的自定义 GEL 文件(引用自定义 GEL 文件、位于 Saratoga_1313.GEL 上方)
      2. 连接 GEL 文件后、GEL 文件的结果显示在左侧、DDR3存储器显示在中间、GPIO 引脚状态显示在右侧。
      3. 结果与 EVM 的情况1一致

    案例4:定制硬件"SPI-Boot"

    1. 使用了相同的北向写入器应用程序。  相同的 spiboot 应用程序已加载到大小为0xC000的0x8000000中。
    2. 执行了北核者,结果如下。  

    3. 将引导模式引脚更改为 SPI 引导。
    4. 施加的电源。
    5. 已连接调试器并监控控制台 DDR3寄存器和 GPIO 配置。

    测试结果:

    1.  分析
      1. GEL 输出与 EVM 情况的输出匹配。 (即报告引导模式配置为 SPI 引导  
      2. DDR3内存配置与自定义硬件 NoBoot 测试的配置不匹配。
      3. DDR3值与 emif4cfg 值不匹配。
      4. GPIO 寄存器与其他三种情况不匹配。
    2. 如文章顶部所述、当尝试导出 DDR3寄存器时、控制台报告错误。  因此不包括数据(仅屏幕截图)。

    看来、我在实现直接为 SPI 或存储器启动处理器的目标方面没有取得任何进展。

    关于 此站点的其他研究的问题。

    我一直在搜索您的站点以获得更多信息、并在 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/832349/tms320c6657-bootloader-for-c6657上发布这篇文章 似乎表明 TI 不建议使用 ROM 引导加载 程序来配置 DDR3并将程序直接加载到 DDR3存储器中。   这是真的吗?  

    谢谢、

    Brad

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

    Brad、

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4369350 #4369350">我在您的站点上搜索了其他信息、并在这篇文章 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/832349/tms320c6657-bootloader-for-c6657 上看到、TI 似乎表示不建议使用 ROM 引导加载程序 来配置 DDR3并将程序直接加载到 DDR3存储器中。   这是真的吗?  [/报价]

    是的、在 RBL 中、DDR3配置受到限制。

    这就是为什么在 spiboot.c 中、我们要完成 DDR3的配置。 直接引导示例不是 RBL。

    RBL 将使用 DDR 配置调用直接引导 SPI 示例。 我们的方法是正确的。

    案例2:

    ===  

    NOR 编写器消息的控制台似乎被重新检查?  当我们将长度馈入0x4000时、它会显示3780?  

    它应该以某种方式显示 3780字节的数据(检查我的视频-案例2)  

    案例4:

    ====

    NOR 编写器消息的控制台似乎被重新检查?   当我们将长度馈入0x4000时、它会显示3780?  

    它应该以某种方式显示 3780字节的数据(检查我的视频-案例2)  

    --

    请告诉我、您观察到了哪些差异、

    ================================================================

    1.在 EVM 的 GEL 源代码与定制硬件中。 逐一列出;

    2. 在 EVM 的 GEL 输出中与定制硬件的关系。  逐一列出;

    3. EVM 的 DDR3寄存器值与定制硬件的比较。 逐一列出;

    让我们了解每种差异的重要性。

    此致

    Shankari G

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4369845 #4369845"]

    案例2:

    ===  

    NOR 编写器消息的控制台似乎被重新检查?  当我们将长度馈入0x4000时、它会显示3780?  

    它应该以某种方式显示 3780字节的数据(检查我的视频-案例2)  

    案例4:

    ====

    NOR 编写器消息的控制台似乎被重新检查?   当我们将长度馈入0x4000时、它会显示3780?  

    它应该以某种方式显示 3780字节的数据(检查我的视频-案例2)  

    [/报价]

    我使用 的是 C:\ti\pdk_c665x_2_0_16\packages/ti\boot\writer\nore\evmc6657l\bin 目录中的 NOR 编写器实用程序版本01.00.04、而您使用  的是 C:\ti\2781.C6657_directrom_Boot_example\SP6600.03目录中的 NOR 编写器实用程序版本01.00.00.03。   我已经尝试过两个版本的 NOR 编写器、它们都产生了完全相同的结果。

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4369845 #4369845]1. 与定制硬件相比、您的 EVM 的 GEL 源代码。 逐条列出;[/报价]

    我已经为 EVM 和自定义硬件使用了相同的 GEL 文件 Saratoga_1313.gel (文件包含在上面的聊天中)、以建立连接并正确配置 DDR3存储器。  因此、这两个硬件之间没有差异。

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4369845 #4369845"]2.  与定制硬件的比较。  逐条列出;[/报价]

    运行相同 GEL 文件时的唯一区别 是引导引脚。 定制硬件的 DEVSTAT = 0x00000401 且 EVM 的 DEVSTAT = 0x00000001。  由于我们使用上拉和下拉来配置引导引脚、并且 EVM 使用 FPGA 的可编程输出、因此存在这种差异。

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4369845 #4369845"]3. EVM 的 DDR3寄存器值与定制硬件的比较。 逐条列出;[/报价]

    使用 Saratoga_1313.gel 文件连接到定制硬件和 EVM 后。  我转储了 DDR3寄存器并进行了比较。  唯一的区别是  perf_cnt_Tim 与(定制板值 0xA08CEAC7和 EVM 的0x04E77E50)之间的区别。

    定制硬件 EVM
    DDR3 EMIF 存储器控制器配置(DDR3)
    EMIF_mod_id_rev 0x40466400 0x40466400 匹配
    状态 0x40000004 0x40000004 匹配
    SDRAM_CONFIG 0x63026AB2 0x63026AB2 匹配
    SDRAM_CONFIG_2 0x00000000 0x00000000 匹配
    SDRAM_ref_ctrl 0x00001458 0x00001458 匹配
    SDRAM_ref_Ctrl_Shdw 0x000061A8 0x000061A8 匹配
    SDRAM_TIM_1 0x1113783C 0x1113783C 匹配
    SDRAM_TIM_1_Shdw 0x1557B9AC 0x1557B9AC 匹配
    SDRAM_TIM_2 0x30B37FE3 0x30B37FE3 匹配
    SDRAM_TIM_2_Shdw 0x6E5F7FED 0x6E5F7FED 匹配
    SDRAM_TIM_3. 0x559F8ADF 0x559F8ADF 匹配
    SDRAM_TIM_3_Shdw 0x007FE57F 0x007FE57F 匹配
    LPDDR2_NVM_TIM 0x00000000 0x00000000 匹配
    LPDDR2_NVM_TIM_Shdw 0x00000000 0x00000000 匹配
    PWR_mgmt_ctrl 0x00000000 0x00000000 匹配
    PWR_mgmt_Ctrl_Shdw 0x00000000 0x00000000 匹配
    LPDDR2_MODE_REG_DATA 0x00000000 0x00000000 匹配
    LPDDR2_MODE_REG_cfg 0x00000000 0x00000000 匹配
    vbusm_config 0x00FFFFFF 0x00FFFFFF 匹配
    vbusm_cfg_val_1 0xC0071410 0xC0071410 匹配
    vbusm_cfg_val_2 0x00021616 0x00021616 匹配
    周期 ft_tlgc 0x00002011 0x00002011 匹配
    iodft_ctrl_misr_rslt 0x00000000 0x00000000 匹配
    碘 Ft_addr_Misr_rslt 0x00000000 0x00000000 匹配
    iodft_data_Misr_rslt_1 0x00000000 0x00000000 匹配
    iodft_data_Misr_rslt_2 0x00000000 0x00000000 匹配
    iodft_data_Misr_rslt_3 0x00000000 0x00000000 匹配
    iodft_data_Misr_rslt_4 0x00000000 0x00000000 匹配
    iodft_data_Misr_rslt_5 0x00000000 0x00000000 匹配
    perf_cnt_1 0x00000000 0x00000000 匹配
    perf_cnt_2 0x00000000 0x00000000 匹配
    perf_cnt_cfg 0x00010000 0x00010000 匹配
    perf_cnt_sel 0x00000000 0x00000000 匹配
    PERF_CNT_TIM 0xA08CEAC7 0x04E77E50 差动
    READ_IDLE_Ctrl 0x00050000 0x00050000 匹配
    READ_IDLE_CTRL_Shdw 0x00050000 0x00050000 匹配
    irqstatus_raW_sys 0x00000000 0x00000000 匹配
    irqstatus_sys 0x00000000 0x00000000 匹配
    irqenable_set_sys 0x00000000 0x00000000 匹配
    irqenable_clr_sys 0x00000000 0x00000000 匹配
    zq_config 0x70073214 0x70073214 匹配
    temp_alert_config 0x00000000 0x00000000 匹配
    vbusm_err_log 0x00000000 0x00000000 匹配
    rdwr_lvl_rmp_win 0x00000000 0x00000000 匹配
    rdwr_lvl_rmp_ctrl 0x80000000 0x80000000 匹配
    rdwr_lvl_ctrl 0x00000000 0x00000000 匹配
    DDR_phy_Ctrl_1 0x0010010F 0x0010010F 匹配
    DDR_phy_CTRL_1_Shdw 0x0010010A 0x0010010A 匹配
    DDR_phy_Ctrl_2 0x00000000 0x00000000 匹配
    PRI_COS_MAP 0x00000000 0x00000000 匹配
    mstitd_cos_1_map 0x00000000 0x00000000 匹配
    mstitd_cos_2_map 0x00000000 0x00000000 匹配
    ECC_Ctrl 0x00000000 0x00000000 匹配
    ecc_addr_rng_1 0x00000000 0x00000000 匹配
    ecc_addr_rng_2 0x00000000 0x00000000 匹配
    RD_wr_exec_thrsh 0x00000305 0x00000305 匹配

     根据 SPRUGV8E、这只是一个计数器、用于报告复位后的 DDR/2时钟周期数。

    所以... 重要说明自定义硬件和 EVM 之间没有区别。

    您是否有任何其他建议可用于收集有关此问题的其他信息?

    让我们回到这里、分析我们执行的所有测试...

    在后面的对话中、我将通过一组测试1)创建一个应用、该应用将从 EVM 上的 DDR3存储器加载并运行。  2) 2)修改了此应用 、仅使用内部存储器(从而消除了 DDR3配置问题)。  此应用在 EVM 上工作、但在定制硬件上不工作。  因此、在我看来、当前的问题是 SPI 引导通信、  而不是 DDR3存储器。  你同意吗?  我的问题是 :当处理器从 SPI 引导时、SPI 时钟速率是多少?  

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

    Brad、

    请在进入 SPI 时钟之前稍等。 (这实际上也是一个重要的因素,我们会在一段时间内看一下……)

    --

    首先、

    DEVSTAT 寄存器的 DIFF 值很重要。

    在非引导模式下 、自定义硬件的 DEVSTAT 值为0x00000401;而在 EVM 中为 0x00000001。

    使用  Devstat[13-1]=bootmode[12:0]-页码:205 https://www.ti.com/lit/ds/symlink/tms320c6657.pdf 对该值进行解码。

    如果引导模式的第9位为1、则表示 SPI 引导模式的"Addr Width..."

      --> SPI 地址宽度配置

         •0 =使用16位地址值

         •1 =使用24位地址值

    分析一下、由于这是自定义硬件、为什么在 使用 GEL 文件+ CCS 时 DEVSTAT 不提供0x00000001?????  

    由于处于非引导模式、第9位值是保留的... 但是、闪存后、重要的是、何时针对 SPI 引导模式更改引导引脚、对吧?

    在第4种情况下,DEVSTAT 的值是多少? --重新检查--在内存浏览器中,地址为“0x02620020”

    我的 DEVSTAT 值为 - 0000040D

    ----

    其次、

    在您的案例(4)测试中,检查程序计数器值并将其与 spidboot.map 映射

    按照以下视频操作。

    1.布置 PC 计数器值  

    2.发布 spidboot.map。

    3.请在您的案例4上发布视频-程序计数器值和内存浏览器中的 GPIO 地址访问....

    如果我们可以在该映射中找到 PC 地址、那么 SPI_Boot-Direct 示例很可能会由 RBL 运行和执行。

    ----

    在 CAe4的快照中、  

    第三、将 EVM 中使用的 SPI-NOR 闪存器件与定制硬件进行比较。

    最重要的是、检查可用模式的数量。

    例如、在 EVM 中 使用了 N25Q032A、支持的模式有两种。

    https://media-www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_32mb_3v_65nm.pdf

    表7:SPI 模式注1适用于整个表

    SPI 模式              时钟极性   

    CPOL = 0、CPHA = 0  C 保持为0 (CPOL = 0、CPHA = 0)

    CPOL = 1、CPHA = 1  C 保持为1表示(CPOL = 1、CPHA = 1)

    ----

    此致

    Shankari G

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

    Brad、

    请在进入 SPI 时钟之前稍等。 (这实际上也是一个重要的因素,我们会在一段时间内看一下……)

    --

    首先、

    DEVSTAT 寄存器的 DIFF 值很重要。

    在非引导模式下 、自定义硬件的 DEVSTAT 值为0x00000401;而在 EVM 中为 0x00000001。

    使用  Devstat[13-1]=bootmode[12:0]-页码:205 https://www.ti.com/lit/ds/symlink/tms320c6657.pdf 对该值进行解码。

    如果引导模式的第9位为1、则表示 SPI 引导模式的"Addr Width..."

      --> SPI 地址宽度配置

         •0 =使用16位地址值

         •1 =使用24位地址值

    分析一下、由于这是自定义硬件、为什么在 使用 GEL 文件+ CCS 时 DEVSTAT 不提供0x00000001?????  

    由于处于非引导模式、第9位值是保留的... 但是、闪存后、重要的是、何时针对 SPI 引导模式更改引导引脚、对吧?

    在第4种情况下,DEVSTAT 的值是多少? --重新检查--在内存浏览器中,地址为“0x02620020”

    我的 DEVSTAT 值为 - 0000040D

    ----

    其次、

    下载 spidboot.c -下面给定的并重复情况(4),以确认 RBL 是否调用直接 SPI 引导示例。

    在您的案例(4)测试中,检查程序计数器值并将其与 spidboot.map 映射

    my spidboot.c - e2e.ti.com/.../spiboot.c

    按照以下视频操作。

    1.布置 PC 计数器值  

    2.发布 spidboot.map。

    3.请在您的案例4上发布视频-程序计数器值和内存浏览器中的 GPIO 地址访问....

    如果我们可以在该映射中找到 PC 地址、那么 SPI_Boot-Direct 示例很可能 会由 RBL 运行和执行。

    e2e.ti.com/.../case4_5F00_output.mp4

    ----

    在案例4的快照中、  

    第三、将 EVM 中使用的 SPI-NOR 闪存器件与定制硬件进行比较。

    最重要的是、检查可用模式的数量。

    例如、在 EVM 中 使用了 N25Q032A、支持的模式有两种。

    https://media-www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_32mb_3v_65nm.pdf

    表7:SPI 模式注1适用于整个表

    SPI 模式              时钟极性   

    CPOL = 0、CPHA = 0     C 保持为0 (CPOL = 0、CPHA = 0)

    CPOL = 1、CPHA = 1   C 保持为1表示(CPOL = 1、CPHA = 1)

    ----

    此致

    Shankari G

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

    Brad、

    请在进入 SPI 时钟之前稍等。 (这实际上也是一个重要的因素,我们会在一段时间内看一下……)

    --

    首先、

    DEVSTAT 寄存器的 DIFF 值很重要。

    在非引导模式下 、自定义硬件的 DEVSTAT 值为0x00000401;而在 EVM 中为 0x00000001。

    使用  Devstat[13-1]=bootmode[12:0]-页码:205 https://www.ti.com/lit/ds/symlink/tms320c6657.pdf 对该值进行解码。

    如果引导模式的第9位为1、则表示 SPI 引导模式的"Addr Width..."

      --> SPI 地址宽度配置

         •0 =使用16位地址值

         •1 =使用24位地址值

    分析一下、由于这是自定义硬件、为什么在 使用 GEL 文件+ CCS 时 DEVSTAT 不提供0x00000001?????  

    由于处于非引导模式、第9位值是保留的... 但是、闪存后、重要的是、何时针对 SPI 引导模式更改引导引脚、对吧?

    在第4种情况下,DEVSTAT 的值是多少? --重新检查--在内存浏览器中,地址为“0x02620020”

    我的 DEVSTAT 值为 - 0000040D

    ----

    其次、

    下载 spidboot.c -下面给定的并重复情况(4),以确认 RBL 是否调用直接 SPI 引导示例。

    在您的案例(4)测试中,检查程序计数器值并将其与 spidboot.map 映射

    my spidboot.c - e2e.ti.com/.../spiboot.c

    按照以下视频操作。

    1.布置 PC 计数器值  

    2.发布 spidboot.map。

    3.请在您的案例4上发布视频-程序计数器值和内存浏览器中的 GPIO 地址访问....

    如果我们可以在该映射中找到 PC 地址、那么 SPI_Boot-Direct 示例很可能 会由 RBL 运行和执行。

    e2e.ti.com/.../case4_5F00_output.mp4

    ----

    在案例4的快照中、  

    第三、将 EVM 中使用的 SPI-NOR 闪存器件与定制硬件进行比较。

    最重要的是、检查可用模式的数量。

    例如、在 EVM 中 使用了 N25Q032A、支持的模式有两种。

    https://media-www.micron.com/-/media/client/global/documents/products/data-sheet/nor-flash/serial-nor/n25q/n25q_32mb_3v_65nm.pdf

    表7:SPI 模式注1适用于整个表

    SPI 模式              时钟极性   

    CPOL = 0、CPHA = 0     C 保持为0 (CPOL = 0、CPHA = 0)

    CPOL = 1、CPHA = 1   C 保持为1表示(CPOL = 1、CPHA = 1)

    ----

    此致

    Shankari G

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4372259 #4372259"]

    由于处于非引导模式、第9位值是保留的... 但是、闪存后、重要的是、何时针对 SPI 引导模式更改引导引脚、对吧?

    在第4种情况下,DEVSTAT 的值是多少? --重新检查--在内存浏览器中,地址为“0x02620020”

    我的 DEVSTAT 值为 - 0000040D

    [/报价]

    如对话前面所示、当引导配置设置为 SPI 引导时、EVM 和定制硬件的 DEVSTAT 寄存器的值是相同的。  在您提出请求后、我们修改了所有行、以匹配 EVM 的 SPI 引导配置。

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4366540 #4366540"] 我尝试从 SPI 引导处理器,但仍然没有成功。  然后、我连接了调试器并验证了 DEVSTAT 寄存器(DEVSTAT = 0x0000040D 引导模式= 0x00000006)。[/引用]

    如前所述、我们的定制硬件使用上拉和下拉电阻器来配置大多数引导配置线路。   我们确定、在开发期间、我们需要配置硬件以实现无引导、我们包括了用于 BOOTMODE[2:0]的开关。  让我完全清楚地说明这一点。 BOOTMODE[2:0]可 从高电平轻松更改为低电平、但 BOOTMODE[12:3]需要修改电路板(例如 添加/移除电阻器)以从高电平更改为低电平。

     

    使用修订版 spidboot.c...进行测试

    由于我们使用 ITAR 相关材料、我正在与我们的出口管制部门合作、以获得批准和限制、允许从我们的工作站发布屏幕截图视频。  到目前为止,我没有这种批准。  如果允许、我将开始添加这种类型的信息。

    • 已编译新的 spidboot.c 使用 NORNOR 写入器实用程序的 v1.0.0.3加载到定制硬件上。
    • 将引导模式行更改为 SPI 引导并重新启动了该单元。  然后、将调试器连接到该单元并获得以下结果
        (在某些随机地址停止。)
    • 使用了相同的技术加载 EVM、并得到了以下结果
       (即预期结果)

    问题:

    在所有这些测试中、我开始相信 NOR SPI-writer 程序不会将正确的数据写入我的定制硬件上的闪存中。  写入器是否有配置选项可将要从 SPI 存储器中写入和读取的数据从 UART 端口传输出去?  这样我就可以验证预期的数据是否已正确写入 SPI 存储器并进行验证/读取?

     我们定制硬件的 SPI 接口说明。

    我们使用 N25Q064A11ESEA0F SPI 存储器(应该是 EVM 上存储器的较大版本)。  在 SPI 存储器之间、连接到 SN74AVC4T774缓冲器以缓冲信号(6nS 的延迟)、然后在每个信号连接到 C6657之前内联一个10欧姆电阻器。  因此、EVM 上的任何工作都应在定制硬件上工作。  我已利用范围来利用这些行、并验证它们在某种预期的庄园中正在改变状态。 (基本上我不认为 SPI 硬件存在问题、但谁知道。) 这两个板之间唯一的另一个区别是、我们将 W#/Vpp/DQ2连接到高电平、在 EVM 上、该线路由 FPGA 驱动到高电平。

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

    Brad、

    正如我已经请求的、在我之前的帖子中、  

    对于定制板上的情况(4)、   

    1.发布您的 PC 计数器值-(如果没有视频,请将其设为快照...)  

    2.发布 spidboot.map。 -(以文本格式加载)

    --

    1.您的第二个快照是否在您的定制硬件上?  使用随机 PC 地址(不是 spidboot.map 的应用程序),请发布 spidboot.map,否则,我无法验证.....

    2.您的第三个快照是否在 C6657 EVM 上、而不是在您的定制硬件上、对吧? 该 PC 地址正按预期指向 spidboot.map 中的 test func()!!

    --

    这是 什么是... 引导我思考…  

    由于 SPI-NOR 写入器工作正常、它甚至说"成功读取和欺骗"、这意味着它在 NOR 存储器上正确写入。

    它甚至读回并验证数据....

    -->重要的是, “定制硬件”中的 CCS GEL 文件+ NOR 编写程序知道与 SPI 正确通信....

    ---- >但 自定义硬件中的 RBL + Direct boot-SPI 程序中缺少相同的配置?? (我想,这不是问题,因为使用相同的 RBL +直接 SPI 在 EVM 中工作,对吧?)

    ---- >但 C6657EVM 中的 RBL +直接引导 SPI 程序中存在相同的配置!! ??  

    因此,您的自定义硬件上的引导模式引脚及其配置可能需要更多关注....

    最后、它可能是一个硬件问题、因为我们验证了软件中的所有可能。

    ----

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4373390 #4373390"]在所有这些测试中、我开始相信 NOR SPI 写入器程序不会将正确的数据写入我的定制硬件上的闪存中。  写入器是否有配置选项可将要从 SPI 存储器中写入和读取的数据从 UART 端口传输出去?  这样我就可以验证预期数据是否已从 SPI 存储器正确写入和验证/读取?

    不确定、值得花时间在编写器上、在"UART"上添加内存输出。 因为,我对作者没有任何怀疑。。 因为它会验证数据....  

     此致

    Shankari G

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

    Brad、

    在第二个快照中,值为20B11B52的 PC 计数器表示.... 保留在 RBL https://www.ti.com/lit/ds/symlink/tms320c6657.pdf 上

    第166页。

    因此、DDR3配置似乎未针对您的定制板正确完成。

    参考 定制硬件的 GEL 文件(Saratoga_1313.gel)、 const boot_EMIF4_TBL_T emif4Cfg 的值必须在 spidboot.c 中匹配和更新

    当我看到 C6657evm.gel 和您 的 Saratoga_133.gel 之间的差异时、 您的定制板有很多 DDR3时序参数和自动调平参数更改。

    --

    此外、  

    1.通过 在 spiboot.c 和 spiboot.cmd 中完全删除 DDR3、在内部 memory-L2_data 中刷写并运行相同的程序-请参阅以下内容

    2.检查程序计数器并张贴它--重要

    现在、您的定制板应该在没有 DDR3的情况下启动。

    =========== spiboot.c====

    删除整个结构。  

    #pragma DATA_SECTION (emif4Cfg、".emif4Cfg")
    const boot_EMIF4_TBL_T emif4Cfg  

    =================== Spiboot.cmd============
    spidboot.obj

    -c
    -A
    -stack 0x400

    存储器

    L2MAGIC:origin = 0x8ffc,length = 0x4
    L2_data:origin = 0x800000,length = 0x6000


    部分

    .stack > L2_data
    .mSMC > L2_data
    .data > L2_data
    .far > L2_data
    .text > L2_data
    .const > L2_data
    .cinit > L2_data
    .lmagic > L2MAGIC

    此致

    Shankari G

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

    从您的第一次答复开始:

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4373725 #43725"]

    1.您的第二个快照是否在您的定制硬件上?  使用随机 PC 地址(不是 spidboot.map 的应用程序),请发布 spidboot.map,否则,我无法验证.....

    2.您的第三个快照是否在 C6657 EVM 上、而不是在您的定制硬件上、对吧? 该 PC 地址正按预期指向 spidboot.map 中的 test func()!!

    [/报价]

    您的假设是正确的。  包括第一个屏幕截图、以显示 NOR 编写器程序在定制硬件上按预期完成。  包含第二个屏幕截图、以显示重新配置自定义硬件以进行 SPI 引导后的结果。  包含了第三个屏幕截图、以显示代码已正确创建并在 EVM 硬件上按预期运行。

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4373725 #43725"]

    这是 什么是... 引导我思考…  

    由于 SPI-NOR 写入器工作正常、它甚至说"成功读取和欺骗"、这意味着它在 NOR 存储器上正确写入。

    它甚至读回并验证数据....

    -->重要的是, “定制硬件”中的 CCS GEL 文件+ NOR 编写程序知道与 SPI 正确通信....

    ---- >但 自定义硬件中的 RBL + Direct boot-SPI 程序中缺少相同的配置?? (我想,这不是问题,因为使用相同的 RBL +直接 SPI 在 EVM 中工作,对吧?)

    ---- >但 C6657EVM 中的 RBL +直接引导 SPI 程序中存在相同的配置!! ??  

    因此,您的自定义硬件上的引导模式引脚及其配置可能需要更多关注....

    最后、它可能是一个硬件问题、因为我们验证了软件中的所有可能。

    [/报价]

    我同意这些发言。

    对于处理器仍在 RBL 中执行的信息、这必须意味着 RBL 没有获得正确的引导信息。  现在、我认为至少有三件事情会导致定制硬件出现此问题。
    a) NORwriter 工具未正确地将数据写入存储器、或
    b)引导后、SPI 存储器会出现某种问题、 或
    c) RBL 未正确配置、或
    d)存在其他类型的电路板问题。

    我对 NORwriter 工具提出质疑、因为在自定义硬件上运行应用程序时、NORwriter 完成写入和验证所需的时间要长得多。 (即 EVM 在5秒内快速完成、定制硬件在20-30秒内完成)

    我想有条不紊地完成这些选项、以确认或消除这些选项、将其作为我的问题的根源。  我想验证闪存存储器是否可以读取。   我想验证 EVM 和定制硬件之间存储器中的信息是否相同。

    第二次答复...

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4374115 #4374115"]

    参考 定制硬件的 GEL 文件(Saratoga_1313.gel)、 const boot_EMIF4_TBL_T emif4Cfg 的值必须在 spidboot.c 中匹配和更新

    当我看到 C6657evm.gel 和您 的 Saratoga_133.gel 之间的差异时、 您的定制板有很多 DDR3时序参数和自动调平参数更改。

    [/报价]

    我同意、这些值需要更改、定制硬件才能正确访问 DDR 存储器。 (这就是我尝试引导至内部存储器的原因、因为似乎问题在于将正确的信息放入要引导的器件中。)

    1. 在没有 DDR3配置的情况下进行测试。
      该测试本质上是我12天前记录的测试、我在其中删除了 DDR 配置、编译并加载了代码、但它不起作用。  在我的测试代码中、代码的第一行会导致 BOOTCOMPLETE 行驱动为高电平(它没有)。
      1. 删除了对 emif4Cfg 的引用、并重新编译了代码。  NOR 刻录机1.00.03加载到两个平台上。  两个平台都报告负载成功(但是自定义硬件负载需要更长时间才能完成)。  已在 SPI 引导模式下重新引导两个平台。  重新连接调试器后、EVM 在预期的存储器位置停止。  自定义硬件在 RBL 内的某个位置停止。
        Fullscreen
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        ******************************************************************************
        TMS320C6x Linker PC v7.4.24
        ******************************************************************************
        >> Linked Wed Oct 19 08:17:55 2022
        OUTPUT FILE NAME: <spiboot.out>
        ENTRY POINT SYMBOL: "_c_int00" address: 00000000
        MEMORY CONFIGURATION
        name origin length used unused attr fill
        ---------------------- -------- --------- -------- -------- ---- --------
        L2MAGIC 008ffffc 00000004 00000000 00000004 RWIX
        DDR 80000000 00002000 00000000 00002000 RWIX
        SEGMENT ALLOCATION MAP
        run origin load origin length init length attrs members
        ---------- ----------- ---------- ----------- ----- -------
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      2. EVM 上的 SPI 引导运行时

      3. 从定制硬件上的 SPI 引导运行时:
         PC 似乎卡在 RBL 中。
      4. 对我来说、这基本上证明了自定义硬件没有获得正确的引导信息。

    我剩下的唯一问题是闪存未正确写入或未正确读取。  

    1. 这可能与创建正确配置的映像以加载到硬件的多个步骤(工具)有关。  我只是盲目地关注 EVM 的示例以获取编程映像。  我不知道这些工具中是否有特定于硬件的配置。
    2. NORwriter 工具加载内存时出现问题。
    3. RBL 未正确读取存储器中的数据。

    感谢您的任何帮助。

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

    我一直在尝试重建 PDK 中包含的 NOR 闪存写入器、但无法使 makefile 正常运行。  我不太熟悉用于配置/运行编译器/链接器的命令行环境。  您是否有关于如何重建 NOR 闪存写入器的说明?  

    • NOR 编写器 make 文件 默认位于 C:\ti\pdk_c665x_2_0_16\packages/ti\boot\writer\nor\evmc6657l\build 中
    • 我已尝试在 MinGW 下运行 makefile 文件、但未正确设置任何内容。
      Fullscreen
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      sut@KCK /c/ti/pdk_c665x_2_0_16/packages
      $ source pdksetupenv.sh
      /c/ti/pdk_c665x_2_0_16/packages
      /c/ti/pdk_c665x_2_0_16/packages
      **************************************************************************
      Environment Configuration:
      **************************************************************************
      SDK_INSTALL_PATH : /c/ti
      PDK_INSTALL_PATH : /c/ti/pdk_c665x_2_0_16/packages
      PDK_SOC : c665x
      PDK_VERSION : 2_0_16
      RULES_MAKE : /c/ti/pdk_c665x_2_0_16/packages/ti/build/Rules.make
      **************************************************************************
      sut@KCK /c/ti/pdk_c665x_2_0_16/packages
      $ cd C:/ti/pdk_c665x_2_0_16/packages/ti/boot/writer/nor/evmc6657l/build
      sut8@KCK /c/ti/pdk_c665x_2_0_16/packages/ti/boot/writer/nor/evmc6657l/build
      $ gmake
      gmake: *** No rule to make target '/oe/bld/build-CORTEX_1/arago-tmp-external-arm-toolchain/work/c665x_evm-linux-gnueabi/flashwriters-rtos/git-r11/recipe-sysroot-native/usr/share/ti/cgt-c6x/include/stdlib.h', needed by 'src/norwriter.obj'. Stop.
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢、

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

    Brad、

    第1点:1

    在 spidboot.map 中,它仍然显示了 DDR.... 这意味着、在 spiboot.cmd 中、DDR 未被完全移除...

     DDR           80000000  00002000 00000000 00002000 RWIX

    --

    第2点

    L2_data:origin = 0x800000,length = 0xx6000 --.cmd 中也缺少此内存段

    ----

    第3点

    入口点符号:"_c_int00" 地址:00000000  -入口地址不能为零... 它应该指向 L2存储器...

    --

     第4点

    在 spidboot.map 中,它未能将段分配到–???... 它应该在 L2_data 存储器中分配.text、.stack、.fardata 等段、对吧?

    部分分配映射

    输出属性/
    段页原点长度输入段
    ---- -------- ------ --------
    .fardata 0 00000000 0000000c 分配失败
    .cinit 0 00000000 0000001d 无法分配
    .stack 0 00000000 00000400无法分配
    .text 0 00000000 00000920分配失败

    ----------------------------------------------------

    在内部存储器中运行时、请发布 SPIboot.cmd。

    2.请发布 spidboot.map  

    2.请为您的案例发布 spidboot.c 4.

    --

    使用 定制板上的 spidboot.cmd (下面给出)和 spidboot.c (下面给出)重新执行测试。

    这次、您的自定义硬件应使用 L2内部存储器成功引导。

    e2e.ti.com/.../6471.spiboot.c 

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    spiboot.obj
    -c
    -a
    -stack 0x400
    MEMORY
    {
    L2MAGIC : origin = 0x8ffffc, length = 0x4
    L2_DATA : origin = 0x800000, length = 0xff000
    }
    SECTIONS
    {
    .stack > L2_DATA
    .msmc > L2_DATA
    .data > L2_DATA
    .far > L2_DATA
    .text > L2_DATA
    .const > L2_DATA
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致

    Shankari G

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

    很抱歉、由于我重新创建测试以记录结果、我错过了编译中的错误。 (从命令行工作不再是我的首选、我更喜欢在 开发环境中工作(例如、问题部分中的红色标记引起了我的注意)

    请尝试两次以演示您请求的数据。

    • 当前 spiboot.cmd
      Fullscreen
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      spiboot.obj
      -c
      -a
      -stack 0x400
      MEMORY
      {
      L2MAGIC : origin = 0x8ffffc, length = 0x4
      L2_DATA : origin = 0x800000, length = 0xff000
      }
      SECTIONS
      {
      // .emif4Cfg > DDR_CFG
      .stack > L2_DATA
      .msmc > L2_DATA
      .data > L2_DATA
      .far > L2_DATA
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    • 当前 spiboot.c
      Fullscreen
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      /* Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
      *
      *
      * Redistribution and use in source and binary forms, with or without
      * modification, are permitted provided that the following conditions
      * are met:
      *
      * Redistributions of source code must retain the above copyright
      * notice, this list of conditions and the following disclaimer.
      *
      * Redistributions in binary form must reproduce the above copyright
      * notice, this list of conditions and the following disclaimer in the
      * documentation and/or other materials provided with the
      * distribution.
      *
      * Neither the name of Texas Instruments Incorporated nor the names of
      * its contributors may be used to endorse or promote products derived
      * from this software without specific prior written permission.
      *
      * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    • 当前 spiboot.map
      Fullscreen
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      ******************************************************************************
      TMS320C6x Linker PC v7.4.24
      ******************************************************************************
      >> Linked Thu Oct 20 01:59:07 2022
      OUTPUT FILE NAME: <spiboot.out>
      ENTRY POINT SYMBOL: "_c_int00" address: 00800680
      MEMORY CONFIGURATION
      name origin length used unused attr fill
      ---------------------- -------- --------- -------- -------- ---- --------
      L2_DATA 00800000 000ff000 00000d4c 000fe2b4 RWIX
      L2MAGIC 008ffffc 00000004 00000000 00000004 RWIX
      SEGMENT ALLOCATION MAP
      run origin load origin length init length attrs members
      ---------- ----------- ---------- ----------- ----- -------
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    • 加载结果
    • 使用 SPI 引导配置引导自定义硬件、并在引导完成后连接调试器

      没有成功。  您可以看到、PC 仍在 RBL 代码区域内!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否有关于如何重建 NOR 闪存写入器的说明?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4374717 #4374717")我对 NORwriter 工具提出疑问,因为在自定义硬件上运行应用程序时,NORwriter 完成写入和验证所需的时间要长得多。 (即 EVM 在5秒内快速完成、自定义硬件在20-30秒内完成)

    Brad、

    使用 CCS、当 EVM 使用 NOR_writer 刷写 NOR 存储器时执行寄存器转储-< 5秒

    2. 使用 CCS、当定制硬件使用 NOR 写入器刷写 NOR 存储器时执行寄存器转储- 20 - 30秒

    3.比较1和2并确定寄存器组值的差异,这些值特别适用于 SPI 相关、PLL 等

    尝试修改   Saratoga_1313.gel 中的特定寄存器值(根据自定义硬件中使用的 SPI 部件),并检查时间是否从20秒缩短到30秒。

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4375684 #4375684)]您是否有关于如何重建 NOR 闪存写入器的说明?  [/报价]

    我必须检查。  

    我从未重建过 NOR 编写器、因为在 EVM 上正常工作时、这种必要性永远也不会出现。

    此致

    Shankari G

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

    Brad、

    以下是重新构建 NOR 编写器的步骤

    此致

    Shankari G

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

    Brad、

    我能够构建 NOR 编写器。 这些步骤将被捕获并发布在我的上一篇文章中、在上面...

    您是否能够成功重建 NOR 编写器?

    --

    如果是,下一步 就是:-->修改定制硬件的 NOR_writer 代码

    在 NOR 编写器源代码中、使用的 SPI-NOR 部件为"platform_DevID_NORN25Q128"。 检查并更改您的定制硬件中使用的相应 SPI_NOR 部件。

    2.在 NOR-Writer-Source 代码中--> NOR-init ()--> evmc665x_NOR.c 在 platform_lib_evmc6657l/src 中---根据您的定制硬件修改 SPI 接口部分和 NOR 存储器部分

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    NOR_STATUS
    nor_init
    (
    void
    )
    {
    NOR_STATUS ret;
    uint8_t idcode[3]; /* Initialize the SPI interface */
    /* Claim the SPI controller */
    spi_claim(SPI_NOR_CS, SPI_MAX_FREQ);
    /* Read the ID codes */
    ret = spi_cmd(SPI_NOR_CMD_RDID, idcode, sizeof(idcode));
    if (ret)
    {
    IFPRINT (platform_write( "nor_init: Error in reading the idcode\n"));
    spi_release();
    platform_errno = PLATFORM_ERRNO_NOR;
    return NOR_EFAIL;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    3. evmc665x_spi.c --> platform_lib_evmc6657l/src 中的 spi_claim ()  

    3.  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    spi_claim
    (
    uint32_t cs,
    uint32_t freq
    )
    {
    uint32_t scalar;
    PLIBSPILOCK()
    /* Enable the SPI hardware */
    SPI_SPIGCR0 = CSL_SPI_SPIGCR0_RESET_IN_RESET;
    spi_delay (2000);
    SPI_SPIGCR0 = CSL_SPI_SPIGCR0_RESET_OUT_OF_RESET;
    /* Set master mode, powered up and not activated */
    SPI_SPIGCR1 = (CSL_SPI_SPIGCR1_MASTER_MASTER << CSL_SPI_SPIGCR1_MASTER_SHIFT) |
    (CSL_SPI_SPIGCR1_CLKMOD_INTERNAL << CSL_SPI_SPIGCR1_CLKMOD_SHIFT);
    /* CS0, CS1, CLK, Slave in and Slave out are functional pins */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致

    Shankari G

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

    是的、我已经能够构建 NOR 编写器代码。  我已经对其进行了修改、以报告单元从存储器发送和接收的内容。  

    我检测了 SPI 线路、以验证 C6657和自定义硬件上的 SPI 存储器之间的通信、使其尽可能靠近 C6657 (例如、内联终端电阻器)。  在查看这些数据时、我可以看到读取和写入事务。 (即 CS0变为低电平、CLK 切换、MOSI 和 MISO 发生相应变化、CS0返回高电平)。  通过链路传输的数据在传输到存储器和从存储器的数据中看起来都是正确的。

    现在知道探针已正确连接并正常工作、我将定制硬件的引导模式引脚更改为 SPI 引导并重新为电路板供电。  C6657从复位状态中释放后、我可以看到 SPI 时钟线正在生成8个时钟脉冲的重复组。  然而、芯片选择线路一直为高电平(即未激活)!!!!  这就排除了 SPI 存储器返回适当数据以引导处理器的能力。

    现在、我已经仔细检查重置行、以确保设备正常退出重置。  复位 按以下顺序停用。 LReset*(始终为高电平)、Reset*、100mS 延迟、POR*、100mS 延迟、 然后是 ResetFull *。  ResetStatus*在 ResetFull*变为活动状态5ms 后变为高电平。  我还验证了在 ResetFull 变为无效之前 CoreClk 存在很长时间。

    (即、似乎处理器已正确退出复位)

    问题:

    1. 有什么原因的想法吗?

    我希望在周末使用 EVM 重新进行这些测试 、以比较两块板之间的运行情况。

    其他研究问题:

    重新阅读 了数据表中有关引导模式配置的部分、 SPRS814D 部分 6.28.2.7 SPI 引导器件配置、对此进行了几 次说明。

    •  位10 4、5 引脚模式配置。 我没有找到有关这方面的任何其他文档、但我认为这是两种模式的含义。   以下两项陈述是否正确?
      • 在4引脚模式下:在 SPI 引导期间、C6657仅控制和驱动 SPI CLK、MOSI、MISO 和 CS0。
      • 在5引脚模式下:在 SPI 引导期间、C6657仅控制和驱动 SPI CLK、MOSI、MISO、CS0和 CS1。
    • 位7:8
      • EVM 将其用作00b、但表6-76中的数据表显示"未使用"
        • 这是否意味着两个片选应该在引导期间被激活、或者对于引导加载程序、这不是一个建议的配置?
      • 将这些引脚切换到01b CS0不会改变定制硬件的引导操作。

    这让人非常沮丧...

    也许是时候"扔掉"尝试让 SPI 直接启动运行、然后继续尝试为 I2C EEPROM 创建最小启动应用了???

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

    考虑这个问题(即、RBL 似乎没有正确地直接从 SPI 端口加载代码)... 在前面的讨论中、我发现在尝试从 SPI 引导自定义硬件并连接调试器后、处理器正在从 RBL 内执行代码。  也许、代码停留在的位置可以为我提供有关直接从 SPI 引导问题的线索。  (即 PC 位于0x20B11B52:RBL 尝试在该位置执行什么操作?)   

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

    Brad、

    这对您测试内存很好-读取和写入。

    周末我做了一些有用的实验,可以帮助你

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4378495 #4378495"]

    问题:

    1. 有什么原因的想法吗?

    我希望在周末使用 EVM 重新进行这些测试 、以比较两块板之间的运行情况。

    [/报价]

    我想最有可能找到原因。

    但是、您可能必须通过以较低频率在定制硬件中运行您的 SPI-NOR 来确认我。 (将很快向您发布实验步骤。 让我发布 EOD - 7 pm IST 的步骤)

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4378725 #4378725")在考虑此问题时(即 RBL 似乎无法直接从 SPI 端口正确加载代码)... 在前面的讨论中、我发现在尝试从 SPI 引导自定义硬件并连接调试器后、处理器正在从 RBL 内执行代码。  也许、代码停留在的位置可以为我提供有关直接从 SPI 引导问题的线索。  (即 PC 位于0x20B11B52:RBL 尝试在该位置执行什么操作?)   [/报价]

    导致问题的不是 RBL。 主要原因是这… 请给予更多关注...

    我做了一个重要实验、EVM 中的 SPI 在 C6657-GEL (-high frequency)和 RBL (-low frequency)设置的频率上工作。

      -->(RBL 的 PLLM 值为"PLL_PLlm - 0x0000001F"、GEL 的 PLLM 值为"PLL_PLlm - 0x00000013")

    但是、定制硬件中的 SPI 在  Saratoga_1313.gel 设置的频率上工作、但在最小配置期间不能与 RBL 设置的低频率一起工作。

    ===========

    C6657-EVM

    测试 C6657-EVM.gel   RBL
    C6657-EVM

    具有所有寄存器配置的 C6657 GEL  

    PLLM -值-  0x00000013  

     且配置最小

    PLLM -值-  0x0000001F  

    引导结果   工作正常并引导应用程序  工作正常、从 NOR 引导应用程序
    结论 SPI 在 PLLM 值为 0x00000013时工作   SPI 在 PLLM 值为0x0000001F 时工作  

    ===========

    定制硬件

    ===========

    测试 Saratoga_1313.gel RBL
    定制硬件

    具有所有寄存器配置的 C6657 GEL  

    PLLM -值-  

     且配置最小

    PLLM - Value - (Brad 必须确认值为0x0000001F )*

    引导结果   工作正常并引导应用程序  不奏效
    结论   SPI 在 PLLM 值为 0x00000013时工作 在   Saratoga_1313.gel 中输入 PLLM 值- 0x0000001F、并检查 SPI 是否在低频下工作。

    (Brad,查找此值)*-在 GEL 文件上输入相同的 PLLM 值,并检查 SPI 是否正常工作。 如果不起作用、这意味着 SPI 在 RBL 设置的频率下不起作用。 这必须由您的硬件团队在您的定制板上进行调试。。

    通常、如果定制硬件中的 SPI 在低频时不起作用、无论您选择何种引导、都将是一个问题。 (请考虑,因为它可能会影响您的后续开发点)   

    --

    [引用 userid="476937" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4378495 #4378495"]也许是时候"扔进毛巾"尝试让 SPI 直接引导运行、然后继续尝试为 I2C EEPROM 创建最小引导应用程序了吗????

    确认 SPI 在 PLLM 值 0x0000001F 下工作后、让我们继续使用 IBL +应用程序。

    此致

    Shankari G

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

    我不是说限制性商业惯例是问题。  我正在尝试了解 RBL 的操作以诊断问题。  如果您确切知道 RBL 的工作情况、那么 PC 在 PC=0x20B11B52周围执行代码这一事实将使您了解 RBL 尝试执行的操作和/或 RBL 未正确执行的原因(即缺少配置)。

    [引用 userid="489828" URL"~/support/processors-group/processors/f/processors-forum/1134430/tms320c6657-ddr3-configuration-of-the-rbl-or-ibl-for-booting-custom-hardware/4380512 #4380512"]

    定制硬件

    ===========

    测试 Saratoga_1313.gel RBL
    定制硬件

    具有所有寄存器配置的 C6657 GEL  

    PLLM -值-  

     且配置最小

    PLLM - Value - (Brad 必须确认值为0x0000001F )*

    引导结果   工作正常并引导应用程序  不奏效
    结论   SPI 在 PLLM 值为 0x00000013时工作 在   Saratoga_1313.gel 中输入 PLLM 值- 0x0000001F、并检查 SPI 是否在低频下工作。

    (Brad,查找此值)*-在 GEL 文件上输入相同的 PLLM 值,并检查 SPI 是否正常工作。 如果不起作用、这意味着 SPI 在 RBL 设置的频率下不起作用。 这必须由您的硬件团队在您的定制板上进行调试。。

    [/报价]
    1. 如果您要求我执行两部分测试。
      1. 将 GEL 文件中 PLLM 寄存器的值更改为0x1F、并尝试与 SPI NOR 存储器进行通信。 (即加载 NORwriter 程序并将内容加载到 SPI NOR 闪存中。
      2. 配置 PLLM 寄存器后执行 RBL。
        1. 这是如何实现的?

    谢谢、

    Brad

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

    Brad、

    让我们立即设置一个呼叫。

    在 IST 的下午4点接听电话是否正常?  

    此致

    Shankari G

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

    Brad、

    如果是短时间通知、我们将在 IST - 27-10-2022的下午2点拨打电话。

    此致

    Shankari G

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

    我计划在明天早些时候(10月27日凌晨3点前到达 CDT、时间是 IST 10月27日凌晨1:30)。  请重新安排 10月27日下午2点的电话。

    谢谢、

    Brad

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

    好的、Brad。

    将于10月27日下午2点安排并发送邀请。

    --

    同时、让我们来做...

    以上是上述实验的步骤。

    ================================================================

    1.下载此 GEL 文件(我已修改)-(如下所示)

    2.在您的定制硬件中运行。

    3.以 txt 格式共享 GEL 控制台输出(请不要作为快照)

    4.生成寄存器转储--选项-->视图-->注册-->右键单击-->导出-->选择扩展名为.txt 的名称和路径-->选择全部-->单击确定

    5.以 txt 格式发送该寄存器转储。

    6.加载 NOR 写入器.out。

    闪存 app.dat (如下所示)

    8.共享控制台消息“已成功刷新”。(如果收到错误,请也共享)

    9.将引导设置更改为 SPI-NOR。

    10.共享 PC 计数器值。

    11.祝你度过美好的一天! 再见、Brad。

    --

    e2e.ti.com/.../saratoga_5F00_1333_5F00_26oct.gel

    e2e.ti.com/.../2671.app.dat

    此致

    Shankari G

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

    GEL 文件输出

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    C66xx_0: GEL Output: *** Connecting Target...
    C66xx_0: GEL Output: DSP core #0
    C66xx_0: GEL Output: DEVSTAT 0x00000501
    C66xx_0: GEL Output: Bootmode = 0x00000000
    C66xx_0: GEL Output: File: Saratoga_1333.gel
    C66xx_0: GEL Output: File Ver is 1.0
    C66xx_0: GEL Output: Global Default Setup...
    C66xx_0: GEL Output: Setup Cache...
    C66xx_0: GEL Output: L1P = 32K
    C66xx_0: GEL Output: L1D = 32K
    C66xx_0: GEL Output: L2 = ALL SRAM
    C66xx_0: GEL Output: Setup Cache... Done.
    C66xx_0: GEL Output: Main PLL (PLL1) Setup ...
    C66xx_0: GEL Output: PLL in Bypass ...
    C66xx_0: GEL Output: pll_multiplier = (31)
    C66xx_0: GEL Output: PLL1_PLLM = (31)
    C66xx_0: GEL Output: PLL1_CMD = (1)
    C66xx_0: GEL Output: PLL1 Setup for DSP @ 1600.0 MHz.
    C66xx_0: GEL Output: SYSCLK2 = 533.333313 MHz, SYSCLK5 = 320.0 MHz.
    C66xx_0: GEL Output: SYSCLK8 = 25.0 MHz.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    4.寄存器转储
    e2e.ti.com/.../TI_5F00_Oct26_5F00_Registers.txt

    8.刷写 app.dat 文件

    遇到问题、 使用我修改过的 norwirter 加载 app.dat 文件(唯一不同的是添加了 print 语句)。  加载到地址0x8000000长度0xf0000的文件。

    (笑声)

    谢谢、

    Brad

1 2
x 出现错误。请重试或与管理员联系。