Other Parts Discussed in Thread: TMS320F2812, CCSTUDIO
器件型号: TMS320F2812
主题: CCSTUDIO 中讨论的其他器件
我的项目目标是 TMS320F2812、我正在使用 CCSTUDIO 12.0 进行开发。 有一个现有的工作系统。 在添加 CSM 功能时、我将堆栈从 L1 移动到 M0-M1、之后系统在使用更多堆栈的特定实例中会遇到堆栈溢出问题。 请在下面找到有关早期可正常工作的器件和最新更新更改的栈配置。
早期工作配置:
在 CCStudio 中通过链接器设置设置设置系统堆栈大小:0x400
为 F2812.cmd 链接器存储器文件中的栈分配了 L1 位置。 除分配的 0x400 大小之外、没有其他代码和数据使用该位置(仅为堆栈分配 2KB、而块的实际大小为 4KB)
RAML1 :origin = 0x009000、length = 0x000800 /*片上 RAM 块 L1 */
.stack :> RAML1 PAGE = 1
最新更改的配置:
在 CCStudio 中通过链接器设置设置设置系统堆栈大小:0x400
在 F2812.cmd 链接器存储器文件中为栈分配了组合的 M0-M1 位置。
RAMM01 :origin = 0x000000、length = 0x000800 /*片上 RAM 块 M0 */
.stack :> RAMM01 PAGE = 1
请查看以下查询:
1.由于工作系统分配的堆栈为 2KB,我想保持相同的堆栈大小。 现在、对于 M0 和 M1 不同的存储器块、我是否可以分配组合 这两个块的 2KB 栈而不会出现任何问题? 用于分配相同内容的链接器.cmd 的代码片段是正确的?
2.如果正确分配了 2KB 组合 M0-M1、则 L1 上现有 2KB 栈正常运行时可能会出现什么问题。
3、在现有的 L1 为 2KB、块物理长度为 4KB 的设置中、如果特定情况下发生堆栈溢出、则不会产生任何问题、因为 L1 的实际长度为 4KB、没有其他器件和代码正在使用该块?
4.除了 M0 和 M1 之外,哪些非安全存储器可用于堆栈,特别是在启用 CSM 时?
5.我们能否将 L1 用作堆栈,而 CSM 安全性仍然启用?
6、同系列中的任何其他设备,其中从 CSM 安全块中省略了 L0 和 L1 ,使得现有的硬件占用空间不需要更改,并且对固件/驱动程序的微小更改是可管理的?