我用CCS3.3编写的程序,编译没有问题,连接的时候报错:
error: can't allocate .gblinit, size 00000029 (page 0) in L03SARAM (avail:00000020)
上网查了,大概原因是程序过大而RAM空间不足。.gblinit是DSP/BIOS Init Tables。
现在的问题是程序为什么会占用BIOS的空间?如果程序过大如何缩减程序的容量?从哪里下手?比如哪些变量类型或者函数会占用空间比较大。
注:硬件已经设计好,所以不可能增加外部RAM。最好在不修改CMD文件的前提下解决问题。
囧:
回复 Eric6:
子函数设置多了,一个会占用.stack段,还会占用.text段和.ebss段,有两个都是在RAM里的,所以会占用RAM,其实最好的方法是用宏的模式去写函数,这样就只会占用FLASH,实时性要求高的子函数可以copy到RAM去
我用CCS3.3编写的程序,编译没有问题,连接的时候报错:
error: can't allocate .gblinit, size 00000029 (page 0) in L03SARAM (avail:00000020)
上网查了,大概原因是程序过大而RAM空间不足。.gblinit是DSP/BIOS Init Tables。
现在的问题是程序为什么会占用BIOS的空间?如果程序过大如何缩减程序的容量?从哪里下手?比如哪些变量类型或者函数会占用空间比较大。
注:硬件已经设计好,所以不可能增加外部RAM。最好在不修改CMD文件的前提下解决问题。
mangui zhang:
可以使用外扩的SDRAM 或者也可以将一些变量化为常量处理
存入到flash中
我用CCS3.3编写的程序,编译没有问题,连接的时候报错:
error: can't allocate .gblinit, size 00000029 (page 0) in L03SARAM (avail:00000020)
上网查了,大概原因是程序过大而RAM空间不足。.gblinit是DSP/BIOS Init Tables。
现在的问题是程序为什么会占用BIOS的空间?如果程序过大如何缩减程序的容量?从哪里下手?比如哪些变量类型或者函数会占用空间比较大。
注:硬件已经设计好,所以不可能增加外部RAM。最好在不修改CMD文件的前提下解决问题。
mangui zhang:
可以使用外扩SDRAM 也可以修改程序将一些大的变量等相常量转换
让其存入flash中