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

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

?? mem_test.c

?? 飛思卡爾imx27 wince5.0 bootloader源代碼
?? C
字號:
/*----------------------------------------------------------------------
* FILE:  mem_test.c
*-----------------------------------------------------------------------
*             (C) Copyright 2001 Metrowerks Corp.
*                 ALL RIGHTS RESERVED .
*
*   THIS IS  CONFIDENTIAL  PROPRIETARY SOURCE CODE OF METROWERKS CORP.
*
*          The copyright notice above does not evidence any
*         actual or intended publication of such source code.
*-----------------------------------------------------------------------
*
* DESCRIPTION: Test DDR 32bit 8MGB(8M*16*4 1.8v 133mhz) 
*              (base addr ,size must be changed, add init) 
*              on i.MX31 board.
*   
*
* REFERENCES: 
*      1) i.mx31 Users Manual
*
* HISTORY:
*
*--------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "bono_memory_map_defines.h"
#include "tstsrv.h"
#include "common.h"



#define MAX_TEST_ERROR_NUM 10

// DDR parameters
#define START_BASE_ADDR	CSD1_BASE_ADDR 

#define OFFSET_ADDR	(1024*1024) // 1mgbytes

#define START_RAM_ADDR	(START_BASE_ADDR + OFFSET_ADDR) // DDR addr to test

#define MEM_BYTE_SIZE (64*1024*1024) // DDR size - 64mgbyte

#define BYTE_SIZE (MEM_BYTE_SIZE - OFFSET_ADDR) // 1mgbytes memory size to test


#define END_RAM_ADDR	(START_RAM_ADDR + BYTE_SIZE)


long SdramPatterns[] = {0x1111111, 0x55555555, 0xAAAAAAAA, 0xFFFFFFFF};
//SdramPatterns[] = {0, 0x55555555, 0xAAAAAAAA, 0xFFFFFFFF};
int          SdramPatternsCount = sizeof(SdramPatterns) / sizeof(WORD);


ulong *start_adr;
ulong *end_adr;
int   ErrorsNum;
char  out_str[0x100];
char         TestName[] = "DDR";

int MEMtest (void) ;
void mem_error (ulong *mem_addr, ulong data);
int  walking_one_on32bit_databus (void);
int  addr_march_test (void);
int pattern_test (void);

/*------------------------------------------------------------------------
*
* FUNCTION NAME:  MEMtest 
*
* DESCRIPTION:
*  This is the main function for the Test DDR 8MGB 
*  (addr / size must be change) on i.mx31 board 
*
*                 
* PARAMETERS:  None
*
* RETURNS: RET_ERR if there was an error and RET_OK if there wasn't
*
*-------------------------------------------------------------------------*/
int MEMtest (void) 
{
int  rc = RET_OK;

  start_adr = (ulong *)START_RAM_ADDR;
  end_adr	= (ulong *)END_RAM_ADDR;

  ErrorsNum = 0;

  sprintf(out_str, "%s  TEST 0x%lx - 0x%lx IN PROGRESS: \n",
          TestName, (ulong)start_adr, (ulong)end_adr);
  printf(out_str);

  walking_one_on32bit_databus();

  if (ErrorsNum < MAX_TEST_ERROR_NUM)
       addr_march_test();

  if (ErrorsNum < MAX_TEST_ERROR_NUM)
       pattern_test();

  if (ErrorsNum != 0)
      rc = RET_ERR;  
  return rc;
}

