亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sdram_test.c

?? pnx1500 ddr test demo
?? C
字號:
/*
 * sdram_tst.c
 * Verify sdram is functioning
 */
#include <stdio.h>
#include <stdlib.h>
#include <tm1/mmio.h>
#include <tmlib/tmtypes.h>
#include <ops/custom_defs.h>

#include "tm_common.h"

#define DBG(a,b) pci_mem_write32(0x40000000+(a), (b))

#define TRUE 1
#define FALSE 0

int sdram_fail;
int StressSdram;

t_sdram_flipbits(unsigned value, unsigned *start, unsigned len)      /* 64 byte aligned guarranteed */
{
    unsigned *p, v, i, obs, err;

    err = 0;

    p = start;
    v = value;

    for(i = 0; i < (len/sizeof(unsigned)); p++, i++) {
        *p = v;
        v = ~v;
    }


    p = start;
    v = value;

    for(i = 0; i < (len/sizeof(unsigned)); p++, i++) {
        if((obs = *p) != v) {

            err++;
            printf("Read error:    @ 0x%.8x, obs 0x%.8x, exp 0x%.8x, obs ^ exp 0x%.8x\n",
                   (unsigned)(p), obs, v, obs ^ v);

            INVALIDATE(p, 1);

            if((obs = *p) != v) {
                printf("Re-Read error: @ 0x%.8x, obs 0x%.8x, exp 0x%.8x, obs ^ exp 0x%.8x\n",
                       (unsigned)(p), obs, v, obs ^ v);
            }
        }

        v = ~v;
    }

    return err;
}




/*
 * Test sdram by storing address at address
 */
int
   t_sdram_addr(
                Int32   *mmio_base,
                Int32   *begin_p,
                Int32   len
               )
{
    Int32   *end_p ;
    Int32   *ipp ;
    Int32   exp_val ;
    Int32   obs_val ;
    int errors ;

    end_p = (Int32 *) (((char *) begin_p) + len) ;
    errors = 0 ;

/*
 * Fill memory with data==address
 */
    ipp = begin_p ;
    while (ipp < end_p)
    {
        *ipp = (Int32) ipp ;
        ipp++;
    }

/*
 * Check memory with data==address
 */
    ipp = begin_p ;
    while (ipp < end_p)
    {
        exp_val = (Int32) ipp ;
        obs_val = *ipp ;
        if (obs_val != exp_val)
        {
            errors++ ;
            printf("read error:    addr %08x exp %08x obs %08x xor %08x\n",
                   ipp, exp_val, obs_val, exp_val ^ obs_val) ;
            INVALIDATE(ipp,1);
            obs_val = *ipp ;
            if (obs_val != exp_val)
            {
                printf("re-read error: addr %08x exp %08x obs %08x xor %08x\n",
                       ipp, exp_val, obs_val, exp_val ^ obs_val) ;
            }
            if (errors > 5)
            {
                printf("errors > 5, exitting...\n") ;
                exit(errors) ;
            }
        }
        ipp++ ;
    }

    return errors ;
}

/*
 * Test sdram by storing 1's complement of address at address
 */
int
   t_sdram_inv_addr(
                    Int32   *mmio_base,
                    Int32   *begin_p,
                    Int32   len
                   )
{
    Int32   *end_p ;
    Int32   *ipp ;
    Int32   exp_val ;
    Int32   obs_val ;
    int errors ;

    end_p = (Int32 *) (((char *) begin_p) + len) ;
    errors = 0 ;

/*
 * Fill memory with data==~address
 */
    ipp = begin_p ;
    while (ipp < end_p)
    {
        *ipp = (~((Int32) ipp)) ;
        ipp++;
    }

/*
 * Check memory with data==~address
 */
    ipp = begin_p ;
    while (ipp < end_p)
    {
        exp_val = (~((Int32) ipp)) ;
        obs_val = *ipp ;
        if (obs_val != exp_val)
        {
            errors++ ;
            printf("read error:    addr %08x exp %08x obs %08x xor %08x\n",
                   ipp, exp_val, obs_val, exp_val ^ obs_val) ;
            INVALIDATE(ipp,1);
            obs_val = *ipp ;
            if (obs_val != exp_val)
            {
                printf("re-read error: addr %08x exp %08x obs %08x xor %08x\n",
                       ipp, exp_val, obs_val, exp_val ^ obs_val) ;
            }
        }
        ipp++ ;
    }

    return errors ;
}

/*
 * Test sdram with walking ones
 */
