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.

[参考译文] Starterware/LAUNCHXL2-570LC43:LAUNCHXL2-570LC43

Guru**** 2460850 points
Other Parts Discussed in Thread: TMS570LC4357, TMS570LS3137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/625536/starterware-launchxl2-570lc43-launchxl2-570lc43

器件型号:LAUNCHXL2-570LC43
主题中讨论的其他器件:TMS570LC4357TMS570LS3137

工具/软件:Starterware

您好!

我正在使用 TMS570LC4357 Launch pad 并 在闪存组1中实施以太网引导加载程序

为此、我在应用程序项目和应用程序代码中对 sys link cmd 进行了一些更改

只有 SCI 和某些 GPIO、在本例中、即使系统重新启动、应用程序也能正常运行、

但是、当应用程序包含在 LWIP_Init 中时 、应用程序会在200个奇数周期后被冲击。   

应用项目

/*用户代码开始(0)*/
#include "lwip/udp.h"
#include "lwip/ip_addr.h"
#include "hL_sci.h"
#include "hL_reg_sci.h"
#include "HL_Gio.h"
#include "ti_fee.h"
#include "lwiplib.h"

#include "hL_sys_common.h"

extern void EMAC_LwIP_Main (uint8_t * emacAddress);
extern void gioInit();
void Debug_Display_Val (unsigned int);
void sciDisplayText (sciBASE-t * sci、uint8_t *文本、uint32_t 长度);
struct udp_pcb *pcb;

struct ip_addr ipaddr、netmask、gw、src、dst;
unsigned short port_no=7000;

uint8 emacAddress[6U]={0x00U、0x08U、0xEEU、0x03U、0xA6U、 0x6CU};

uint32 emacPhyAddress = 1U;

int main (空)


uint32 ip_addr=0xC0A8000C、Gatway =0xC0A80001、net_Mask =0xFFFFFF00;//初始化 RAM 阵列。*/

gioInit();

IP4_ADDR (&src、192、168、0、12);
IP4_ADDR (&dst、192、168、0、10);
IP4_ADDR (网络掩码、255、255、255、0);
IP4_ADDR (&GW、192、168、0、1);

//EMAC_LwIP_Main (emacAddress);

lwIPInit (0、emacAddress、IP_addr、net_Mask、Gatway、IPADDR_USE_STATIC);//如果注释此 lwip init 操作将正常运行,否则它将在200个或奇数个周期后被击中  

while (1)

