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.
尊敬的先生:
我们是否可以将堆栈地址从 RAM M1更改为其他 RAM 组以增加堆栈大小?
.stack :> RAMM1,<------------------ 更改为 GS6并获得编译错误
RUN_START (_HWI_STKBOTTOM)、
RUN_END (_HWI_STKTOP)、
页= 1.
我们的软件结构中有引导加载程序和主程序。 它们是不同的 CCS 程序项目。
BOOLOADER 位于0x80000处、mainprogram 位于0x88000处。 引导加载程序将检查 DIP 开关、以决定是停留在引导加载程序中还是跳转到主程序。
我们认为、引导加载程序可能会使用太多的局部变量。 我们是否需要在跳转到 mainprogram 之前执行"堆栈复位"?
===代码片段===
PLCAppEntryAddr = 0X00088000;//在 SectorE 处运行主程序
if (MODE_0=1 && MODE_1=1)//跳转到 PLC 主应用程序
{
MSG="\r\n\r\n MCU 引导加载程序跳转至主程序\0";
scib_msg (msg);
if (PLCAppEntryAddr)
{
<<do "stack reset">><------------------ 如何在此处进行堆栈复位?
((void (*)(void)) PLCAppEntryAddr)();
}
=========== 结束===
Eddie
您好!
堆栈必须放置在64K 边界内、因此编译器将引发错误。
进行堆栈分配时、您可以尝试使用 RAMGS0、而不是 RAMGS6。
此致
Siddharth
Jason 说:我们是否需要在跳转到 mainprogram 之前执行"堆栈重置"?
您的主程序是否会编译并链接 F2837xS_CodeStartBranch.asm? 如果是这样,这将调用启动例程,即_c_init00()。 启动例程负责初始化堆栈。 实际上、它是第一条指令:
MOV SP,#__stack ; set to beginning of stack space
因此、我认为、在开始培训之前、也许您不需要更改 SP。
您好!
您还可以组合 RAMM0和 RAMM1并将其用于堆栈。
此致
Siddharth