Part Number:TMS320F28388D
工程师好,我是在c语言转化为c++的过程中出现问题,改完后显示内存溢出,经过调整,能够顺利编译。程序在flash运行,可以正常生成.out文件,但在烧录时CPU1正常烧录,CPU2烧录完后CPU2会自动running,
这时暂停CPU2,显示No source available for "_system_post_cinit() at E:/28388D\DSP\MCPU2H\CPU2_FLASH\MCPU2H.out:{3} 0x3fb559{4}"
使用的是ccs11.1。是哪部分有问题,或者有哪些可能遇到问题的地方。
谢谢。
Daniel:
您好
针对你提到的TMS320F28388D在C语言转化为C++过程中出现的内存溢出问题,以及烧录时CPU2自动运行并显示“No source available for '_system_post_cinit()'”的错误,这里有几个可能的原因和解决方案供你参考:
内存溢出问题:
内存分配:在C++中,内存分配比C更为严格,特别是涉及到动态内存分配时。确保在C++代码中正确使用了new和delete,或者智能指针(如std::unique_ptr、std::shared_ptr)来管理内存。
对象大小:C++中的对象可能比C中的结构体占用更多内存,特别是当对象包含虚函数或继承自其他类时。检查是否有不必要的对象复制或过大的对象数组。
编译器优化:CCS11.1可能在C和C++模式下使用不同的优化策略。尝试调整编译器优化设置,看是否能解决问题。烧录和调试问题:
初始化代码:_system_post_cinit()是系统初始化后的一个回调函数,通常用于执行用户定义的初始化代码。如果该函数没有源代码可供调试,可能是因为它是库函数或链接到了其他模块。检查你的项目设置,确保所有必要的源文件都已正确链接。
多核同步:TMS320F28388D是一个多核处理器。确保在CPU1和CPU2之间正确同步了初始化代码和数据。使用核间通信机制(如IPC、共享内存等)时,要特别注意数据一致性和访问权限。
调试设置:在CCS中,检查调试配置是否正确设置了目标设备、内存映射和断点。有时,不正确的调试设置会导致无法正确加载或调试程序。