sciDisplayText (sciREG1、(uint8_t *)"测试 serial="、sizeof ("测试 serial=""));
sciDisplayText (sciREG1、(uint8_t *)"\r\n、sizeof ("\r\n ");

sys link cmd 中的更改

向量(X):origin=0x00200000 length=0x00200020
//FLASH0 (RX):origin=0x00000020 length=0x001FFFE0
FLASH1 (RW):origin=0x00200020 length=0x001FFFE0
堆栈(RW):origin=0x08000000 length=0x00001500
RAM (RW):origin=0x08001500 length=0x0002EB00

因此、如果您希望我同时附加引导加载程序和应用程序代码、请帮助我解决此问题  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码卡在哪里? 也许查看此 wiki 页面将有助于:
    processors.wiki.ti.com/.../HALCoGen_Ethernet_Driver_and_lwIP_Integration_Demonstration
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    通过 JTAG (XDS110)编程的应用程序代码可用于以太网应用程序。但是、如果通过 Erhernet 引导加载程序编程的应用程序代码在一段时间后会被击中。

    因此,如果我在 lwip_init()中注释 memp_init()函数,应用程序将不会被击中,但以太网将无法工作,这似乎是因为一定存在一些与内存相关的问题,所以您能告诉我这个问题的确切原因  

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

    尊敬的 Bob:

      我的应用程序正在闪存组1中运行、我想将一些数据存储在同一组中、以便如何通过 我的应用程序读取和写入同一组  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您不能将闪存编程到与您正在执行的同一组中。 考虑将数据存储在组7中。 否则、将数据编程到组1的例程必须位于组0中或从 RAM 执行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:

    我尝试通过 TI FEE 函数在组7中写入某种格式、而我的应用程序是组1、在这种情况下、应用程序在一个周期后会被击中、因此有任何选择。
    实际上、我想在任何一个位置(一个地址)写入一种格式、以检查在上电或硬复位期间引导加载程序必须等待应用程序代码转储或直接从定义的地址开始的条件、以便我如何执行此操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    虽然可以使用 FEE 驱动器将单个值写入组7、但您不能将其定义到特定地址。 在这种情况下、您只需使用 F021闪存 API 函数对该位置进行编程即可。  此处是编程流程图 。 我建议您使用"Fapi_AutoEccGeneration"模式对64位位置(8字节)进行编程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    现在我可以写入闪存组7、所需的逻辑工作正常。现在、我可以通过引导加载程序及其工作方式转储应用程序 bin 文件、 但是、如果我修改应用程序并生成 bin 并尝试转储该应用程序、那么 Fapi_BlockProgram 函数中会出现问题以解决此问题、我需要对引导加载程序进行编程并尝试转储该应用程序、那么您能告诉我确切的原因
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    F021闪存 API 的 v2.01.01中没有 Fapi_BlockProgram 函数。 这是您编写的函数吗?

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

    尊敬的 Bob:

    在闪存应用程序中写入应用程序时、Fapi_issueProgramming Command 函数会被删除。

     我已上传项目、请在 tms570lc4357 Launchpad 中尝试、并提供一些解决方案、因为项目处于我们的开发阶段

    如果处理器运行良好、则将其视为常规产品、或者我们必须考虑其他一些制造处理器。    

    /cfs-file/__key/communityserver-discussions-components-files/312/6014.BOOT_5F00_APP.rar

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

    尊敬的 Bob:

    您是否测试了附加的应用程序?

    等待您的回复

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

    很抱歉耽误您的时间、但 Bob 不得不休意外的紧急假。 同时,我会找另一人,看看他们是否可以提供协助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    高卡盘、

    尝试使用 TMS570LC4357 Launchpad 实现附加的引导加载程序代码、并检查其紧急情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunil、

    遗憾的是、我目前没有运行应用程序的资源、因此我只能提供一些建议。 在您之前的帖子中、您表示您认为问题与内存有关。 您能否查看缓存设置? 原始引导加载程序应用手册和示例是使用非高速缓存设备编写的、但您使用的设备具有高速缓存。 这是一个重大变化、如果数据实际写入您认为应该写入的位置、则可能会受到影响。 这也可能解释了由引导加载程序编程时的性能与外部编程器之间的差异。 我建议确保在引导加载程序运行期间禁用(写入)高速缓存、以便模仿与外部编程器相同的操作。 高速缓存配置包含在器件的 MPU 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    高卡盘、

    您是否拥有适用于 TMS570LC4357 LaunchPad 的任何成熟的引导加载程序应用示例。

    我为 TI 论坛下载了 TMS570LS3137的启动应用、同样、也有任何 TMS570LC4357的示例代码。   

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

    您好、Sunil、

    我有用于 RM57的 UART 引导加载程序。 RM57和 TM570LC4357具有相同的封装、架构、闪存、SRAM、但具有不同的字节序。  

    e2e.ti.com/.../1440.RM57_5F00_uart_5F00_boot.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、QJ Wang、
    现在我无法更改设计、 我无法转移到 UART 引导加载程序、因为我们的硬件是针对以太网设计的、所以请尝试之前连接的引导加载程序应用程序 urgent.using、该应用程序可以多次下载相同的 bin 文件、但如果我更改 bin 然后我无法对应用程序进行编程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunil、

    不能使用在同一组(bank0)中运行的代码和 API 擦除/编程组0中的扇区。 您需要将闪存擦除/编程相关代码和闪存 API 复制到另一个闪存组或 SRAM、并从其他组或 SRAM 执行闪存擦除/编程。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunil、

    只需阅读您的代码:
    您用于初始化闪存组的时钟为100Mhz。 但您的系统时钟为300MHz。 系统时钟频率应在 Fapi_initializeFlashBanks (...)中使用

    2. LC4357在组7中有32个扇区,您的代码尝试启用未实现的扇区(63..32)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    在我的引导加载程序应用程序中、我不擦除组0、而是擦除组1并仅写入组1中的应用程序。  

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

    用于初始化闪存组的时钟为100Mhz。 但您的系统时钟为300MHz。 系统时钟频率应在 Fapi_initializeFlashBanks (...)中使用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    它在300MHz 频率下不起作用、因此我将系统时钟频率保持在150MHz  

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

    在过去的2个月里、我一直在忍受这个问题、即使我已经向您发送了引导加载程序代码、所以请使用 TMS570LC4357 LaunchPad 进行尝试、这样您就可以得到我们所面临的确切问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    我面临的问题是、转储引导加载程序代码后、我可以转储闪存组1中的应用程序二进制文件、并且应用程序运行正常、然后如果我修改应用程序并生成二进制文件、然后再次尝试转储、则应用程序会被删除、但如果我放置 然后、先前的应用程序 bin 文件再次被转储、因此为了转储修改后的应用程序二进制文件、我需要再次转储引导加载程序代码。    

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

    您好、Sunil、

    因此、我的理解是:

    1.通过 JTAG 将引导加载程序编程到闪存组0 --工作

    2.通过引导加载程序将原始应用程序二进制文件编程到闪存组1 --工作

    3.通过 引导加载程序将更新后的应用程序二进制文件编程到闪存组1 --失败

    4.通过引导程序将原始应用程序二进制文件重新编程到闪存组1 --工作

    5.将引导加载程序重新编程到 bank0,然后通过引导加载程序将更新后的应用程序二进制文件编程到 bank1 --工作正常

    原始应用程序与更新后的应用程序之间有何区别? 您是否修改了 cmd 文件?  

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

    您好、Wang、

    是的、完全相同、我没有修改更新的应用程序中的任何 cmd 文件我将只注释应用程序中的任何条件、或者将添加应用程序中的任何条件。   

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

    您能否列出原始应用程序与更新后的应用程序之间的差异? 我无法从您的项目(源 TFTP)中确定您的修改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    我只是更改通过串行端口发送并生成二进制文件的文本消息。

    例如、在第一个二进制文件中、我将发送 sciDisplayText (sciREG1、(uint8_t *)"Boot testBin="、sizeof ("Boot testBin="))、在第二个 bin 文件中发送

    sciDisplayText (sciREG1、(uint8_t *)"Boot testBinary=="、sizeof ("Boot testBinary==") "。源代码中不会有任何其他更改。

    甚至您也可以在应用中添加任何逻辑或从应用中删除逻辑、并尝试将其置于不起作用的状态   

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

    您好、Wang、

    是否有有关查询的更新?

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

    正在等待您的回复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    我们处理此问题的时间非常短、因此请提供一些反馈
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    在过去15天里、我收到 e2e 的任何回复、我们对您的支持寄予厚望。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunil、

    我很抱歉耽误你的回答。 我可以拥有您的最新 CCS 项目吗? 然后告诉我如何在工作台上执行测试、包括在 Window PC 上使用的工具、将应用程序映像发送到引导加载程序。 我想在我的 LaunchPad 上运行您的代码、这可能有助于我了解您的问题。 谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    我已经附加了 RAR 文件、该文件包含在引导加载程序和应用程序项目中、并附带了所使用的工具和测试程序。    

    e2e.ti.com/.../2251.BOOT_5F00_LOAD.rarHiWang、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    请在前一封邮件中找到随附的文件、如果您需要更多详细信息、请告知我
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Sunil、我下周再见。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sunil、

    我测试了波特图加载程序本身、它可以工作、应用程序映像被编程到闪存组1中。

    代码卡在某个位置、我没有显示"boot BIN1=xxx"。

    我检查了 CP15寄存器、数据故障和指令故障寄存器中的值:0x00001008、这是一个同步外部中止。 未映射的存储器地址发生存储指令时、是软件错误。

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

    您好、Wang、

    对应用程序映像进行编程后、您只需重新启动 LaunchPad 即可运行应用程序、您可以使用9600波特率从 launchpad 的 SCI1调试端口获取数据。

    我已经附加了2个应用程序二进制文件、您只需 在对引导加载程序映像进行编程后对应用程序映像 BIN1进行编程、然后重新启动启动板、然后运行应用程序、然后按照我之前提供的过程对应用程序映像 BIN2进行编程。      

    e2e.ti.com/.../6011.BIN1.rare2e.ti.com/.../1803.BIN2.rar

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

    您只需在引导加载程序代码中删除下面的 if 语句、该语句位于 hL_sys_main.c 的第124行中、并通过 JTAG 对引导加载程序应用程序进行编程。

    if (((*(uint8_t *) 0xF0200000)== 0xAA)||(*(uint8_t*)(app_start_address+1)=0xFF))


    1.通过 tftp64编辑 BIN1应用程序镜像、然后应用程序获得闪存组1中的程序。
    2.重新启动 LaunchPad、然后再次尝试通过 tftp64对 BIN2应用程序映像进行编程、然后它在编程时卡住
    3.再次重新启动 LaunchPad 并尝试对 BIN1应用程序映像进行编程、然后在闪存组1中获取程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sunil、

    这是另一个问题。 您可以启动另一个线程吗? 否则、我必须向下滚动页面才能阅读您的最新帖子。

    这是我的测试:

    对引导加载程序进行编程

    2.启动引导加载程序+ TeraTerm + tftp32 (或64)

    3.将 BIN1下载到 bank1,不会出现任何问题

    4.重新启动引导加载程序、使用 tftp32下载 BIN2、并遇到如下超时问题:

    5.重新启动引导加载程序,然后再次对 BIN1进行编程,我没有看到任何问题。  

    BIN1和 BIN2之间有何区别?

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

    您好、Wang、

    我只是添加了一些与我的应用相关的逻辑、两个二进制文件之间不会有太大的差异。

    问题与我之前和现在所说的相同。 我只是尝试简化、以便更好地理解。

    您还可以在我提供的源 TFTP 应用程序代码中添加一些逻辑并生成 bin、只需通过在应用程序代码中添加逻辑或删除逻辑来修改源应用程序、并生成 bin、以便您可以通过上述方法对生成的两个 bin 进行编程 过程中、您在引导加载程序之后放置的 bin 将转储、但您第二次放置的 bin 将会超时。    

     在上面的测试中、您在闪存1中对 BIN1进行了编程、在尝试对 BIN2进行编程时、您将会得到超时、因此如果您执行反向操作、我是说、首先放入 BIN2、然后尝试放入 BIN1、然后在输入 BIN1时出现超时。   

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

    您好、Sunil、

    我多次通过引导加载程序重复对 BIN1进行重新编程、但到目前为止未发现问题。  

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

    您好、Wang、

    在通过 JTAG 进行引导加载程序之后、您可以对任何 bin (BIN1或 BIN2)进行编程、不会出现任何问题。但是、一旦您对 BIN1进行编程 、您就无法对 BIN2进行编程。 如果您对 BIN2进行编程 、则不能对 BIN1进行编程 、但 可以重复对同一 bin 进行编程。   

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

    感谢您的支持、问题得到了解决。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunil、

    您是如何解决该问题的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    引导加载程序应用程序中的扇区擦除存在问题、因此我只是通过组擦除来更改扇区擦除。