【发布时间】:2017-01-10 05:40:23
【问题描述】:
我将软件分为两部分:引导加载程序(不带 RTX)、带 RTX 的应用程序映像。 但是引导加载程序无法使用 RTX 加载应用程序映像。 Flash 设置为:
-------------------------------------------------- ------------------ 起始地址大小 IROM 1: 0x08000000 0x2800 - 引导加载程序(无 RTX) IROM 2:0x08002800 0xD000 - 应用程序映像(带有 RTX)我测试了 3 种方法: (1) 使用另一个没有 RTX 的 App。引导加载程序可以成功加载应用程序。
(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) 到目前为止工作正常。所以我只是把任何需要的信息放在这里。
【问题讨论】:
标签: arm rtos keil cortex-m3 rtx