使用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文件那里有问题,担心程序运行也会有问题。
Susan Yang:
请问您是使用的哪个例程?我会在测试后给您回复
user6444549:
回复 Susan Yang:
我使用的是自己的程序,用例程仿真没有出现这个问题,可以正常观察寄存器。
Susan Yang:
回复 user6444549:
那请问能否私信一下您的工程?我们来测试一下,谢谢
user6444549:
回复 Susan Yang:
不好意思,我这边有加密,不太方便。
有解决的思路吗?或者这个问题不影响程序运行
Susan Yang:
回复 user6444549:
您可以看一下GEL文件。该文件指定了板上存在的内存及其属性。在这种情况下,您尝试访问“program”页面上的0x00B4A等。有可能是GEL文件需要更新或者memory map中没有添加相应段或者是设置成为不可读
在调试会话中,可以通过转到“View”菜单并选择“Memory Map”来查看内存映射。在内存映射部分,您应该看到Program,Data和I / O页面的选项卡。
另外您可以参考下面的类似帖子
e2e.ti.com/…/935491
e2e.ti.com/…/522068
user6444549:
回复 Susan Yang:
您好,我查看了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类型,这么理解是否正确。
谢谢。
Susan Yang:
回复 user6444549:
很抱歉回复有些晚了。关于gel文件的作用,您可以看一下之前的分享
e2echina.ti.com/…/105278
以及 TI WIKI页面: processors.wiki.ti.com/…/GEL