DSP 怎样将变量放在自定义的段中 如BSS段在DARAM中,如扩展RAM 是SARAM,我需要定义的变量不在DARAM中

DSP 怎样将变量放在自定义的段中 如BSS段在DARAM中,如扩展RAM 是SARAM,我需要定义的变量不在DARAM中,第1张

首先确定你扩展存储器映射在哪个空间中。然后在cmd文件中memory花括号里写出存储器的起始地址以及存储器空间大小,并为该存储空间命名。假设saram大小是256k,起始地址是0x8000 0000。则可以写为

SARAM:origin=0x8000 0000,length=0x00040000

然后将sections花括号中.bss:>DRRAM修改为.bss:>SARAM即可

编译器自动把变量分配到可读写空间上的任意位置

DSP的所有变量,函数,以及程序员定义的地址都保存在这三片空间上,程序员在定义变量时,若没有特殊规定,则编译器自动把变量分配到可读写空间上的任意位置,所以当程序员使用int*p=0x00810000;

这种语法的时候,很有可能会覆盖掉程序保存变量和函数的空间,导致程序运行异常,因此需要一个.cmd文件来约束,哪些地方用来给程序员自己定义变量地址用,哪些地方用来给程序为变量和函数申请内存来用。

嵌入式的设备如DSP上的栈空间是Kb级别,在函数内定义数组或申请空间都不能像linux下那样直接定义和申请,要么定义成全局的,要么指向一块划分好的空间,否则就会造成覆盖代码段等的问题。

I/O空间地址声明 要在程序中访问io空间地址,必须首先用关键字“ioport”对要访问的地址进行定义。 语法:ioport t ype porthex_num ioport 声明io空间端口变量的关键字; type 变量类型,可以为char, short, int或unsigned int; porthex_num 端...


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8044999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存