mymalloc函数在外存池申请数组无法正常使用

2019-07-20 06:24发布

我使用原子的内存管理函数,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数据都是错的无法正常使用?
困扰我很久,麻烦指点一下,多谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
zds0311
2019-07-20 10:09
zds0311 发表于 2018-8-24 11:27
感谢原子的点睛,原子内存管理实验可以在原子开发板运行环境下正常malloc出地址,通过J_LINK仿真可以正常 ...

外存申请,原子的TCP_sever程序和内存管理程序一点问题没有,问题出在我自己的程序上,由于我原来没有使用407的外存,有些管脚配置和407的FSMC冲突,尽管我屏蔽了一些初始化,但是跟 FSMC_SRAM_Init();                mymem_init(SRAMIN);                mymem_init(SRAMEX);   mymem_init(SRAMCCM);三条语句在程序中的位置有关,通过调整位置可以正常使用mymalloc申请外存,怀疑访问的地址线被某些初始化干扰,等正式写程序的时候,我再注意一下!通过这几天的折腾FSMC访问外存和内存管理深入明白了,感谢原子的回复!

一周热门 更多>