你(们)好 我想把头缠绕在一些东西上。
1) 1)数据表显示 SRAM 从0x2000.0000开始、到0x2006.FFFF 结束、但这远远超过了该芯片应有的256KB。 我不担心、但是否有特定原因或我看不到的东西?
2) 2)链接器命令文件显示:
SRAM (rwx):origin = 0x20000000,length = 0x00040000
.vtable :>0x20000000
然后、我将尝试堆栈大小、在这里、我尝试一个非常小的堆栈:
__STACK_TOP =__STACK + 128;
当我进行调试时、_stack 看起来位于0x2001.98B8、并取消引用它指向0x2001.9634。
那么、为什么它不会更接近0x2000.0000呢? 堆栈不应该"太多了?" 矢量表后面?
3) 3)程序启动时、SP = __STACK_TOP = 0x2001.9938、这恰好比0x2001.98B8高128字节(我的堆栈大小)、但我感到困惑 的是,我认为0x2001.98B8是__STACK 存储器中的位置,但值为0x2001.9634,值应该是什么。
在我的观察窗口中、它显示:
值为0x2001.98b8{0x2001.9634}的 int*类型的"__STACT"、未提供地址
然后、我展开该表达式、它说:
值为0x2001.9634且地址 为0x2001.98b8的 int 类型的"(x)=*(_stack)"。
我知道这听起来非常令人困惑、但我想观察窗口会混淆地址和价值。
4) 4) 当我选择的变量被写入或更改为某个值时、我可以设置断点、还是无法设置断点?
5) 5) 当 SP 达到或低于_stack 时、如何设置断点
供参考我没有堆栈溢出问题,但我想更详细地理解这些内容,以便我成为一个优秀的程序员:)

