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.
我使用的是 CCS 版本9.0.1、XDCtools 3.32.0.06_core、TI RTOS 2.16.1.14。
使用编译器 v18.12.1.LTS 时、更改内存时会遇到不同的运行时问题:
例如、
-当使用记录数量较少的 Logger Buffer 时,堆缓冲区在主启动时已进行负分配,但堆缓冲区失败。
-如果将默认堆缓冲区增加太多、则会导致代码在到达 main 之前卡住。
-将堆内存大小增加到超出特定级别会导致类似的问题。
显然、存储器空间没有问题、 我通过 CMD 文件分配、并具有足够的可用空间
使用编译器 v18.1.0.LTS 时、这些问题消失。
您好、Dudi、
感谢您的参与。 我已将此事指派给了我们的专家,专家将随后作出答复
此致、
Peter
我认为我们需要进行一些调试、以尝试缩小正在发生的情况。 从您观察到的情况来看,在到达 main()之前,它是否看起来有问题? 比如、c_int00或某些 SYS/BIOS 启动函数出现问题?
您是否尝试过22.6.0.LTS 等任何更新的编译器版本、以查看问题是否仍然存在?
惠特尼
我尝试过许多其他编译器、包括22.6.0.LTS。
18.1.0.LTS 下的编译器工作正常、但其他编译器有问题。
v22.6.0.LTS 需要更新的 XDCtools、但我不想进行许多更改。
器件和编译器与 XDCtool 之间是否存在兼容性列表?
下面是描述 XDCtools 与 CCS 兼容性的 html。
使用编译器22.6.0.LTS 时:
无法 使用 XDCtools 3.55.0.11进行编译、但可以 使用3.32.0.06进行编译。 (虽然我收到了要求使用大于3.50的 XDCtools 的错误消息:()
2.当使用 XDC 3.32.0.06时、它运行正常、直到我将一个堆内存从128更改为512。
这不是空间问题,我有足够的空间。
为什么将堆内存从128增加到512会导致运行时失败、可能是堆出现故障
您能描述运行时失败吗? 它是在 BIOS_start()之后发生的,还是在读取 main()时遇到问题?
您使用的是 COFF 还是 EABI?
惠特尼
故障发生在 main 之前、我在 ROV 下看到一些堆具有负值。 有时故障发生在 BIOS_start 之后。
看起来它与编译器分支相关、它一直工作到编译器版本18.1.0.LTS、但从版本18.9.0.STS 开始、问题出现。
我正在使用 COFF。
谢谢、
意味着相同的.out 文件发生故障时、每次运行代码时、可能会在代码中的不同点失败? 或者,您是否对代码进行了一些更改,以确定代码是否将其转换为 main()?
具有负值的堆意味着什么? 什么字段? 您是否介意共享 ROV 的屏幕截图?
惠特尼
很抱歉这么简约。
更改代码会导致不同的故障、例如增大我使用的堆内存大小、导致卡在 main 之前。 日志缓冲区记录的不同值可能会导致 堆缓冲区的 ROV 负值中出现。 我确定10条20个字的记录,并在位于 main()的乞讨时看到-9。
看起来与编译器版本 18.9.0.STS 不同、这会导致我的代码中出现不同的内存分配问题。
您能否在 HeapMem_init()函数中放置一个断点、并尝试查看堆如何使用18.9.0.STS 和18.12.1.LTS 进行初始化之间是否存在差异? 我想知道对象初始化是否不正确、或者以后是否出现错误。
您是否认为您可能能够创建重现此问题的测试项目? 比如、如果你导入 SYS/BIOS"内存"示例并使用相同的选项配置堆、你能不能让它们给出相同的错误行为?
惠特尼