主题中讨论的其他器件: MSP430FR5969
有人能告诉我通过调试器运行应用程序、停止它以查看内存浏览器并尝试重新启动时是否有问题吗??...每次我这么做时, 我将调试器重置为代码开头并再次点击“运行”...它似乎正在运行,但我无法再设置断点或任何内容。 我必须重新加载固件才能到达任何地方
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.
有人能告诉我通过调试器运行应用程序、停止它以查看内存浏览器并尝试重新启动时是否有问题吗??...每次我这么做时, 我将调试器重置为代码开头并再次点击“运行”...它似乎正在运行,但我无法再设置断点或任何内容。 我必须重新加载固件才能到达任何地方
它位于0x1800附近的永久信息中
#pragma DATA_SECTION (DEAL_Info、".info") char permany_Info[5]={[0 ... 4]= 0xFF}; #pragma RETAIN (DEAL_Info) #pragma DATA_SECTION (白名单、".info") char 白名单[HASE_NOM_SENSORS]={[0 ... (HASH_NOW_SENSORS - 1)]= 0xFF}; #pragma RETAIN (白名单)
当我将节点加入到客户端或在网络中移动数据时、这两个部分会被修改。 当我在调试代码时、如果我断开某个位置、我需要检查这些区域以查看我可能打开的通道。 我在这一空间看,然后尝试继续使用调试器,我似乎知道运行时间更长..... 现在、我假设我的代码可以以这样的方式编写、以便在调试器停止时导致代码丢失 ISR 或不清除数组、并使代码在某个位置闪烁到空间??? 无论如何、我发现我再次单击"Run"、但如果我尝试在这之后放置一个断点、则不会执行该操作。 我被强制重新加载代码。
我没有 MSP430FR2355、而是在 CCS 中使用 MSP430FR5969进行了调查 10.1.1.00004。使用了一个简单的程序、它使 TIMERB1_ISR 切换 LED。
如果显示的存储器浏览器从地址 0x01800开始( 即信息存储器(FRAM)的起始地址)、则程序在恢复时继续正常运行:
如果暂停后、存储器浏览器会向上滚动、以便地址0x01740为起始地址、则在恢复时程序不再正确执行、因为 LED 不再切换:
使用的示例不访问信息存储器。
[引用 user="Steve Wenner">在我查看此空间的那一刻、然后尝试继续使用调试器、我似乎知道运行时间更长在您的故障情况下、存储器浏览器中显示了哪些地址范围?
[引用 user="Steve Wenner">我被迫重新加载代码。在对我的示例进行进一步调查时发现、使用内存浏览器的行为可能会损坏 FRAM 中的程序。
可以使用 Run -> Load -> Verify Program 菜单选项来验证程序是否完整。
验证从地址0x01800开始的存储器浏览器显示时通过的程序、此时我可以暂停并恢复继续运行的程序。
但是、在程序暂停的情况下:
a.在"Memory Browser"窗口中向上移动光标、将显示的第一个地址从0x01800更改为0x017E8。
B.在不恢复方案的情况下,进行了另一次失败的核查,并报告:
[引用] MSP430:文件加载器:验证失败:地址0x0FF80处的值不匹配请验证目标存储器和存储器映射。[/quot]您能否在显示的存储器浏览器中执行验证程序、并查看是否报告了验证失败?
不确定我是否创建了相同的故障。
[引用 user="Steve Wenner">当我将节点加入客户端或在网络中移动数据时,这两个部分会被修改。 当我在调试代码时、如果我断开某个位置、我需要检查这些区域以查看我可能打开的通道。 在我观察这个空间的那一刻、然后尝试继续使用调试器、我似乎知道运行时间更长验证错误中报告的错误的地址是0x01810、它是信息内存中的一个初始化部分、正在运行的程序会修改该部分。 因此、信息存储器中的验证错误不是程序损坏的迹象。
如 CCS/NFC-DATALOGGER-EVM 所述:CCS 9.1验证程序是否可以配置为检查所有部分、而不是在第一个错误时停止? 验证在第一个错误上停止、这使得调试此类问题变得困难。
您能否:
a.下载程序、但内存浏览器未显示。
b.在以下情况之前暂停程序:IS 已修改 信息存储器中的 permany_Info[]和白名单[]的内容。
c.执行验证。
d.打开地址0x01800处的内存浏览器。
e.执行另一次验证。
C 和 E 之间的区别是尝试并确定内存浏览器是否破坏程序。
调试问题的解决方法可能是尝试使用表达式视图仅显示 permany_Info 和白名单数组的内容。 而不是内存浏览器。
表达式窗口的工作方式...
案例1:只擦除主存储器(Project - Properties - Debug - MSP430 Flash Settings)……
执行步骤 A - C。 设置 program_Info (0x1810)后立即设置断点。 查看内存正常。 按运行按钮、代码不会在下一行断点处停止。 在 LPM3等待时、按下暂停代码停止、播放按钮呈绿色、代码停止。 然后,我点击“重置”,绿色的“播放”按钮永远不会再次突出显示(只突出显示暂停和停止),代码也不会返回到开头......
案例2: 擦除主内存、信息内存和受保护内存(项目-属性-调试- MSP430闪存设置)....
与情况1相同...重置按钮不再重置代码
案例3: 擦除主内存、信息内存和受保护内存 (项目-属性-调试- MSP430闪存设置)....
保持内存浏览器打开并处于最前沿...下载代码。 转至(运行-加载-验证)...立即获取错误:
MSP430:文件加载器:验证失败:地址0x08104处的值不匹配请验证目标存储器和存储器映射。
地址看起来是随机的...上次看到0x08114。
这里发生什么事了? 有时,当我加载应用程序并在启动任何内容之前查看内存浏览器时,永久性信息中似乎有0或其他数字,但我设置的所有其他信息内存块看起来都很好。。。
[引用用户="Steve Wenner]Address 似乎是随机的...上次看到0x08114。是的、我还看到了多次尝试时报告的验证失败更改地址。
[引用用户="Steve Wenner">这里会发生什么情况? 有时,当我加载应用程序并在启动任何内容之前查看内存浏览器时,永久性信息中似乎有0或其他数字,但我设置的所有其他信息内存块看起来都很好...我还没有确定到底发生了什么。
虽然我使用内存浏览器的行为破坏了 FRAM、但现在不确定是因为验证错误。 这是因为:
[引用用户="Steve Wenner">这里发生了什么?不确定我是否已经完全解释了您看到的问题、但提高 了 CCS/MSP-EXP430FR5969:如果 CCS 调试器访问 MSP430 FRAM 器件中受保护的 ROM BSL 区域、调试程序将失败
我打算在 CCS 论坛上提出问题、但不知怎么会在 MSP 论坛上提出问题。
您好!
我刚刚尝试了一些行动。 (Win10/CCS9.10/MSP430FR2355 LaunchPad/UART_01示例代码)
我刚刚在 LPM3之前的任何点上添加了一个断点、当中断时、进行存储器浏览@0x1800。 并从内存浏览器读取上部或下部内存。 然后从断点运行、它可以正常运行。
我认为这不会通过内存浏览器的操作导致任何复位。 唯一的考虑因素是在刷新存储器期间、数据连接很容易由于大数据传输而损坏、这会导致 CPU 无法正确保持、然后在执行操作后 PC 不匹配、因此调试器请求重新加载。
为了检查是否存在任何 FRAM 问题或调试器问题、您可以读取 FRAM、然后与原始 FRAM 进行比较。