int
   t_sdram_walk1(
                 Int32   *mmio_base,
                 Int32   *begin_p,
                 Int32   len
                )
{
    Int32   *end_p ;
    Int32   *ipp ;
    Int32   start_val ;
    Int32   exp_val ;
    Int32   obs_val ;
    int lap ;
    int errors ;

    end_p = (Int32 *) (((char *) begin_p) + len) ;
    errors = 0 ;

    lap = 0 ;
    start_val = 1 ;
    while (start_val != 0)
    {
        printf("    lap %2d\n", lap++) ;

    /*
     * Fill memory with data
     */
        exp_val = start_val ;
        ipp = begin_p ;
        while (ipp < end_p)
        {
            *ipp++ = exp_val ;
            exp_val = exp_val << 1 ;
            if (exp_val == 0)
            {
                exp_val = 1 ;
            }
        }

    /*
     * Check memory
     */
        exp_val = start_val ;
        ipp = begin_p ;
        while (ipp < end_p)
        {
            obs_val = *ipp ;
            if (obs_val != exp_val)
            {
                errors++ ;
                printf("read error:    addr %08x exp %08x obs %08x xor %08x\n",
                       ipp, exp_val, obs_val, exp_val ^ obs_val) ;
                INVALIDATE(ipp,1);
                obs_val = *ipp ;
                if (obs_val != exp_val)
                {
                    printf("re-read error: addr %08x exp %08x obs %08x xor %08x\n",
                           ipp, exp_val, obs_val, exp_val ^ obs_val) ;
                }
            }
            exp_val = exp_val << 1 ;
            if (exp_val == 0)
            {
                exp_val = 1 ;
            }
            ipp++ ;
        }

        start_val = start_val << 1 ;
    }

    return errors ;
}

/*
 * Test sdram with walking zeroes
 */
int
   t_sdram_walk0(
                 Int32   *mmio_base,
                 Int32   *begin_p,
                 Int32   len
                )
{
    Int32   *end_p ;
    Int32   *ipp ;
    Int32   start_val ;
    Int32   loop_val ;
    Int32   exp_val ;
    Int32   obs_val ;
    int errors ;
    int lap ;

    end_p = (Int32 *) (((char *) begin_p) + len) ;
    errors = 0 ;

    lap = 0 ;
    start_val = 1 ;
    while (start_val != 0)
    {
        printf("    lap %2d\n", lap++) ;

    /*
     * Fill memory with data
     */
        loop_val = start_val ;
        ipp = begin_p ;
        while (ipp < end_p)
        {
            exp_val = ~loop_val ;
            *ipp++ = exp_val ;
            loop_val = loop_val << 1 ;
            if (loop_val == 0)
            {
                loop_val = 1 ;
            }
        }

    /*
     * Check memory
     */
        loop_val = start_val ;
        ipp = begin_p ;
        while (ipp < end_p)
        {
            exp_val = ~loop_val ;
            obs_val = *ipp ;
            if (obs_val != exp_val)
            {
                errors++ ;
                printf("read error:    addr %08x exp %08x obs %08x xor %08x\n",
                       ipp, exp_val, obs_val, exp_val ^ obs_val) ;
                INVALIDATE(ipp,1);
                obs_val = *ipp ;
                if (obs_val != exp_val)
                {
                    printf("re-read error: addr %08x exp %08x obs %08x xor %08x\n",
                           ipp, exp_val, obs_val, exp_val ^ obs_val) ;
                }
            }
            loop_val = loop_val << 1 ;
            if (loop_val == 0)
            {
                loop_val = 1 ;
            }
            ipp++ ;
        }

        start_val = start_val << 1 ;
    }

    return errors ;
}

static unsigned int GetMaxAvailableSize(void)
{
    char            *pBlock ;
    unsigned int            Size ;
    unsigned int            Span ;

    /*
     * Binary search for maximum block size
     */
    Size = 0x40000000 ;
    Span = Size >> 1 ;
    while (Span != 0)
    {
        pBlock = malloc(Size) ;
        if (pBlock == NULL)
        {
            Size -= Span ;
        }
        else
        {
            free(pBlock) ;
            Size += Span ;
        }
        Span = Span >> 1 ;
    }

    return Size ;
}

