我使用原子的内存管理函数,u8 *net_data_X;
u8 *net_data_W;
net_data_X=mymalloc(2,1200);//2:CCM区 0:内部RAM 1:外SRAM
if(net_data_X!=NULL)
{
for(num=0;num<1200;num++) net_data_X[num]=0x89;
}
// net_data_X申请正常
net_data_W=mymalloc(1,1200); //2:CCM区 0:内部RAM 1:外SRAM
if(net_data_W!=NULL)
{
for(num=0;num<1200;num++) net_data_W[num]=0x99;
}
for(i=0;i<1200;i++)
{
FSMC_SRAM_WriteBuffer((net_data_X+i),i,1);
}
for(i=0;i<1200;i++)
{
FSMC_SRAM_ReadBuffer((net_data_W+i),i,1);
}
编译后正常,可以将X数组内容写入到外存的指定区域,经实验FSMC总线读写外存没有问题,如果将net_data_W数组定义到CCM区就正常,但是从外存的指定区域读取的数据无法拷贝到在外部内存池申请的数组net_data_W中,这是怎么回事?就是说 net_data_W=mymalloc(1,1200); //2:CCM区 0:内部RAM 1:外SRAM 外存内的数组net_data_W数据都是错的无法正常使用?
困扰我很久,麻烦指点一下,多谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
感谢原子哥的回复:FSMC初始化没有问题,使用attribute at 定义外存地址,可以通过FSMC对外存数组进行正常操作,但是mymalloc函数还是不好使,继续研究中
一周热门 更多>