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.

[参考译文] 基于 RTOS 应用程序的 TMDSIE3359:PRU-ICSS Profibus -准备从 SPI 闪存独立启动

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1081200/tmdsice3359-pru-icss-profibus-on-rtos-application---preparation-for-standalone-booting-from-spi-flash

部件号:TMDSIICE3359
“线程”中讨论的其它部件:ProfibusUNIFLASHAM3359

您好,

经过大量的努力,我终于在 TI TMDSIE3359评估板上以调试模式运行的 RTOS 上获得了 PRU-ICSS Profibus 的基本软件,并且还为我的目的配置了 Profibus 通信。 但是,刷新发行版本(并在 CCS 中运行)后,我发现重新启动后系统不会重新启动。 我认为这是由于初始化问题,我需要一个辅助引导加载程序(SBL)。

我最初使用的是推荐版本的 SDK 4.3.0,但最近升级到了 SDK 06.03.00.106,这似乎没有带来任何问题;我仍然可以在调试模式下成功重建和运行,我的 Windows 路径已被适当更改。

我正在尝试将引导加载程序和应用程序闪存到 SPI-闪存(McSPI)中。 我使用以下命令重建了引导加载程序:

 “gmake bootloader BUILDCFG=引导引导模式=mcspi 平台=AM335x-EVM 配置文件=发行版-s KW_BUIL=NO”

其中更新了我使用“bootloader_boot_mcspi_a8host_release_ti.bin”的四个文件

我的应用程序已编译为发行版并使用;

 “C:\ti\PDK_AM335x_1_0_10\packages \ti\starterware\tools\ti_image\tiimage.exe 0x8000000 none profibus_slave_AM335x_arm.bin Profibus 从属_AM335x_arm_ti.bin”

生成了一个应用程序文件“Profibus 从属设备 AM335x_arm_ti.bin”

 

在 CCS (V11.1.0.00011)中,我加载了闪光灯程序:

“C:\ti\PDK_AM335x_1_0_17\packages \ti\starterware\tools\flash_writer\SPI_flash_writer_AM335X.out”

 

这似乎反应适当,但我发现它在闪烁时特别慢。 在这里,控制台从闪存引导加载程序中输出:

 检测到[CortxA8] AM335X 部件。

SF:获得了代码 ef 40 17

正在检查是否可以使用 Winbond 闪存盘。

SF:检测到 W25Q64,页面大小为256,共8388608字节

闪存页面大小:256字节

闪存扇区大小:4096字节

启动 SPIWriter。

 

 选择操作:

 输入1--->以刷新图像

 输入2---->删除 Flash

 输入3 -->退出

1.

输入文件名

C:\ti\PDK_AM335x_1_0_17\packages \ti\startware\binary\bootloader\bin\AM335x-EVM-gcc\bootloader_boot_mcspi_a8host_release_ti.bin

输入以字节(十六进制)为单位的偏移量

0x00000

正在擦除字节偏移时的闪存:0,字节长度:36864

SE:cmd ={ 0x20 0x000000}

SE:cmd ={ 0x20 0x001000 }

SE:cmd ={ 0x20 0x002000 }

SE:cmd ={ 0x20 0x003000 }

SE:cmd ={ 0x20 0x004000 }

SE:cmd ={ 0x20 0x005000 }

SE:cmd ={ 0x20 0x006000 }

SE:cmd ={ 0x20 0x007000 }

SE:cmd ={ 0x20 0x008000 }

SF:已成功擦除36864字节@ 0x9000

在页面偏移时写入闪存:0,页数:136

 

 正在闪烁...

 正在验证... 成功。

  

下面是闪存应用程序的开始:

 

检测到[CortxA8] AM335X 部件。

SF:获得了代码 ef 40 17

正在检查是否可以使用 Winbond 闪存盘。

SF:检测到 W25Q64,页面大小为256,共8388608字节

闪存页面大小:256字节

闪存扇区大小:4096字节

启动 SPIWriter。

 

 选择操作:

 输入1--->以刷新图像

 输入2---->删除 Flash

 输入3 -->退出

1.

输入文件名

C:\ti\PRU-ICSS-Profibus 从属设备_01.00.02.01\协议\Profibus 从属设备\projects\Profibus 从属设备_AM335x_arm\Flash\profibus_slave_AM335x_arm_ti.bin

输入以字节(十六进制)为单位的偏移量

0x20000

