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.

[参考译文] TMS570LS3137:TMS570LS3137 CAN 引导加载程序除了3.0 MB 片上闪存外,32 MB 外部闪存可以是 SPI 接口芯片或外部连接到 TMS570LS3137的 EMIF 接口。

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/767155/tms570ls3137-tms570ls3137-can-bootloader-in-addition-to-3-0-mb-on-chip-flash-the-external-32-mb-flash-can-be-spi-interface-chip-or-emif-interface-connected-externally-to-tms570ls3137

器件型号:TMS570LS3137
主题中讨论的其他器件: HALCOGEN

TMS570LS3137 CAN 引导加载程序

可容纳6 MB 以上应用的微型板,是否有适用于 TMS570LS3137的 CAN 引导加载程序源,这些源集成了 EMIF 闪存驱动程序,集成了 SPI 闪存驱动程序。

除了3.0MB 片上闪存外,外部32MB 闪存可以是 SPI 接口芯片或从外部连接到 TMS570LS3137的 EMIF 接口。

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

    用于外部闪存(例如 NOR 闪存)的 EMIF 驱动程序未集成到现有的引导加载程序中、但您可以快速添加它们。 我有一个用于 CAN 引导加载程序的 PC 示例代码(VC++)、但该代码设计为使用 NI CAN-USB 适配器。 您使用哪种适配器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。


    2)我们使用的是 PEAK PCAN-USB IPEH-002021 (www.peak-system.com/PCAN-USB.199.0.html )。

    3) 3)我已 从   http://processors.wiki.ti.com/index.php/TMS570_Hercules_MCU_Bootloader 下载 Hercules_MCU_Bootloader.zip 。


    4) 4)您能帮我集成 TMS570LS3137 "CRC 验证"和 EMIF 驱动程序吗?我们使用的 S29GL256S 32MB_NOR 闪存未集成到现有的引导加载程序中。

    5) 5)在 TMS570LS3137闪存位置上、CRC 校验模块驻留0x00000000到0x00010000十六进 制地址、引导加载程序驻留0x00010000到0x00020000十六进制地址。 我必须将完整的应用固件重新定位到地址0x00020000以在应用程序链接.cmd 文件中实现此目的我已将 IVT 地址和闪存起始地址从0x00000000更改为0x00020000。 但是在编译和链接.out 文件后,仍有字节位于从0x00000000到0x00000130的位置,所有其它实现都被移动到0x00020000。
    为什么这些 IVT 或一些.obj 仍然位于0x00000000到0x00000130,如何解决此问题。 CCS 是否包含放置在这些位置的内在函数目标文件? 我应该在哪里找到解决方案。

    6)我们的项目包括需要通过 SPI 接口更新应用程序的从微控制器。 为此,我将使用 SafeetyMCU_Bootloader\TMS570LS31x\boot_CAN 源文件,这些文件将作为 CAN 引导加载程序来更新 TMS570LS3137的固件,要通过 TMS570LS3137引导加载程序中的 SPI 更新从属微控制器的固件,我已启用 SPI_ENABLE_UPDATE 和 CAN_ENABLE_UPDATE。
    这样、我的代码现在包含用于更新 TMS570LS3137应用程序和 SPI 驱动程序的 CAN 驱动程序。 但在注释中,我已阅读其中一个 CAN_ENABLE_UPDATE,SPI_ENABLE_UPDATE 应启用。 我是否可以启用 SPI_ENABLE_UPDATE 和 CAN_ENABLE_UPDATE 所有需要注意的事项,以便在 从   http://processors.wiki.ti.com/index.php/TMS570_Hercules_MCU_Bootloader 下载的 Hercules_MCU_Bootloader.zip 中启用 CAN 和 SPI 。

    7) 7)您是否还能验证主题 https://e2e.ti.com/support/microcontrollers/hercules/f/312/p/526417/1914373
    该线程提到 PLL 未在 TMS570LS3137的 BOOT_CAN 中正确初始化,并且在从应用程序自复位时导致系统挂起。 您能不能告诉我需要修复 Boot_can 的内容。

    当我尝试从应用程序代码(写入 SYSECR 寄存器位15和14)复位 MCU 时、甚至当我尝试复位时、也会出现此问题
    MCU 将 RST 引脚拉低:它卡在 bootloader 函数 systemInit()的 mapClocks()中,所有这些都由_c_int00()调用。 更多
    具体而言、在这一行中:

    8) 8)您能否帮助我了解 TMS570LS3137的最新固定 CAN 引导加载程序、因为我在 https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/680543?RM48L950-erasing-flash-sector-0-results-in-a-hang-in-Fapi-BlockErase-上的引导加载程序中看到以下修复缺失

    9)是否有引导加载程序文件 sys_startup.c、sys_core.asm、sys_intvecs.asm 代码在3个中断矢量表之间切换。 一个中断矢量表是 CRC 校验模块(CRC 校验模块驻留在 0x00000000到0x00010000十六进制) ,它验证应用程序固件(0x00020000到结束)的 CRC 以及引导加载程序的 CRC (  引导加载程序驻留在0x00000000到0x00020000十六进制) 否则会生成诊断。 CRC 校验模块随后将控制引导加载程序,引导加载程序将处理到等待状态中的循环(如果需要更新应用程序),否则将执行应用程序。

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

    2)我们使用的是 PEAK PCAN-USB IPEH-002021 (www.peak-system.com/PCAN-USB.199.0.html)。
    QJW>这是 CAN 引导加载程序的 PC 示例代码(VC++)。 正如我在上一篇文章中提到的、此示例使用 NI USB-CAN。

    3) 3)请参阅此帖子以了解 CRC 计算。
    e2e.ti.com/.../2805284
    4)。 我发布了用于访问 NOR 闪存的示例代码:
    e2e.ti.com/.../2704297
    5)。 中断表位于0x00000000、无法更改。 因此、前几个字(从0x00到0x1c)用于中断表:

    b _c_int00 ;0x00
    UndefEntry
    b 未定义尝试 ;0x04;
    svcEntry
    b svcEntry ;0x08、软件中断
    PrefetchEntry
    B prefetchEntry ;0x0C,中止(预取)
    b _dabort ;0x10、中止(数据)
    保留尝试
    b 保留尝试 ;0x14
    LDR PC、[PC、#-0x1b0] ;0x18
    LDR PC、[PC、#-0x1b0] ;0x1C

    6) 6)您可以使用 SPI 引导加载程序或引导加载程序将应用程序代码下载到闪存、但不能同时使用两者。 但是、您可以修改引导加载程序以使用 CAN 和 SPI 来下载2个单独的应用。

    7)将使用最新的 HALCOGen 驱动程序更新引导加载程序代码
    8) 8)如果需要、我将查看并更新 CMD 文件。
    9)否、我没有这种文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供的信息,我认为第2、3、4、5行项目已解决。

    以下内容尚未解决。
    7)将使用最新的 HALCOGen 驱动程序更新引导加载程序代码

    使用最新 HALCOGen 驱动程序的最新引导加载程序代码

    8) 8)如果需要、我将查看并更新 CMD 文件。

    修复了"擦除闪存扇区0会导致 Fapi_BlockErase 中挂起"

    10)是否可以一次性将整个应用程序下载到 SRAM、然后写入闪存(否)以使电路板砖型并避免中止条件下的故障。

    一个新问题是 闪存 API 有任何限制,晶体 频率 应以160MHz 运行?

    您能否提供引导加载程序(具有最新的 HALCOGen )以及180MHz 晶体频率(如当前示例中所述),它被称为160MHz 晶体频率

    //

    //
    //用于为微控制器计时的晶体的频率(MHz)。
    //
    //这定义了运行的微控制器所使用的晶振频率
    //引导加载程序。

    //
    #define CRYSTICL_FREQ 16 //MHz

    #define SYS_CLK_FREQ 160//MHz

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    7)将使用最新的 HALCOGen 驱动程序更新引导加载程序代码

    使用最新 HALCOGen 驱动程序的最新引导加载程序代码

    8) 8)如果需要、我将查看并更新 CMD 文件。

    修复了"擦除闪存扇区0会导致 Fapi_BlockErase 中挂起"

    10)是否可以一次性将整个应用程序下载到 SRAM、然后写入闪存(否)以使电路板砖型并避免中止条件下的故障。

    一个新问题是闪存 API 有任何限制,晶体频率应以160MHz 运行?

    您能否提供引导加载程序(具有最新的 HALCOGen)以及180MHz 晶体频率(如当前示例中所述),它被称为160MHz 晶体频率

    //

    //
    //用于为微控制器计时的晶体的频率(MHz)。
    //
    //这定义了运行的微控制器所使用的晶振频率
    //引导加载程序。

    //
    #define CRYSTICL_FREQ 16 //MHz

    #define SYS_CLK_FREQ 160//MHz

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

    您可以使用5MHz 至20MHz 之间的任何晶振频率。 系统时钟高达180MHz。 如果您使用180MHz 作为 MCU 系统时钟、则在初始化闪存组时需要使用180MHz:

    Fapi_initializeFlashBanks ((uint32_t) 180)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    7)将使用最新的 HALCOGen 驱动程序更新引导加载程序代码
    8) 8)如果需要、我将查看并更新 CMD 文件。

    QJW>如前所述、我将使用最新 HALCoGen 中的硬件驱动程序更新引导加载程序。 但直到2019年第2季度才会完成。


    修复了"擦除闪存扇区0会导致 Fapi_BlockErase 中挂起"
    QJW>由于组0包含中断矢量表、所以要非常小心地擦除该组0的扇区0。 在发出擦除命令之前、请禁用应用程序中的所有中断。

    10)是否可以一次性将整个应用程序下载到 SRAM、然后写入闪存(否)以使电路板砖型并避免中止条件下的故障。
    QJW>是的、您可以将整个应用程序下载到 SRAM、然后将其编程到闪存中。 但我们不会考虑某种示例。