AVR-GCC中将变量分配到外部RAM
来源: 芯艺工作室
本站广告
  ENC28J60+uIP DHCP动态获取IP及UDP广播服务端示例
  ENC28J60+uIP 基于TCP的MODBUS IO示例
  C720H5上实现MODBUS远程IO
  ENC28J60+uIP HTTP GET方式将温度数据上传到web服务器
  FM1702读写S50(也叫M1)卡相关资料

这是通过定义一个自己定义段来实现的,下面程序中我定义的段名叫".xdata",程序如下:


//mian.c
#include <avr/io.h>

unsigned char g_xx[10] __attribute__((section(".xdata")));

int main(void)
{
  int i;
  
  /*
    这里要做一些初始化工作用于访问外部RAM.........
  */
  for(i=0;i<10;i++)
   g_xx[i]=i;
   
  while(1);
}


在MAKEFILE中找到以下内容:


#---------------- External Memory Options ----------------

# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# used for variables (.data/.bss) and heap (malloc()).
#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff

# 64 KB of external RAM, starting after internal RAM (ATmega128!),
# only used for heap (malloc()).
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff

EXTMEMOPTS =



并将最后一行改为:


 EXTMEMOPTS = -Wl,--section-start,.xdata=0x801100 



这里0x801000为此段的开始地址,
对于ATMEGA128来说0x1100为外部RAM开始地址。



声明:芯艺工作室(http://www.chipart.cn)保留所有权力,转载请注明出处!

芯艺工作室    蒙ICP备06005492号

Copyright© 2004-2020 ChipArt Studio All Rights Reserved