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.

[参考译文] TMS570LC4357:以太网引导加载程序

Guru**** 2455560 points
Other Parts Discussed in Thread: TMS570LC4357, UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/632597/tms570lc4357-ethernet-bootloader

器件型号:TMS570LC4357
主题中讨论的其他器件: UNIFLASH

您好、E2E、

我面临一个独特的问题、

我使用 的是 TMS570LC4357。 我希望拥有用于该控制器的以太网引导加载程序。 我找到了一个基于 TFTP 协议的以太网引导加载程序。

我能够加载引导加载程序和应用程序并正常工作、这不是问题。

引导加载程序配置为 bank0和 bank1中的我的应用程序。

问题是当我编辑我的应用程序并尝试通过 tftp 加载时,应用程序不加载,它会在 Fapi_BlockProgram 函数处卡住,但当我恢复更改并加载应用程序时,它会加载。

项目的功能是  

1.加载引导加载程序- u 将在串行调试中收到一条命令、提示(编程闪存)

2.通过 TFTP (.bin 文件)加载应用程序

TFTP 配置- ipaddr - 192.168.0.2

端口-69

3.发送命令- 通过  sockettest 擦除并重新启动 launchpad u 将进入步骤1

套接字测试配置 UDP 客户端- 192.168.0.12

端口- 7000

我已附加我的引导加载程序项目和应用程序项目,请提供帮助。

e2e.ti.com/.../8360.BOOTLOADER.rare2e.ti.com/.../5148.Source_5F00_TFTP.rar

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

    请通过以下链接参阅您的员工提供的相同主题: e2e.ti.com/.../2321379

    我们提供了使用基于 UART 的 TMS570LC4357的引导加载程序的工作示例。 通过使用自定义代码的通信算法替换示例的通信层、可以将此代码/示例修改为基于以太网的引导加载程序。 同样、您可以使用代码的示例编程/命令响应部分在代码中集成相同的编程/数据流函数。

    我们没有在引导加载程序中使用以太网端口的直接示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、
    我已经尝试过您的建议、但这没有解决我的问题。

    是否可以将引导加载程序和应用程序加载到同一组 i.e、活动组(bank0)。
    您能给我一个例子,说明如何实现这一点吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shanmuth、

    我再次对延迟的答复表示歉意。 我们接受了一些内部培训、无法做出响应。

    我们的器件架构不允许对您正在执行的同一组进行编程。 即、如果您从组0执行引导加载程序、则可能不会将应用程序也加载到组0。 实现这一目标的唯一方法是将程序执行切换到 RAM 并从 RAM 运行。 则需要重新编程组0。 在这种情况下、必须注意保留您的引导加载程序、并确保在从 RAM 执行时、执行过程完全不会分支回或引用组0位置。 如果由于功率损耗或 RAM ECC 错误或任何导致编程中断的事件而只对组0进行部分编程、则可能会导致器件损坏。

    关于提供的示例程序、您是否完全能够在 UART 模式下运行它? 即、您能否在不引入以太网代码/堆栈的情况下检查它是否正常工作。 此外、我还想知道、代码在通过 CCS 或 Uniflash (或其他外部编程器)对整个应用程序(引导加载程序+应用程序代码)进行编程的正常使用情况下起作用、 但是、当您进入引导加载程序编程模式时、它会卡在对规定的 BlockWrite 函数的调用上。 对吧?

    您是否已检查权限? 您是否能够确定它悬挂在哪条线路上? 您能否判断是否对任何块进行了编程、或者是否仅是第一个挂起的块? 您使用的是什么以太网堆栈? Lwip 是开放源码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我能够将引导加载程序和应用程序加载到 BANK0。
    问题是我想在应用中使用以太网、所以当我初始化"EMAC_LwIP_Main (emacAddress)"时、它会卡在此行"netif_set_up (&hdkNetif[instated])"中、在此行"etharp_gratedyntif (nitif)"中;"

    但是、当我在没有引导加载程序的情况下运行应用程序时、它运行正常、没有问题。

    您能帮我解决这个问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    请有人回复,这非常紧急。 我需要解决这个问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Shanmukh、

    需要针对应用修改 link.cmd 中的存储器部分:

    引导程序(X):origin=0x0000xxxx length=0x00000020--> xxxx 是应用程序的起始地址
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、
    感谢你的答复。
    引导加载程序中的内存部分为:

    引导程序(X):origin=0x00000000 length=0x00000020
    FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
    FLASH1 (RX):origin=0x00200000 length=0x00200000
    堆栈(RW):origin=0x08000000 length=0x00001500
    RAM (RW):origin=0x08001500 length=0x0002EB00

    用户代码结束*/
    .intvecs:{}>向量
    .text align (32):{}> FLASH0
    .const align (32):{}> FLASH0
    .cinit align (32):{}> FLASH0
    .pinit align (32):{}> FLASH0
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM


    我的应用程序存储器如下所示:

    引导程序(X):origin=0x00200000 length=0x00000020
    FLASH1 (RX):origin=0x00200020 length=0x001FFFDF
    堆栈(RW):origin=0x08000000 length=0x00008000
    堆(RW):origin=0x08008000 length=0x00008000
    RAM (RW):origin=0x08010000 length=0x00020000

    .intvecs:{}>向量
    .text:{}> FLASH1
    .const:{}>FLASH1
    .cinit:{}>FLASH1
    .pinit:{}>FLASH1
    .bss:{}> RAM
    .data :{}> RAM
    .sysmem:{}>RAM


    这是正确的吗? 或者是否有任何修改?

    系统频率为150Mhz。

    即使我尝试通过使用 FlashAPI 将引导加载程序提取到 RAM 来运行。 即使这样也无法解决问题。

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

    有人能帮我解决这个问题、我提出这个问题已经过去了一个月了、但问题仍然没有解决。 我几乎没有收到任何回复。
    解决这一问题非常紧迫、因为我的设计已经完成并正在投入生产。 如果这个问题不能解决、这将是一个主要问题。
    请有人帮助解决这个问题、这将会非常有帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    cmd 文件看起来正常。 您在 bootloader 工程的 sys_intvecs.asm 中的设置如何? 正确设置为:

    ;------------------------------------------------------------------
    ;中断向量
    ;请更改#0x??? 在 bl_config.h 中定义的指定图像位置

    b _c_int00 ;0x00
    b #0x1FFFF8 ;0x04;0x1FFFF8=$200000-0x8;0x200000是应用程序起始地址
    b #0x1FFFF8 ;0x08、软件中断
    b #0x1FFFF8 ;0x0C,中止(预取)
    b #0x1FFFF8 ;0x10、中止(数据)
    保留尝试
    b 保留尝试 ;0x14
    LDR PC、[PC、#-0x1b0] ;0x18
    LDR PC、[PC、#-0x1b0] ;0x1C