我将软件分为两部分:引导加载程序(不带 RTX)、带 RTX 的应用程序映像。但是引导加载程序无法使用 RTX 加载应用程序映像。Flash 设置如下:
-------------------------------------------------- ------------------ 起始地址大小 IROM 1: 0x08000000 0x2800 - 引导加载程序(无 RTX) IROM 2:0x08002800 0xD000 - 应用程序映像(带有 RTX)
我测试了 3 种方法:(1)使用另一个没有 RTX 的应用程序。引导加载程序可以成功加载应用程序。
(2) 使用 RTX 项目 IROM 设置更改应用程序。我将应用程序项目 IROM 起始地址从 0x08002800 更改为 0x08000000。我将应用程序映像从地址 0x08000000 下载到闪存中。图像可以从 0x08000000 成功运行。
(3) 应用映像 IROM 起始地址设置为 0x08002800。将bootloader和app镜像下载到flash后,我在keil中一步步调试app项目。我发现有一个“osTimerthread 堆栈溢出”错误。然后主线程栈也溢出了。我试图增加堆栈大小,但它不起作用。我发现该应用程序在 RTX 内核切换中表现得很明显。所有线程都处于等待状态,并且没有运行。
ps,我在keil调试的时候,test item(2)在内核初始化的时候也会出现栈溢出错误。item(2) 到目前为止工作正常。所以我只是把任何需要的信息放在这里。