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.

[参考译文] CCS/CODECOMPOSER:如何从 CCS 插件读取高内存

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430F5659, MSP-EXP430FR5994, MSP-EXP430F5529LP

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/780290/ccs-codecomposer-how-to-read-high-memory-from-ccs-plugin

器件型号:CODECOMPOSER
主题中讨论的其他器件:MSP430F5659MSP-EXP430FR5994MSP-EXP430F5529LP

工具/软件:Code Composer Studio

Code Composer Studio 版本: 版本:8.3.0.00009

主机操作系统:Windows 10 64位

处理器:MSP430F5659
处理器选项:mspx、大数据和代码模型

调试器:MSP-EXP430F5529LP 和 MSP-EXP430FR5994

我正在尝试为需要读取高内存(地址0x10000或更高)的 CCS 编写插件。

我可以通过以下代码片段读取低内存:

long startAddress = 0x8000; 

long toRead = 0x10;

IMemoryBlockRetrieval memoryblockretr =(IMemoryBlockRetrieval) context.getAdapter (IMemoryBlockRetrieve.class);
IMemoryBlockExtension memoryblock =((IMemoryBlockRetrievalExtension) memoryblockretr).getExtendedMemoryBlock (long.toString (startAddress)、(Object) context);
MemoryByte[] bytes= memoryblock.getBytesFromAddress (memoryblock.getBigBaseAddress ()、toRead);

它适用于 MSP430X 中的 RAM 和闪存。

但是、当我将 startAddress 更改为0x10000、0x18000或0xf0000时、它会分别从0x0000、0x8000或0x0000读取存储器。 它看起来丢失了4个最高有效位的地址。

从0x0xFF0读取0x20字节正确:我从0xFF0获取到0x10010的字节。

如何从0x10000或更高版本读取存储器?

这是否是与连接的错误

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jakub、
    在使用 MSP430器件上的高内存时、需要考虑一些注意事项。 我将把这个主题移至 MSP 论坛、那里的专家最熟悉这些注意事项。

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

    您好!

    很抱歉、我无法理解该插件。

    但在 MSP430中    、用于访问 20位 地址的汇编代码   与 16位地址有很大不同。 您可以参考这张图片。

    如需更多信息、请参阅我们的用户指南。

    伊斯天

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

    是否可以发布这些函数的反汇编窗口的快照、以查看编译器为访问 MSP 的代码生成的内容?
    通常、正如伊斯迅所提到的、这应该是可能的、因为您使用的是长型自变量、所以它应该起作用。 CCS 存储器窗口也可以在这些地址读取、对吧?
    我只能想到错误的数据类型定义、从而导致编译器无法将其转换为扩展指令。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这与 MSP 汇编语言无关。

    我正在尝试使用 CCS 界面读取存储器。

    getBytesFromAddress 方法的实现方法可在中找到

    正如我说过的、它适用于较低的存储器并截断高存储器地址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、CCS 内存浏览器工作正常。 也就是说、也可以通过插件执行此操作。

    我不知道 CCS 插件如何访问 MSP、也不知道如何在 CCS 中调试插件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还通过调用 getBigBaseAddress()、getMemoryBlockStartAddress()、getBigLength ()、getAddressSize()来检查两种情况下的 memoryblock。 在这两种情况下(低内存和高内存)函数都返回相同的值,需要 getBigBaseAddress()。 getBigBaseAddress()返回正确的地址,而不是截断的地址。 getAddressSize()返回3。

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

    我将与另一位 CCS 专家联系、并将于下周二返回。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    这是一个非常灰色的区域。 我们仍在寻找是否有人可以回答您的问题。
    伊斯天
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jakub、

    抱歉、我正在等待开发团队的确认。

    您似乎使用标准 Eclipse API 来连接 CCS 调试器、但遗憾的是、我们(TI)不对此提供直接支持。 抱歉。

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

    感谢您的回复。

    TI 是否提供了任何允许从地址 y 读取 x 字节数据的 API? 哪一个适用于低内存和高内存?

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

    我们有两个执行内存读取和写入(以及其他函数)的脚本工具接口:
    -脚本控制台、可从 CCS 内部直接访问
    -调试服务器脚本(DSS)、允许从命令行实现完全自动化。

    下面的《脚本编写手册》对这两个选项进行了全面的记录:
    software-dl.ti.com/.../sdto_dss_handbook.html

    @我尚未进行测试、但 TI 完全支持上述两种选项、并且绝对支持在 MSP 器件上进行高内存访问、前提是满足 T Ü V Ki-Soo Lee 介绍的特定条件。

    此致、
    拉斐尔