1回答

0收藏

[每日一帖]分享一段测试RAM大小的代码~~~~~~~

STMCU STMCU 2876 人阅读 | 1 人回复 | 2016-08-25

本帖最后由 xinchao 于 2016-8-26 13:42 编辑

      调试STM32时,写了一段测试RAM容量的代码,贴出来大家看看。希望有用,如果你有更好的方法,欢迎分享!

测试过程是这样的;
1.先设定一个容量值。
2.在设定的容量值里,由高地址往低地址依次写入测试数据。
3.再由低地址往高地址依次读出数据进行校验,如果出错,则出错时的地址就是RAM的容量,测试结束;如果没出错则转下一步。
4.增加设定的容量值,转第1步重新测试。

u32 SRAM_Size_Test(void)        //外部内存容量测试(最大测试32MB)
{
        union{
                u8 a[4];
                u32 l;
        }adv;
        u32 add;
        u32 dat;
        u16 size = 0;
        while(size < 0x8000)        //最大测试32MB 要测再大的改此值
        {
                if(size < 0x0800)        size += 256;      // 2MB内 每次加256KB
                else if(size < 0x2000)   size += 2048;     // 8MB内 每次加2MB
                else                     size += 8192;     //32MB内 每次加8MB

                add = size * 1024;
                dat = 66666;
                //------------Write Datas------------
                do{
                        dat += 1234;
                        add -= 4;

                        adv.l = dat;
                        SRAM_WriteBuffer(adv.a, add, 4);
                }while(add > 0);
                //------------Verify Datas-----------
                do{
                        SRAM_ReadBuffer(adv.a, add, 4);
                        if(dat != adv.l) break;
                        add += 4;
                        dat -= 1234;
                }while(add < (size * 1024));

                if(add < (size * 1024)) break;
                else        printf("\r\nSRAM Size %u KB Test OK!", add / 1024);
        }
        printf("\r\nThe SRAM is %u KB", add / 1024);
         return(add / 1024);
}
void FSMC_SRAM_WriteBuffer(u8* pBuffer, u32 WriteAddr, u32 n)
{
        for(; n!=0; n--)
        {
                *(vu8*)(Bank1_SRAM3_ADDR + WriteAddr) = *pBuffer;
                WriteAddr++;
                pBuffer++;
        }
}
void FSMC_SRAM_ReadBuffer(u8* pBuffer, u32 ReadAddr, u32 n)
{
        for(; n!=0; n--)
        {
                *pBuffer++ = *(vu8*)(Bank1_SRAM3_ADDR+ReadAddr);
                ReadAddr++;
        }
}
XinChao
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

halo501

发表于 2016-8-26 10:22:29 | 只看该作者

谢谢分享,保存下来试试
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条