int main(
         int argc,
         char    *argv[]
        )
{
    int i;
    unsigned int maxblock;
    static Int32 *start;
    static Int32 len;
    static int   first = 1;

	Init_Stdio();
	
	maxblock = GetMaxAvailableSize();
	printf("Maximum available block is %d (0x%08X) bytes.\n",maxblock,maxblock);

    if(first) {
        first = 0;
        len   = (maxblock & ~63);
        start = (Int32 *) malloc(len) ;

        start = (Int32 *)((((unsigned)(start)) + 128) & ~63);    /* Align start to 64 bytes */
        len -= 256;                                         /* Safety                  */


        if(start == NULL) {
            printf("malloc failed\n");
            return 1;
        }
        else printf("SDRAM TEST: Got %d Kbytes, from 0x%.8x to 0x%.8x\n",
                    len/1024, (Int32)(start), ((Int32)(start)+len));
    }

    sdram_fail = t_sdram_addr(0, start, len);
    printf("sdram_addr             %s\n", sdram_fail ? "FAILED" : "passed");
    if (sdram_fail) return(TRUE);
    sdram_fail = t_sdram_inv_addr(0, start, len);
    printf("sdram_inv_addr         %s\n", sdram_fail ? "FAILED" : "passed");
    if (sdram_fail) return(TRUE);


    i = 1;
    do { int j, loops;

    loops = StressSdram ? 8 : 1;

    for(j = 0; j <  loops; j++)
        sdram_fail |= t_sdram_flipbits(0x5A5A5A5A, (unsigned *)start, len);
    printf("sdram_flip 0x5A5A5A5A  %s\n", sdram_fail ? "FAILED" : "passed");
    if(sdram_fail) return TRUE;

    for(j = 0; j <  loops; j++)
        sdram_fail |= t_sdram_flipbits(0x00000000, (unsigned *)start, len);
    printf("sdram_flip 0x00000000  %s\n", sdram_fail ? "FAILED" : "passed");
    if(sdram_fail) return TRUE;
    } while(StressSdram >= i++);

    sdram_fail = t_sdram_walk1(0, start, len);
    printf("sdram_walk1            %s\n", sdram_fail ? "FAILED" : "passed");
    if (sdram_fail) return(TRUE);
    sdram_fail = t_sdram_walk0(0, start, len);
    printf("sdram_walk0            %s\n", sdram_fail ? "FAILED" : "passed");
    if (sdram_fail) return(TRUE);

    return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re这里只有精品首页| 久久精品欧美一区二区三区麻豆| 欧美国产日产图区| 国产伦精一区二区三区| 精品av综合导航| 亚洲图片欧美一区| 久久久国产一区二区三区四区小说 | 色综合中文字幕国产| 亚洲精品免费一二三区| 欧美日韩精品一区二区三区蜜桃| 亚洲成av人在线观看| 日韩一区二区高清| 欧美成人a∨高清免费观看| 国产激情一区二区三区四区 | 亚洲午夜免费电影| 欧美精品久久久久久久久老牛影院| 日韩国产精品久久久久久亚洲| 在线播放欧美女士性生活| 国产黄色精品视频| 一区二区三区 在线观看视频| 8v天堂国产在线一区二区| 国产一区二区三区视频在线播放| 亚洲欧洲成人自拍| 欧美精品xxxxbbbb| 成人国产精品视频| 午夜精品福利在线| 亚洲欧洲日韩av| 欧美大白屁股肥臀xxxxxx| 菠萝蜜视频在线观看一区| 美女精品一区二区| 一区二区三区四区国产精品| 91精品国产综合久久香蕉麻豆| 成人av午夜影院| 久久精品免费看| 日韩精品1区2区3区| 中文字幕色av一区二区三区| 日韩免费性生活视频播放| 欧美在线视频日韩| 99久久精品国产毛片| 大陆成人av片| 国产一区美女在线| 黄色资源网久久资源365| 亚洲一区av在线| 成人欧美一区二区三区黑人麻豆| 久久蜜臀中文字幕| 久久精品一二三| 国产日韩欧美精品一区| 欧美激情在线免费观看| 国产精品青草综合久久久久99| 久久蜜桃av一区精品变态类天堂| 欧美zozozo| 国产午夜精品一区二区三区四区 | 精品成人私密视频| 久久亚洲综合色| 国产精品污污网站在线观看 | 欧美精品一区二区久久久| 91精品国产欧美一区二区18| 欧美一二三四区在线| 精品久久99ma| 国产精品久久久一本精品| 亚洲日本电影在线| 日韩成人精品视频| 激情综合网最新| 91久久久免费一区二区| 欧美久久久一区| 中文字幕av一区二区三区免费看 | 欧美巨大另类极品videosbest| 51精品国自产在线| 精品国产伦理网| 亚洲女同一区二区| 久久成人18免费观看| 99久久精品国产一区| 91精品国产综合久久国产大片| 久久嫩草精品久久久久| 亚洲一区中文在线| 国产精品一区二区三区网站| 色噜噜狠狠一区二区三区果冻| 日韩精品自拍偷拍| 一区二区三区在线免费播放| 国产精品主播直播| 欧美不卡一二三| 视频在线在亚洲| 在线观看区一区二| 亚洲女女做受ⅹxx高潮| 国产精品亚洲午夜一区二区三区| 91精品国产色综合久久不卡蜜臀| 国产精品久久久久影视| 国产美女在线观看一区| 欧美男男青年gay1069videost| 亚洲精品高清视频在线观看| 粉嫩高潮美女一区二区三区| 337p日本欧洲亚洲大胆精品| 石原莉奈在线亚洲二区| 欧美日韩一区久久| 亚洲成av人影院| 制服丝袜一区二区三区| 午夜精品久久久久久久99樱桃| 色婷婷综合久久久久中文一区二区 | 中文字幕精品一区| 成人97人人超碰人人99| 亚洲视频每日更新| 91黄色免费看| 男女男精品网站| 国产日韩欧美一区二区三区综合| 国产成人夜色高潮福利影视| 国产欧美精品一区aⅴ影院| 不卡的av在线| 亚洲www啪成人一区二区麻豆| 欧美肥妇毛茸茸| 在线精品视频免费播放| 精品美女在线播放| 成人18精品视频| 午夜精品免费在线观看| 欧美videossexotv100| 成人精品小蝌蚪| 亚洲成人av免费| 精品成人在线观看| 在线亚洲免费视频| 国产中文字幕一区| 亚洲高清视频中文字幕| 国产欧美va欧美不卡在线| 欧美亚洲国产一区在线观看网站| 免费看欧美美女黄的网站| 亚洲欧洲无码一区二区三区| 日韩午夜电影在线观看| 一本到不卡精品视频在线观看 | 国产精品美女一区二区| 亚洲二区在线观看| 亚洲婷婷综合久久一本伊一区| 欧美男生操女生| 在线观看精品一区| 成人黄色小视频在线观看| 美女mm1313爽爽久久久蜜臀| 亚洲一区自拍偷拍| 亚洲黄色av一区| 中文字幕亚洲精品在线观看| 久久久久88色偷偷免费 | 99国产精品99久久久久久| 黄页视频在线91| 极品少妇xxxx精品少妇偷拍| 日韩**一区毛片| 免费在线欧美视频| 日本欧美一区二区| 日韩avvvv在线播放| 麻豆91免费看| 国产毛片精品视频| 国产一区二区三区免费| 国产成人av电影| 99免费精品视频| 色悠悠久久综合| 欧美少妇bbb| 日韩精品在线一区二区| 精品国产乱码久久久久久蜜臀| 26uuu久久综合| 国产精品欧美一级免费| 一区二区国产盗摄色噜噜| 日韩制服丝袜av| 国产精品主播直播| 欧美在线视频你懂得| 欧美一级艳片视频免费观看| 精品久久一区二区三区| 中文字幕欧美国产| 亚洲国产日韩精品| 国产一本一道久久香蕉| 欧美天天综合网| 久久综合丝袜日本网| 亚洲一区在线视频观看| 精品一二三四在线| 欧美自拍偷拍午夜视频| 欧美大片日本大片免费观看| 亚洲色图19p| 国产精品一区久久久久| 欧美日韩国产高清一区二区| 中文字幕免费在线观看视频一区| 亚洲狠狠爱一区二区三区| 国产成人免费视频一区| 欧美高清你懂得| 亚洲综合网站在线观看| 国产成人午夜精品影院观看视频| 欧美怡红院视频| 亚洲乱码中文字幕| 国产99久久久国产精品潘金网站| 91麻豆精品国产自产在线| 亚洲柠檬福利资源导航| 99精品在线免费| 国产日产欧美精品一区二区三区| 麻豆精品一二三| 日韩一区二区三| 日本亚洲最大的色成网站www| 欧美色视频一区| 亚欧色一区w666天堂| 91亚洲精品一区二区乱码| 国产精品久久久久久久久搜平片 | 欧美影视一区二区三区| 亚洲狼人国产精品| 在线中文字幕不卡| 亚洲123区在线观看| 国产成人av在线影院| 久久精品欧美一区二区三区麻豆| 国产一区二区不卡老阿姨|