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.

[参考译文] TMS320F280041:闪存组织混乱

Guru**** 2535150 points
Other Parts Discussed in Thread: UNIFLASH, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1038529/tms320f280041-flash-organization-confusion

器件型号:TMS320F280041
主题中讨论的其他器件:UNIFLASHC2000WARE

我将为该器件实现自定义引导加载程序、如主题中所述。

数据表修订版 F (SPRS945F)显示闪存被组织为一组16个扇区、4K x 16、每个扇区的起始地址为0x80000、最后有效地址为0x8FFFE

CCS 9.1提供的链接器文件显示它是包含7个扇区的2个组、每个扇区为4K x16、分别从0x80000和0x90000开始

CCS 和 Uniflash (v 4.5.sus)都无法读取地址0x88000、这表明数据表无效。

但运行的代码如下所示:

volatile u32 b;
volatile u32* ptr = (u32*) 0x88000;

while(1)
{
    b = *ptr++;
}

不会产生任何崩溃、b 似乎具有有效值0xFFFFFFFF、因此实际上地址0x88000确实存在、但不知怎么说工具无法读取它。  

工具(CCS 和 Uniflash)似乎能够读取0x90000...0x97FFF 范围没有问题、因此数据表内存映射中的+1是错误的。

有人能解释一下发生了什么? 将闪存分为2个单独的地址空间似乎有点奇怪.....

编辑:

我刚刚安装了 Uniflash v 6.4.0.3394、现在它似乎可以正确读取0x88000...0x8FFFF、而不能读取0x90000及以上。 我现在真的很困惑。

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

    您好!

    F280041器件型号仅具有128KB 的闪存、范围为0x80000 - 0x8FFFF、因此无法读取超出范围的内容。 您可能正在查看 F280049存储器映射表、该表包含2组闪存。

    如果您需要256KB 闪存、则需要获取更高配置的器件。

    此致、

    Nirav

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

    我知道所有这些。 我使用了正确的器件设置/链接器文件。  

    我似乎已经解决/解决了这个问题。 似乎、升级到最新版本的 Uniflash 和 CCS 后、这会恢复正常、IDE 提供的默认链接器脚本是正确的。

    下面的屏幕截图显示了 CCS 9.1为 F280041提供的默认链接器文件

     

    在 CCS 9.1和 Uniflash 4.5.1中、似乎出现了存储器映射和默认链接器文件混乱的情况。

    但是、如果似乎一直被混淆、从这些不存在的存储器地址读取实际上会从物理地址读取。 我已经确认、实际上、无论我使用最新的 Uniflash 闪存到 CPU 中的任何内容、在准备通过 Uniflash 4.5.1进行读取时、都将出现在0x90000...0x97FFF 范围内。

    更新 IDE 和 Uniflash 是一个简单的修复方法、但在论坛上可能应该注意到这一点、因为这是一个非常不明显的错误(至少我不期望官方制造商工具在涉及特定器件型号时会出现混乱)

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

    不建议在 F280041器件上使用两组闪存、TI 仅支持1 128KB、即在这些器件上支持1组闪存。

    此致、

    Nirav

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

    绝对不建议这样做,这毫无意义,并且地址是错误的。 但是、这是 CCS 9.1和/或 c2000ware 2.00.00.03生成的内容。

    简而言之:升级到 CCS 10.4/c2000ware 3.04.00.00和 uniflash 6.4解决了该问题。

    9.1/2.00.03/4.5.1版具有该 CPU 的僵尸定义