Embedded PIC24读或写内存访问上的断点

Embedded PIC24读或写内存访问上的断点,embedded,pic,mplab,pic24,Embedded,Pic,Mplab,Pic24,我的环境 图24 MpLab(第8.80节) ICD 3 我有一个字节,我想观察,看看哪些例程在读,哪些例程在写,什么时候发生 我只能在上设置断点 写入字节时,或 阅读时 有人知道我可以在任何一个访问上设置断点的方法吗?i、 例如,我想看看写什么,读什么,按什么顺序,按什么指令,按什么程序 我只有一个Pickit3和这个ICD-3。这是一个双处理器系统,其中两个芯片通过一些连接到各自UART的电线(最终通过外围引脚选择)进行通信 我从来没有用过,也没有碰过,甚至没有见过真正的冰。这允许我

我的环境

  • 图24
  • MpLab(第8.80节)
  • ICD 3
我有一个字节,我想观察,看看哪些例程在读,哪些例程在写,什么时候发生

我只能在上设置断点

  • 写入字节时,或
  • 阅读时
有人知道我可以在任何一个访问上设置断点的方法吗?i、 例如,我想看看写什么,读什么,按什么顺序,按什么指令,按什么程序

我只有一个Pickit3和这个ICD-3。这是一个双处理器系统,其中两个芯片通过一些连接到各自UART的电线(最终通过外围引脚选择)进行通信

我从来没有用过,也没有碰过,甚至没有见过真正的冰。这允许我这样做吗?i、 例如,任何总线内存访问

这就是MpLab让我现在使用ICD-3所做的

能否将变量封装在一个新的.c文件中,如下所示。在头文件上设置define

它可能有点重,但换个新的可能会有帮助FILE是编译器标志,让您知道源代码上的哪个文件以及在哪个行调用它。Nop();这是因为中断可能发生很少的指令延迟

在文件和行中添加一个手表,以查看从何处调用它

#define setvar(x) zsetvar(x, __FILE__, __LINE__)
#define getvar() zgetvar( __FILE__, __LINE__)


byte my_var;

void zsetvar(byte val, volatile char * file, volatile char * line)
{
 my_var = val;// set breakpoint
 Nop(); 
}
byte zreadvar(volatile char * file, volatile char * line)
{
 Nop(); //set breakpoint
 Nop();
 return my_var;
}

难道你不能设置两个断点,一个用于“读”和“写”吗?不,当我尝试你的建议时,我得到一个消息框,
即使有“高级断点”,地址NNNN也已经有一个断点了?我想我没有“高级断点”。我编辑了我的原始帖子,其中包括了MpLab在这里提供的内存断点选项的屏幕上限。你有例程的源代码吗?如果是,您可以使用eclipse来实现这一点:变量上的Ctrl+Alt+H将显示哪些函数读取和写入变量。通过简单地将代码复制到一个新的eclipse项目(确保启用了索引)来尝试。