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.

[参考译文] TMS570LS1224:一次闪存的字节数

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1331692/tms570ls1224-number-of-bytes-to-be-flashed-at-a-time

器件型号:TMS570LS1224

您好!

我正在尝试通过引导 TMS570LS1224的 UDS 来刷写应用程序。

在 UDS 中、我将通过块接收数据、其中块的最大大小可以为4093。

因此、如果要刷写的数据> 4093、则将其分为多个块。 假设我有大小为 2BEF 的数据。 然后、在中、第一个块将具有4093 个字节、第二个块将具有4093个字节、剩余的字节 r 位于下一个块中。

1.在每个块中、如果数据超过4个字节、我会尝试一次刷写4个字节。 否则、我会刷写存在的任何字节数 r。

因此、在4093字节中、 一次刷写4个字节、因此4、8……4092个字节被刷写、现在由于保留了1个字节、只刷写了1个字节。

假设我已经在地址0x20000处刷写、现在1个数据块成功刷写至0x20ffc (4093字节)。

此数据未从0x20ffd - 0x21000 (4字节)刷新后、保留为 FF。 从 0x21001 - 0x2100C (12字节)开始、数据已 成功刷新。 同样、仍保留4个字节作为 FF、12个字节成功刷写、并重复此模式。

2.当我使用相同的逻辑但刷写1个字节而不是4个字节时,所有 数据都已成功刷写。 但这种分配需要比需要更多的时间。  

因此、请帮助我们了解第一个案例中发生的情况。  

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

    您好、Vidya:

    我已开始处理此问题、并将尽快为您提供我的更新。

    --
    谢谢。此致、
    Jagadish。

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

    您好、Vidya:

    我了解了问题的根本原因。

    请参阅 F021闪存 API 手册中突出显示的以下行:

    *F021闪存 API 参考指南(v2.01.00)(修订版 H)(TI.com)

    这里的意思是、起始地址加上我们尝试写入的字节数不应超过组数据宽度。

    对于 TMS570LS1224器件、还具有16字节的组数据宽度:

    您可以看到、编程宽度为144位、其中128位为数据、16位为 ECC。 因此、存储体数据宽度将为16字节(128/8)。

    因此、这意味着可能的数据写入方式如下:

    Unknown 说:
    此数据未从0x20ffd 闪存后–0x21000 (4字节)

    地址0x20FFD 可以写为(16*8447+0xD),等于表中的16*N+D。

    如上表所示,如果我们的地址为16*N+D,则可能的最大数据字节只能为3个字节,我们无法在此对4个字节进行编程。

    [quote userid="588114" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1331692/tms570ls1224-number-of-bytes-to-be-flashed-at-a-time 从 0x21001 - 0x2100C (12字节)开始、 成功刷写数据。 同样、仍有4个字节作为 FF、12个字节成功刷新、并重复此模式。[/引号]

    同样,地址0x2100D 将为(16*8448+0xD),等于 我们表中的16*N+D。 在本例中、可能的最大数据字节也将只有3个。

    --
    谢谢。此致、
    Jagadish。

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

    您好、Vidya:

    解决方案将是如下所示

    if ((Address % 16) + 4 <= 0xF)
    {
    	/*Now we can proceed for 4 bytes programming directly*/
    }
    else
    {
    	uint8_t max_possible;
    	max_possible = 16 - (Address % 16);
    	/*
    		Now you should need to write two times the first time is with number of bytes max_possible
    		Now increment the address (address = address + max_possible)
    		Now program the remaining bytes of (4 - max_possible) with the new address
    	*/
    }

    --
    谢谢。此致、
    Jagadish。