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.

CCS10.1.0 中 watch expressions 中无法读取寄存器映射地址,显示Memory map prevented reading 0x00B4A@Program

Other Parts Discussed in Thread: C2000WARE

使用CCS10.1进行仿真,芯片是280025C,使用C2000Ware 3_02_00_00  ,程序可以正常运行,在用watch Expressions时,出现如图的问题:

在watch寄存器对应的结构体时,出现Memory map prevented reading 0x00B4A@Program的错误,但观察Registers和Memory Browser时,可以看到寄存器对应的地址中是相应的数值的。

如果将Expressions中的结构体中“.”改为“_”,或者直接将Registers添加进Expressions中,可以正常观察。用户自定义部分的内存也可以正常观察。

我怀疑是Expressions错误识别我所添加的寄存器的数据类型,寄存器对应的应该是Data,从Memory Browser中也能看出这点,但Expressions在读取时,将它们视为Program,所以无法正确读取。但这点我不确定,会不会是我的CMD文件那里有问题,担心程序运行也会有问题。

  • 请问您是使用的哪个例程?我会在测试后给您回复
  • 我使用的是自己的程序,用例程仿真没有出现这个问题,可以正常观察寄存器。
  • 那请问能否私信一下您的工程?我们来测试一下,谢谢
  • 不好意思,我这边有加密,不太方便。
    有解决的思路吗?或者这个问题不影响程序运行
  • 您可以看一下GEL文件。该文件指定了板上存在的内存及其属性。在这种情况下,您尝试访问“program”页面上的0x00B4A等。有可能是GEL文件需要更新或者memory map中没有添加相应段或者是设置成为不可读

    在调试会话中,可以通过转到“View”菜单并选择“Memory Map”来查看内存映射。在内存映射部分,您应该看到Program,Data和I / O页面的选项卡。

    另外您可以参考下面的类似帖子

    e2e.ti.com/.../935491
    e2e.ti.com/.../522068
  • 您好,我查看了GEL文件,GEL文件中将寄存器的地址是分配到page Data部分,如图1,

    我最终修改了f28002x_headers_nonbios.cmd文件,增加了Page 0和Page 1 的关键字,将寄存器分配的地址分配到了Page 1部分,也就是Data 部分。这是我参考了280049的headers_nonbios.cmd文件做的修改。修改后和修改前见下图。

    现在可以从EXpressions中正常观察。但我不确定修改headers_nonbios.cmd文件是否会对程序运行造成影响。

    另外我想了解一下GEL文件的作用,是只用在CCS调试仿真过程中进行内存的分配吗?Page 1和Page 0是否只是一种抽象的分配,只是告诉CCS这部分地址是Data类型还是Program类型,这么理解是否正确。

    谢谢。

  • 很抱歉回复有些晚了。关于gel文件的作用,您可以看一下之前的分享

    e2echina.ti.com/.../105278

    以及 TI WIKI页面: processors.wiki.ti.com/.../GEL
x 出现错误。请重试或与管理员联系。