/*--------------------------------------------------------------------------
*
* FUNCTION NAME:  addr_march_test
*
* DESCRIPTION: Address march test
*
* EXTERNAL EFFECTS:  None
*
* PARAMETERS: None
*
* RETURNS: Count of error if there was an error and 0 if there wasn't
*
*--------------------------------------------------------------------------*/
int addr_march_test (void)
{
ulong  *CurrSdram;
int    error = 0;
//ulong  BlinkNum=0;
static int  first;

    printf("Address march...\n");
    // write Address
    first = 0;
  	for (CurrSdram = start_adr; CurrSdram < end_adr; CurrSdram++) 
  	{
		*CurrSdram  = (ulong)CurrSdram;
		if (first == 0)
		{
			if (*(ulong *)START_RAM_ADDR != START_RAM_ADDR)
			{
			  sprintf(out_str, "Start sdram value has been changed when wrote to addrs 0x%lx\n", (ulong)CurrSdram);
			  printf(out_str);
			  sprintf(out_str, "START_RAM_ADDR = 0x%lx, val = 0x%lx(must be 0x%lx)\n", (ulong)START_RAM_ADDR, *(ulong *)START_RAM_ADDR, (ulong)START_RAM_ADDR);
			  printf(out_str);
			  first++;
		      error++;
		      if (error + ErrorsNum >= MAX_TEST_ERROR_NUM)
		        break;
			}
		}        
    }
    if (error + ErrorsNum < MAX_TEST_ERROR_NUM)
    {
	    // verify Address
	  	for (CurrSdram = start_adr; CurrSdram < end_adr; CurrSdram++) 
	  	{
		    if(*CurrSdram != (ulong)CurrSdram) 
		    {
		      mem_error (CurrSdram, (ulong)CurrSdram);
		      error++;
		      if(error + ErrorsNum >= MAX_TEST_ERROR_NUM)
		        break;
		    }
		}
	}
    ErrorsNum += error;
    return error;
}
/*--------------------------------------------------------------------------
*
* FUNCTION NAME:  pattern_test
*
* DESCRIPTION:Patterns test
*
* EXTERNAL EFFECTS:  None
*
* PARAMETERS: None
*
* RETURNS: Count of error if there was an error and 0 if there wasn't
*
*--------------------------------------------------------------------------*/
int pattern_test (void)
{

ulong  *CurrSdram;
int    error = 0;
int    i;
ulong  CurrPatterns;
//ulong  BlinkNum=0;

  
  for (i = 0; i < SdramPatternsCount;i++)
  {
    sprintf(out_str, "Pattern 0x%lx ...\n", SdramPatterns[i]);
    printf(out_str);
    CurrPatterns = SdramPatterns[i];
 
    // write current pattern
  	for (CurrSdram =start_adr; CurrSdram < end_adr;CurrSdram++) 
  	{
        *CurrSdram  = CurrPatterns;
    }
    // verify current pattern
  	for (CurrSdram = start_adr; CurrSdram < end_adr;CurrSdram++) 
  	{
	    if(*CurrSdram != CurrPatterns) 
	    {
	      mem_error (CurrSdram, CurrPatterns);
	      error++;
	      if(error + ErrorsNum >= MAX_TEST_ERROR_NUM)
	        break;
	    }
	}
  }
  ErrorsNum += error;
  return error;
}
/*--------------------------------------------------------------------------
*
* FUNCTION NAME:  walking_one_on32bit_databus
*
* DESCRIPTION: Test memory with the walking one
*
*
* EXTERNAL EFFECTS:  None
*
* PARAMETERS: ptrl - pointer to the start memory to test
*			  
* RETURNS: Count of error if there was an error and 0 if there wasn't
*
*--------------------------------------------------------------------------*/
int walking_one_on32bit_databus (void)
{
int   i;
ulong *CurrAddr;
int   error = 0;
ulong currVal;

  CurrAddr = start_adr;
  currVal = 1;
  
  printf("Walking one...\n");
    
  for (i = 0; i < DATA_32_BUS_WIDTH; i++)
  {
	*CurrAddr = currVal;
    if (*CurrAddr != currVal)
    {
      mem_error (CurrAddr, currVal);
      error++;
      if(error + ErrorsNum >= MAX_TEST_ERROR_NUM)
        break;
    }
    currVal <<= 1;
  }
  ErrorsNum += error;

  return error;
}
/*--------------------------------------------------------------------------
*
* FUNCTION NAME:  mem_error
*
* DESCRIPTION: Make and display error message 
*
*
* EXTERNAL EFFECTS:  None
*
* PARAMETERS: 
*			  mem_addr - pointer to the memory 
*			  data - the wrote value 
*
* RETURNS: None
*
*--------------------------------------------------------------------------*/
void mem_error (ulong *mem_addr, ulong data)
{
char *ptrch;
short len;

  sprintf(out_str, "ERROR AT ADDRESS ");
  len = strlen(out_str);
  ptrch = &out_str[0] + len+1;
  out_str[len] = ' ';
  sprintf(ptrch, "0x%lx\n: WROTE : 0x%lx\n: READ  : 0x%lx \n",
         (ulong)mem_addr,  data, *mem_addr);
  printf(out_str);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩av一区二区三区| 亚洲成人免费电影| 成人一区二区视频| 国产欧美日韩在线观看| 不卡一区二区三区四区| 一区二区三区四区国产精品| 欧美性猛交xxxxxx富婆| 免费成人小视频| 国产精品婷婷午夜在线观看| 色综合久久久久| 亚州成人在线电影| 久久精品在这里| 97国产一区二区| 亚洲欧洲国产专区| 亚洲成a人v欧美综合天堂下载 | 一区二区久久久久久| 欧美日韩久久久一区| 国产资源在线一区| 亚洲欧美日韩国产综合在线| 91精品国产欧美日韩| 成人福利视频在线| 爽好久久久欧美精品| 中文字幕第一页久久| 欧美日本乱大交xxxxx| 国产精品18久久久久久vr| 一二三四区精品视频| 久久久亚洲精华液精华液精华液 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日本女优在线视频一区二区| 国产免费久久精品| 欧美老年两性高潮| 成人美女视频在线观看| 日韩成人一区二区| 亚洲欧美在线另类| 久久综合中文字幕| 欧美日韩综合在线| 97久久久精品综合88久久| 蜜桃91丨九色丨蝌蚪91桃色| 伊人开心综合网| 中文字幕免费一区| 日韩三级在线观看| 欧美日韩中文另类| 91一区在线观看| 国产经典欧美精品| 久久99精品久久只有精品| 亚洲一区日韩精品中文字幕| 国产精品久久看| 久久看人人爽人人| 欧美电影免费观看高清完整版在线 | 97久久超碰国产精品电影| 精品一区二区在线视频| 亚洲一卡二卡三卡四卡| 国产精品久久久久9999吃药| 欧美精品一区二区蜜臀亚洲| 欧美疯狂做受xxxx富婆| 色视频成人在线观看免| 99精品视频在线观看| 国产99久久久久久免费看农村| 精久久久久久久久久久| 免费国产亚洲视频| 日韩高清一级片| 日韩精品国产欧美| 天天操天天色综合| 亚洲一二三专区| 亚洲高清在线视频| 亚洲图片一区二区| 亚洲成人av一区| 五月天久久比比资源色| 亚洲成av人片在线观看无码| 亚洲国产精品自拍| 夜夜亚洲天天久久| 亚洲国产欧美在线人成| 亚洲电影在线播放| 国产成人在线免费| 国产成人精品三级| 成人免费av资源| 色综合久久综合网| 欧美午夜精品久久久久久超碰| 91国偷自产一区二区三区成为亚洲经典 | www.欧美色图| 99精品国产热久久91蜜凸| 91麻豆国产香蕉久久精品| 91免费国产视频网站| 91免费看片在线观看| 欧美四级电影网| 欧美一区二区久久| 久久久精品天堂| 国产精品国产三级国产普通话蜜臀| 中文字幕一区二区三区av| 亚洲精品久久久蜜桃| 亚洲成人www| 老司机精品视频导航| 国产69精品久久99不卡| 91欧美激情一区二区三区成人| 欧美日韩三级视频| 精品国产91久久久久久久妲己| 久久久影院官网| 亚洲欧美日韩国产一区二区三区| 亚洲小少妇裸体bbw| 日韩国产欧美视频| 国产99精品国产| 欧美综合久久久| 欧美一区午夜精品| 久久久欧美精品sm网站| 中文字幕佐山爱一区二区免费| 亚洲国产精品久久一线不卡| 久久99久久精品| 91麻豆国产福利在线观看| 日韩一区二区免费电影| 久久综合狠狠综合| 一区二区三区在线视频播放| 蜜桃视频在线观看一区二区| 不卡的看片网站| 884aa四虎影成人精品一区| 欧美韩国日本不卡| 日韩国产一二三区| 北条麻妃一区二区三区| 91精品视频网| 亚洲欧美综合网| 久久99热狠狠色一区二区| 91免费版pro下载短视频| 日韩欧美国产高清| 洋洋av久久久久久久一区| 麻豆精品新av中文字幕| 91蝌蚪porny| 久久久精品2019中文字幕之3| 亚洲一级二级三级在线免费观看| 国产精品性做久久久久久| 欧美老年两性高潮| 亚洲欧美日韩在线| 国产高清不卡二三区| 日韩一区二区三区高清免费看看 | 性欧美大战久久久久久久久| 不卡的av在线播放| 久久综合五月天婷婷伊人| 亚洲国产一区二区视频| 97精品国产97久久久久久久久久久久| 日韩一级成人av| 午夜精品国产更新| 色婷婷综合在线| 中文字幕中文字幕在线一区 | 一本大道久久a久久精品综合| 2024国产精品| 美国欧美日韩国产在线播放| 欧美日韩国产天堂| 一区二区三区欧美| 色综合天天综合在线视频| 国产精品午夜久久| 国产精品影视在线| 欧美mv日韩mv国产| 日本伊人精品一区二区三区观看方式| 色天天综合久久久久综合片| 亚洲欧洲日产国产综合网| 成人免费视频国产在线观看| 国产偷国产偷精品高清尤物| 国模少妇一区二区三区| 欧美成人三级电影在线| 美日韩黄色大片| 精品播放一区二区| 国产原创一区二区| 精品第一国产综合精品aⅴ| 蜜桃一区二区三区四区| 精品日韩99亚洲| 美女一区二区三区| 日韩欧美亚洲国产另类| 久久国产精品露脸对白| 亚洲精品一区二区三区福利| 极品瑜伽女神91| 国产亚洲制服色| 成人精品视频一区二区三区| 亚洲欧洲日产国产综合网| 一本色道a无线码一区v| 亚洲自拍偷拍麻豆| 337p亚洲精品色噜噜噜| 美女脱光内衣内裤视频久久影院| 日韩精品一区二区三区视频在线观看| 裸体健美xxxx欧美裸体表演| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品视频免费在线| 免费看欧美美女黄的网站| 久久综合九色综合欧美亚洲| 国产福利一区在线| 亚洲乱码国产乱码精品精可以看| 91在线精品秘密一区二区| 一区二区三区成人| 欧美一区二区三区视频免费| 精品一区二区成人精品| 国产欧美精品在线观看| 色综合天天综合在线视频| 丝袜a∨在线一区二区三区不卡| 精品入口麻豆88视频| 成人美女视频在线观看| 性久久久久久久久久久久| 久久久久国产成人精品亚洲午夜| www.综合网.com| 秋霞午夜av一区二区三区| 日本一区二区免费在线观看视频| 一本色道久久综合亚洲91| 久久精品国产网站| 日本不卡高清视频|