程序少的时候,还不会有问题,随着写的程序越来越多,计算量变大,就会提示以下错误:
我看了cmd文件,IQmath 分配在了PRAMH0,而PRAMH0 : origin = 0x3f8000, length = 0x001000,长度应该够用啊,为什么可以用的只有0x0000b3呢?我把长度改成了0x002000,把DRAMH0 : origin = 0x3f9000, length = 0x001000改成了DRAMH0 : origin = 0x3fa000, length = 0x001000编译没有错误。可是运行程序之后,查找不到变量了,这是怎么回事?cmd文件应该如何正确分配?在线等工程师解答,谢谢!!(附上我的SRAM.cmd文件)
Hank Zhao:
你好,你查看一下map文件中的各个段的实际分配情况。
HD21425 HD21425:
我看了你的CMD文件,你的PRAMH0不是只存放IQmath,还有其他很多东西,text,reset,cinit都存放在了这里,所以你可以看一下你的map文件,看里面的PRAMH0的used长度是不是已经用完,如果是,你可以考虑换个区间重新分配。
wei zhang9:
回复 Hank Zhao:
"/* Allocate program areas: */ .reset : > PRAMH0, PAGE = 0 .text : > PRAMH0, PAGE = 0 .cinit : > PRAMH0, PAGE = 0 "
"IQmathTables : load = BOOTROM, type = NOLOAD, PAGE = 0 IQmath : load = PRAMH0, PAGE = 0"实际分配情况也没有具体数值阿,难道是随机分配吗?谢谢解答
Hank Zhao:
回复 wei zhang9:
工程文件编译后在工程中会产生一个.map文件,会列出各个段在存储器中的实际分配情况,CMD文件是用户来配置的,map文件显示的是配置的结果。