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.
您好!
我们开发了一个在正常闪存上运行的引导加载程序、并处理也写入正常闪存中的客户端应用程序(来宾代码)。
但我们遇到了问题。 虽然如果此代码是以扩展格式编译的(因此处理器可以使用20位寻址、因此所有可用 ROM)、引导加载程序可以运行来宾代码、但当我们的引导加载程序跳转到执行代码时、加载使用"正常"标志编译的来宾代码(不带地址扩展)、它 停止运行...
我对这个问题的看法是、MCU 在扩展指令上运行、然后中断、因为它认为下一条指令也扩展了、但它们没有扩展。
我在这里的问题是、我能否使用汇编语言(或 C)来切换 MCU、以及如何操作? 我知道 MCU 始终正常启动、但它无法仅通过 CC 的十六进制代码输出从"扩展"切换回正常状态。
提前感谢您、
这不是程序中的错误... 由于程序是单独运行的(程序是闪烁 LED,有 nop 延迟)....
停止运行意味着它会跳转到客户代码、但随后它会将其自身锁定在循环中、而不运行任何内容... 如果我复位、MCU 将照常从我的引导加载程序启动
请以该示例为例
GuestStart ->[0、1、2、3、4、5、6、7、8、9]
如果这是我的 ROM 存储器、它包含 IS 和数据、则会发生以下情况:
如果我运行16位:
引导加载程序加载 PC<-*GuestStart
处理器不会开始将指令解释为[0、1];PC+2;执行[2、3];PC+2;执行[3、4]等
而不是像它应该的那样运行[0];PC+1;[1];PC+1;[2]; PC+1……?