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.

[参考译文] TMS320F28335:关于 ​​TMS320F28335 的 RAM 区域

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1526843/tms320f28335-about-the-ram-area-of-tms320f28335

器件型号:TMS320F28335

工具/软件:

关于 TMS320F28335 的 RAM 区域 M0 的地址、数据表中的说明和示例代码中的说明有所不同、如下所示。 这是为什么?

两边都有拼写错误吗? 或者地址是否因某种原因关闭?

请提供建议。

【详细信息】
-数据表中的描述(从 SPRS439N–2007 年 6 月–2016 年 10 月修订)

类似于图 6-23。 F28335、F28333、F28235 内存映射、

M0 矢量 — RAM (32 x 32)(如果 VMAP = 0,则启用)位于地址:0x00 0000 至 0x00 0040。
M0 SARAM (1K x 16) 地址为 0x00 0040 至 0x00 0400。


示例代码描述(来自 F28335.cmd)

类似于图 6-23。 F28335、F28333、F28235 内存映射、

BOOT_RSVD:origin = 0x000000、length = 0x000050 /* M0 的一部分、引导 ROM 将对堆栈使用此值*/
RAMM0:origin = 0x000050、length = 0x0003B0 /*片上 RAM 块 M0 */

因此、M0 RAM 区域的起始位置是数据表中的 0x00 0040 和示例代码中的 0x00 0050、它偏离了 0x10(16 个字)。

此致、

T. Mori

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

    Mori、

    这两个部分是不相关的。  

    对于 28335.cmd;以及为此器件链接的大多数代码、VMAP = 1;这会将中断向量映射到 Brom 矢量空间和/或 PIE(如果 ENPIE = 1)。

    当 VMAP = 1 时、器件可使用所有 M0。  现在、对于 BOOT_RSVD 部分、这是基于我们的 Brom 实现以及 TI 为 Brom 堆栈保留了多少空间。

    VMAP = 0 的情况主要是为了向后兼容那些没有 PIE / PIE RAM 的器件。  通常不用于基于 C28x 的器件。

    此致、
    Matthew

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

    您好、Matthew

    感谢您的答复!

    我知道示例代码的内存映射和段除法是无关的。

    在示例代码的哪个位置执行了 VMAP 设置?

    文件:DSP2833x_DevEmu.h 包含以下寄存器和位声明、
    但我找不到有关设置 DEVICECNF 的任何说明。

    请告诉我它在哪里以及如何设置。

    我认为 VMAP =1 是默认值、但我想确认它已设置。

    [ DSP2833x_DevEmu.h 代码]
    结构 DEV_EMU_REGS{
    UNION DEVECNF_REG DEVICNF;//器件配置
    Union CLASSID_REG CLASSID;//类 ID
    uint16 REVID;//器件 ID
    UINT16 PROTSTART;//写读保护启动
    UINT16 PROTRANGE;//写读保护范围
    Uint16 rsvd2[202];
    };

    结构 DEVICECNF_BITS{//位描述
    Uint16 rsvd1:3;// 2:0 保留
    UINT16 VMAP:1;// 3 VMAP 状态
    Uint16 rsvd2:1;// 4 保留
    UINT16 XRSn:1;// 5 XRSn 信号状态
    Uint16 rsvd3:10;// 15:6
    uint16 rsvd4:3;// 18:16
    UINT16 ENPROT:1;// 19 启用/禁用流水线保护
    Uint16 rsvd5:7;// 26:20 保留
    UINT16 TRSTN:1;// TRSTn 信号的 27 状态
    Uint16 rsvd6:4;// 31:28 保留
    };

    联合体 DEVICNF_REG{
    UINT32 全部;
    结构 DEVICECNF_BITS;
    };


    此致、

    T. Mori

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

    是、VMAP =1 是 C28x 内核的默认复位状态。

     https://www.ti.com/lit/ug/spru430f/spru430f.pdf 第 41 页对此进行了说明(以及下面的屏幕截图)

    ...

    此致、
    Matthew

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

    您好、Matthew

    感谢您的答复!

    我明白。 问题已经解决。

    此致、

    T. Mori