Embedded 嵌入式c内存不足
Hii我是嵌入式C编程的初学者,正在使用code composer studio在launchpad MSP430上构建项目。但在该板上构建项目时,我收到错误消息:“没有有效的内存范围(null)可用于放置.text” 下面是我的代码:Embedded 嵌入式c内存不足,embedded,Embedded,Hii我是嵌入式C编程的初学者,正在使用code composer studio在launchpad MSP430上构建项目。但在该板上构建项目时,我收到错误消息:“没有有效的内存范围(null)可用于放置.text” 下面是我的代码: SECTIONS { .bss : {} > RAM /* GLOBAL & STATIC VARS */ .data : {} > RAM
SECTIONS
{
.bss : {} > RAM /* GLOBAL & STATIC VARS */
.data : {} > RAM /* GLOBAL & STATIC VARS */
.sysmem : {} > RAM /* DYNAMIC MEMORY ALLOCATION AREA */
.stack : {} > RAM (HIGH) /* SOFTWARE SYSTEM STACK */
.text : {} > FLASH // Here it says program will not fit into
// available memory. placement with alignment
// fails for section ".text" size 0x499a.
.cinit : {} > FLASH /* INITIALIZATION TABLES */
.const : {} > FLASH /* CONSTANT DATA */
.cio : {} > RAM /* C I/O BUFFER */
.pinit : {} > FLASH /* C++ CONSTRUCTOR TABLES */
.init_array : {} > FLASH /* C++ CONSTRUCTOR TABLES */
.mspabi.exidx : {} > FLASH /* C++ CONSTRUCTOR TABLES */
.mspabi.extab : {} > FLASH /* C++ CONSTRUCTOR TABLES */
.infoA : {} > INFOA /* MSP430 INFO FLASH MEMORY SEGMENTS */
.infoB : {} > INFOB
.infoC : {} > INFOC
.infoD : {} > INFOD
“MSP430启动板”是用于具有16、64或128Kb闪存的启动板的名称。您的.text
段略大于18Kb。如果你有一块16Kb的电路板,它当然不适合
您可以尝试应用编译器优化,但这会影响调试应用程序的容易程度。还可以在源代码级别提高代码的空间效率,特别是如果您链接了大型或复杂的库(如C math或stdio),或者使用了可以使用整数或定点的浮点操作 txt部分包含程序段,并最终登录到微控制器的闪存中。此处代码的文本部分大于可用空间。该错误的可能原因: 您没有为此使用正确的链接器脚本文件 控制器,或者您的代码太大,无法放入.txt文件 所以试着用一个简单的代码来构建它, 如果运行正确,则链接器脚本文件正常,否则错误的原因是代码大小, 在这种情况下,你有两个选择。 1-优化代码以减小其大小。 2-修改链接器脚本文件并增加
.txt节与其他flash节(如Const data节)相比,这些都是secrion,但为了理解,我们需要代码和节的大小。你能粘贴你的链接器脚本和地图文件吗?