mega64 外接ram62256
因为要做计算所以扩了一个大ram,在做测试的时候,借鉴了一个128的code,参考了https://www.amobbs.com/thread-3992100-1-1.html,可是当buffer大于255时串口就没有输出新消息了目前是protues仿真,我的编译条件没有设置Linker Options:
-Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x8030ff是不是这里的问题还是默认8K,是不是要修改成32k
MCUCR = 0x80; //bit7设为'1',使能外部存储器接口
XMCRA = 0x00;
XMCRB |= 0x02; // 释放PC7,作为通用I/O引脚使用
DDRC=0xff;
PORTC = 0x00;
#define BUFFER_SIZE 512 这里大于255就没有输出了,为什莫
#define PRINTF(format, ...) printf_P(PSTR(format), ## __VA_ARGS__)
int temp __attribute__((section(".xdata")));
int main(void)
{
//uint8_t*mem ;
uint8_t*temp ;
uint8_tindex;
uint8_tdata=1;
// Initialise USART
printf_init();
// Send string
PRINTF("AVR XMEM test\n");
XMEM_init();
PRINTF("XMEM init\n");
temp =malloc(BUFFER_SIZE);
PRINTF("Allocating 256 bytes space in ext ram\n");
PRINTF("%d Byte buffer (starting at 0x%04X) filled with incrementing numbers:\n",BUFFER_SIZE,temp);
// Fill memory incrementing values
for(index = 0; index < BUFFER_SIZE; index++)
{
temp = data++;
}
// Display memory block
for(index = 0; index < BUFFER_SIZE; index++)
{
PRINTF("%02X ",temp);
if((index&0x0F) == 0x0F)
{
PRINTF("\n");
}
}
//free allocated memory
free(temp);
while(1)
页:
[1]