因为要做计算所以扩了一个大ram,在做测试的时候,借鉴了一个128的code, 参考了https://www.amobbs.com/thread-3992100-1-1.html,可是当buffer大于255时串口就没有输出新消息了目前是protues仿真,我的编译条件没有设置
Linker Options: [size=1em][size=1em]-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[512] __attribute__((section(".xdata")));
int main(void)
{
//uint8_t *mem ;
uint8_t *temp ;
uint8_t index;
uint8_t data=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[index] = data++;
}
// Display memory block
for(index = 0; index < BUFFER_SIZE; index++)
{
PRINTF("%02X ",temp[index]);
if((index&0x0F) == 0x0F)
{
PRINTF("\n");
}
}
//free allocated memory
free(temp);
while(1)
|