正在擦除字节偏移时的闪存:131072,字节长度:495616

SE:cmd ={ 0x20 0x020000 }

……………………

 

这也成功地结束了。  但是,再次断电后,系统无法正常启动;无法正常运行。 跳线 J5在 EVM 的引脚2和3之间连接(SPI 启动)

如果有人能看到我所做的事情有任何缺陷,或者知道有任何错误,并采取可帮助解决我问题的变通办法,我将非常感激。

请提前感谢。

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

    Trevor Brown,您好!

    我们将检查并回复您。

    谢谢,
    纳雷什·库马尔·阿

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

    Trevor Brown,您好!

    我认为您可能会按照本页 的说明操作- https://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#am335x-am437x
    您可以检查此页面是否有 AM335x- https://software-dl.ti.com/processor-industrial-sw/esd/docs/indsw/profibus_slave/PROFIBUS_DP_slave_demo_setup_on_AM335x.html 的跳线连接

    此外,您是否可以使用预构建的引导加载程序(随软件包提供),而不是重新构建它。 您可能需要重新安装软件包才能获得预构建的引导加载程序。

    谢谢,
    纳雷什·库马尔·阿

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

    你好,纳雷什,

    是的,我一直按照您的说明操作,并且跳线连接是合适的(用于 SPI 引导的 J5 2&3)。 预构建的引导加载程序无法正常工作。

    我认为我需要用 enable_PRU=yes 和 bin_load=yes 编译的引导加载程序,但我无法正确编译:

    C:\ti\PDK_AM335x_1_0_17\packages \ti\starterverware>gmake bootloader BUILDCFG=引导引导模式=mcspi platform=AM335x-EVM 配置文件=发行版-s KW_BUIL=no enable_PRU=yes bin_load=yes
    \\正在制作 AM335x-EVM:a8host:发行版:设备...
    ##制作 AM335x-EVM:a8host:发行版:主板...
    \\正在制作 AM335x-EVM:a8host:发行版:实用程序...
    \\正在制作 AM335x-EVM:a8host:发行版:SOC...
    \\正在制作 AM335x-EVM:a8host:发行版:DAM...
    gmade[1]:***没有规则来创建目标'/arm-no-eabi/lib/hard',该规则由'C:\ti/PDK_AM335x_1_17/包/ti/startterware/binary/bootloader/bin/AM335x-EVM-EVM-VME/bootloader_bootloader_boot_ck_mcspi_a8host_release.out 所需要。 停下。
    gmake:***[Makefile:152:bootloader]错误2.

    您会不知道为什么不编译? 请提前感谢。

    此致 Trevor

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

    Trevor,您好!

    我无法在我的末尾重现此错误。 您是否在运行 make 命令之前运行了“pdksetupenv.bat”。
    C:\ti\PDK_AM335x_1_0_17\packages >pdksetupenv.bat

    我执行了您在我的末尾共享的同一个命令,它创建了所需的应用程序
    ...
    # C:/ti/pdp_am335x_1_0_17/packages/ti/startware/binary/bootloader/bin/AM335x-EVM-bootloader_bootloader_boot_mcspi_a8host_release.out 已创建。
    #
    #正在生成 C:/ti/pdp_am335x_1_0_17/packages/ti/startware/binary/bootloader/bin/AM335x-EVM-bootloader_bootloader_boot_mcspi_a8host_release.bin...
    已创建# C:/ti/pdg_am335x_1_0_17/包/ti/startware/binary/bootloader/bin/AM335x-EVM-gcc/bootloader_boot_mcspi_a8host_release.bin。
    #
    #正在生成 C:/ti/pdp_am335x_1_0_17/packages/ti/startware/binary/bootloader/bin/AM335x-EVM-bootloader_bootloader_boot_mcspi_a8host_release_ti.bin...

    已创建# C:/ti/pdg_am335x_1_0_17/包/ti/startware/binary/bootloader/bin/AM335x-EVM-gcc/bootloader_boot_mcspi_a8host_release_ti.bin。
    #

    C:\ti\PDK_AM335x_1_0_17\packages \ti\starterverware>

    谢谢,
    纳雷什·库马尔·阿

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

    你好,纳雷什,

    你是对的。 尽管我已经运行了 setupenv.bat,但我已经关闭并重新打开了 cmd 窗口。 我已经解决了这个问题,谢谢。我已经在某处看到,每个新的 cmd 窗口都必须运行 setupenv.bat。

    同时,我在命令行中使用 uniflash 重新尝试使用原始引导加载程序:

    dslite.bat -c ICE_AM3359.CCXML -n 1 -f -v -R2 C:\ti\PDK_AM335x_1_0_17\packages \ti\startware\binary\bootloader\bin\AM335x-EVM-gProfibus \bootloader_bootloader_boot/mcspi_a8host_release.out C:_strim_3am_release\gv3cpus\clus_3am_release\vus\clus_3am_ap_release_ap_api_01.3am_release\am_api_api_projects\gi_01.3am_v\v_api_api_api_01.3

    我明白了:

    有关更多详细信息和示例,请参阅 UniFlash 快速入门指南。

    CortxA8:输出:**** AM3359_ICE 初始化正在进行中..........
    CortxA8:输出:****正在进行 OPP 的 AM335x 所有 PLL 配置== OPP100 ..........
    CortxA8:输出:从 SYSBOOT[15:14]读取输入时钟:24MHz
    CortxA8:输出:****将绕过...
    CortxA8:输出:****被绕过,正在更改值...
    CortxA8:输出:****锁定臂 PLL
    CortxA8:输出:****绕过核心
    CortxA8:输出:****正在锁定核心...
    CortxA8:输出:****核心锁定
    CortxA8:输出:****已绕过 DDR DPLL
    CortxA8:输出:**** DDR DPLL 已锁定
    CortxA8:输出:每 DPLL 绕过****
    CortxA8:输出:每 DPLL 锁定****
    CortxA8:输出:**** DISP PLL 配置正在进行中..........
    CortxA8:输出:**** DISP PLL 配置完成..........
    CortxA8:输出:****针对 OPP 的 AM335x 所有 ADPLL 配置== OPP100已完成..........
    CortxA8:输出:****正在进行 AM335x DDR3 EMIF 和 PHY 配置...
    CortxA8:输出:EMIF PRCM 正在进行中.......
    CortxA8:输出:EMIF PRCM 完成
    CortxA8:输出:DDR PHY 配置正在进行中
    CortxA8:输出:正在等待 VTP 就绪.......
    CortxA8:输出:VTP 准备就绪!
    CortxA8:输出:DDR PHY CMM0寄存器配置正在进行中.......
    CortxA8:输出:DDR PHY CMD1寄存器配置正在进行中..........
    CortxA8:输出:DDR PHY CMD2寄存器配置正在进行中..........
    CortxA8:输出:DDR PHY DATA0寄存器配置正在进行中.......
    CortxA8:输出:DDR PHY Data1寄存器配置正在进行中..........
    CortxA8:输出:设置 IO 控制寄存器....
    CortxA8:输出:EMIF 计时寄存器配置正在进行中..........
    CortxA8:输出:EMIF 计时寄存器配置完成..........
    CortxA8:输出:PHY 已就绪!
    CortxA8:输出:DDR PHY 配置完成
    CortxA8:凝胶输出:打开 EDMA...
    CortxA8:凝胶输出:EDMA 已打开...
    CortxA8:输出:**** AM3359_ICE 初始化已完成


    警告:CortxA8:loader:程序的一个或多个部分位于不可写的内存区域中。 这些地区实际上不会写入目标。 检查链接器配置和/或内存映射。
    INFO:CortxA8:多个文件的程序验证成功

    正在重置...
    系统重置已发出。

    尝试使用以下命令单独刷新引导加载程序:

    dslite.bat -c ICE_AM3359.CCXML -n 1 -f -v C:\ti\PDK_AM335x_1_0_17\packages \ti\startware\binary\bootloader\bin\AM335x-EVM-EVM \bootloader_bootloader_boot_mcspi_a8host_release.out

    我得到:

    CortxA8:输出:**** AM3359_ICE 初始化正在进行中..........
    CortxA8:输出:****正在进行 OPP 的 AM335x 所有 PLL 配置== OPP100 ..........
    CortxA8:输出:从 SYSBOOT[15:14]读取输入时钟:24MHz
    CortxA8:输出:****将绕过...
    CortxA8:输出:****被绕过,正在更改值...
    CortxA8:输出:****锁定臂 PLL
    CortxA8:输出:****绕过核心
    CortxA8:输出:****正在锁定核心...
    CortxA8:输出:****核心锁定
    CortxA8:输出:****已绕过 DDR DPLL
    CortxA8:输出:**** DDR DPLL 已锁定
    CortxA8:输出:每 DPLL 绕过****
    CortxA8:输出:每 DPLL 锁定****
    CortxA8:输出:**** DISP PLL 配置正在进行中..........
    CortxA8:输出:**** DISP PLL 配置完成..........
    CortxA8:输出:****针对 OPP 的 AM335x 所有 ADPLL 配置== OPP100已完成..........
    CortxA8:输出:****正在进行 AM335x DDR3 EMIF 和 PHY 配置...
    CortxA8:输出:EMIF PRCM 正在进行中.......
    CortxA8:输出:EMIF PRCM 完成
    CortxA8:输出:DDR PHY 配置正在进行中
    CortxA8:输出:正在等待 VTP 就绪.......
    CortxA8:输出:VTP 准备就绪!
    CortxA8:输出:DDR PHY CMM0寄存器配置正在进行中.......
    CortxA8:输出:DDR PHY CMD1寄存器配置正在进行中..........
    CortxA8:输出:DDR PHY CMD2寄存器配置正在进行中..........
    CortxA8:输出:DDR PHY DATA0寄存器配置正在进行中.......
    CortxA8:输出:DDR PHY Data1寄存器配置正在进行中..........
    CortxA8:输出:设置 IO 控制寄存器....
    CortxA8:输出:EMIF 计时寄存器配置正在进行中..........
    CortxA8:输出:EMIF 计时寄存器配置完成..........
    CortxA8:输出:PHY 已就绪!
    CortxA8:输出:DDR PHY 配置完成
    CortxA8:凝胶输出:打开 EDMA...
    CortxA8:凝胶输出:EDMA 已打开...
    CortxA8:输出:**** AM3359_ICE 初始化已完成


    警告:CortxA8:loader:程序的一个或多个部分位于不可写的内存区域中。 这些地区实际上不会写入目标。 检查链接器配置和/或内存映射。
    INFO:CortxA8:C:\ti\PDK_AM335x_1_0_17\packages \ti\startware\binary\bootloader\bin\AM335x-EVM-bootloader_bootloader_boot_mcspi_a8host_release.out 的程序验证成功

    内存映射显示了正确的负载地址: .startcode   0x0000402f0400

    内存配置

    名称原点长度属性
    DDR0 0x0000800000080000000 0x000010000000
    OCMCRAM 0x0000402f0400 0x000000000001fbff

    从这起,最大值为 OCMCRAM 地址必须为0x4030FFFF,这与 AM3359的内存映射一致。 在 BL-内存映射中,没有比0x402F9EB0 =>更高的地址引用,应该是可以的,那么,不应该是吗?

    明天我打算尝试使用引导加载程序设置 CCS 项目,以便我可以调试它。

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

    Trevor Brown,您好!

    这方面的任何更新。

    谢谢,
    纳雷什·库马尔·阿

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

    你好,纳雷什,

    我还没有为 bootloader 制作 CCS 项目,但我发现了一些我认为与我的问题非常相关的东西。 加载时,引导加载程序通过 USB 输出显示应用程序或“DST”的加载地址(DDR 中的目标位置?) 我认为这是非常奇怪的。 然后,作为一项实验,我尝试使用 tiimage 设置0x00000080的加载地址,并猜测是什么? DST 显示为0x8000000!! 因此,我的假设是,引导加载程序读取 SPI 闪存时,假定端点图像设置错误,这将完全破坏数据并导致我遇到的问题。

    此致 Trevor  

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

    你好,纳雷什,

    现在我知道我做了什么错了:当使用 tiimage 生成_ti-file 时,我必须使用引导模式“QSPI”(而不是“mcspi”)。 这会适当地改变平衡,而且在重启后,我的应用程序突然工作正常。

    好的,总结:

    任何使用 TMDSIE33359开发板并希望在 SPI 内存中刷新图像的用户都可以使用引导模式“QSPI”生成_ti-应用程序文件。 我使用的闪光灯是 “SPI_FLASH 刻录机_AM335X.OUT”。 (其他闪光灯程序在该平台上是否工作,我尚未测试...)

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

    感谢你的支持。

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

    问题的关键在于:

    尽管使用 bootloader“bootloader_boot_mcspi_a8host_release_ti.bin”,但 bootmode 必须为“QSPI”。 我认为无法理解这里的逻辑!