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

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

?? nand.c

?? xdl2410的bootloader
?? C
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
--*/
#include <string.h>

#include "def.h"
#include "option.h"
#include "2410addr.h"
#include "2410lib.h"
#include "nand.h"

void __RdPage512(UCHAR *bufPt); 
void __RdPage256(UCHAR *bufPt); 

//  Status bit pattern
#define STATUS_READY                0x40          
#define STATUS_ERROR                0x01

#define NF_CMD(cmd)	    {rNFCMD  = (cmd); }
#define NF_ADDR(addr)	{rNFADDR = (addr); }	
#define NF_nFCE_L()	    {rNFCONF &= ~(1<<11); }
#define NF_nFCE_H()	    {rNFCONF |= (1<<11); }
#define NF_RSTECC()	    {rNFCONF |= (1<<12); }
#define NF_RDDATA() 	(rNFDATA)
#define NF_WRDATA(data) {rNFDATA = (data); }
#define NF_WAITRB()     {while(!(rNFSTAT&(1<<0)));} 

#define     pNFCONF     rNFCONF 
#define     pNFCMD      rNFCMD  
#define     pNFADDR     rNFADDR 
#define     pNFDATA     rNFDATA 
#define     pNFSTAT     rNFSTAT 
#define     pNFECC      rNFECC  

#define NF_CE_L()     NF_nFCE_L()
#define NF_CE_H()     NF_nFCE_H()
#define NF_DATA_R()   rNFDATA
#define NF_ECC()      rNFECC

typedef union _ECCRegVal
{
	DWORD	dwECCVal;
	BYTE	bECCBuf[4];
} ECCRegVal;

//
//  Reset the chip
//
void NF_Reset()
{                       
    NF_CE_L();          
    NF_CMD(CMD_RESET);  
    NF_WAITRB();        
    NF_CE_H();          
}


void NF_Init(void)
{
    rNFCONF = NFCONF_INIT;
}

#ifdef NF_READID
void NF_ReadID()
{
    USHORT  wData1, wData2;

    //  First we enable chip select
    NF_CE_L();

    //  Issue commands to the controller
    NF_CMD(CMD_READID);
    NF_ADDR(0x00);

    NF_WAITRB();

    wData1 = NF_DATA_R();
    wData2 = NF_DATA_R();

    NF_CE_H();

    Uart_SendString("Nand Mfg: ");
    Uart_SendDWORD((DWORD)wData1, TRUE);
    Uart_SendString("Nand Dev: ");
    Uart_SendDWORD((DWORD)wData2, TRUE);
}
#endif

#ifdef READ_SECTOR_INFO
/* 
 *  NAND_ReadSectorInfo
 *
 *  Read SectorInfo out of the spare area. The current implementation only handles
 *  one sector at a time.
 */
void 
NAND_ReadSectorInfo(
    SECTOR_ADDR sectorAddr, 
    PSectorInfo pInfo
    )
{
    //  Chip enable
    NF_CE_L();

    //  Write the command
    NF_CMD(CMD_READ2);

    //  Write the address
    NF_ADDR(0x00);
    NF_ADDR(sectorAddr & 0xff);
    NF_ADDR((sectorAddr >> 8) & 0xff);
    
    if (NEED_EXT_ADDR) {
        NF_ADDR((sectorAddr >> 16) & 0xff);
    }

    //  Wait for the Ready bit
    NF_WAITRB();

    //  Read the SectorInfo data (we only need to read first 8 bytes) 
    pInfo->dwReserved1  = (DWORD) ((BYTE) NF_DATA_R()) << 24;
    pInfo->dwReserved1 |= (DWORD) ((BYTE) NF_DATA_R()) << 16;
    pInfo->dwReserved1 |= (DWORD) ((BYTE) NF_DATA_R()) << 8;
    pInfo->dwReserved1 |= (DWORD) ((BYTE) NF_DATA_R());

    //  OEM byte
    pInfo->bOEMReserved = (BYTE) NF_DATA_R();

    //  Read the bad block mark
    pInfo->bBadBlock = (BYTE) NF_DATA_R();
    
    //  Second reserved field (WORD)
    pInfo->wReserved2 = ((BYTE) NF_DATA_R() << 8);
    pInfo->wReserved2 |= ((BYTE) NF_DATA_R());

    NF_CE_H();
}
#endif


//  FMD_ReadSector
//
//  Read the content of the sector.
//
//  startSectorAddr: Starting page address
//  pSectorBuff  : Buffer for the data portion
//  pSectorInfoBuff: Buffer for Sector Info structure
//  dwNumSectors : Number of sectors
//
BOOL 
FMD_ReadSector(
    SECTOR_ADDR startSectorAddr, 
    LPBYTE pSectorBuff,
    PSectorInfo pSectorInfoBuff, 
    DWORD dwNumSectors
    )
{
    DWORD   i, r = 0;
    BYTE   ecc0,ecc1,ecc2;
    BOOL   rc = TRUE;
    ECCRegVal eccRegVal;

    //  BUGBUGBUG: I need to come back to support dwNumSectors > 1
    //
    //  Sanity check
    if (!pSectorBuff && !pSectorInfoBuff || dwNumSectors > 1 || !pSectorBuff) {
        Uart_SendString("ERROR_INVALID_PARAMETER\n");
        return FALSE;
    }


_retry:
    //  Initialize ECC register
    NF_RSTECC();

    //  Enable the chip
    NF_nFCE_L();   
    
    // Issue Read command
    NF_CMD(CMD_READ);

    //  Set up address
    NF_ADDR(0x00);
    NF_ADDR((startSectorAddr) & 0xff);
    NF_ADDR((startSectorAddr >> 8) & 0xff);
    if (NEED_EXT_ADDR) {
        NF_ADDR((startSectorAddr >> 16) & 0xff);
    }

    for (i = 0; i < 5; i++);   // wait tWB(100ns)

    NF_WAITRB();        // wait tR(max 12us)

    // read the data
    __RdPage512(pSectorBuff);
//    __RdPage256(pSectorBuff);

	//	Read the ECC from ECC Register
	eccRegVal.dwECCVal = NF_ECC();
	
	//	Skip first 8 bytes
	for(i=0; i<8; i++){
		ecc0 = NF_DATA_R();
	}
	
	ecc0 = NF_DATA_R();
	ecc1 = NF_DATA_R();
	ecc2 = NF_DATA_R();
	
    NF_nFCE_H();

    if ( !rc && r++ < 3 ) {
        Uart_SendString("FMD_ReadSector: ");
        Uart_SendDWORD(startSectorAddr, TRUE);

        NF_Reset();
        
        for (i = 0; i < 5; i++);   // delay

        rc = TRUE;
        
        goto _retry;
    }
    
	if(	ecc0 != eccRegVal.bECCBuf[0] ||
		ecc0 != eccRegVal.bECCBuf[0] ||
		ecc0 != eccRegVal.bECCBuf[0] )  {
//		Uart_SendString("ECC mismatch for Sector: ");
//		Uart_SendDWORD(startSectorAddr, TRUE);
		rc = FALSE;
	}

    return rc;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女www一区二区| 欧美精品一区二区三区在线播放| 精品午夜久久福利影院| 麻豆91精品91久久久的内涵| 日本欧美加勒比视频| 国产精品99久久久| 欧美日韩一区在线观看| 久久综合九色综合欧美98| 亚洲天堂久久久久久久| 免费av成人在线| av午夜一区麻豆| 91精品国产一区二区三区| 国产精品麻豆欧美日韩ww| 日日摸夜夜添夜夜添精品视频| 精品一区二区三区香蕉蜜桃| 91九色最新地址| 国产精品沙发午睡系列990531| 亚洲一区二区三区在线播放| 国产美女娇喘av呻吟久久| 欧美三区在线观看| 亚洲日本在线天堂| 91麻豆福利精品推荐| 国产精品久久久久久户外露出| 青青草成人在线观看| 91精品婷婷国产综合久久性色| 亚洲一区免费观看| voyeur盗摄精品| 136国产福利精品导航| 成人免费看的视频| 国产精品久久久久久久蜜臀| 成人在线视频一区| 亚洲色图欧美在线| 欧美日韩精品欧美日韩精品一| 亚洲免费观看在线观看| 日本韩国一区二区三区视频| 亚洲成人先锋电影| 久久久影院官网| 成人丝袜18视频在线观看| 亚洲欧美日韩在线不卡| 在线观看一区二区精品视频| 日本不卡123| 国产精品网站在线播放| 91麻豆国产福利精品| 三级在线观看一区二区| 国产无人区一区二区三区| 91久久国产综合久久| 国产精品一二二区| 亚洲国产综合91精品麻豆| 26uuu精品一区二区| 在线观看网站黄不卡| 国产二区国产一区在线观看| 视频在线观看国产精品| 国产欧美一区二区三区在线看蜜臀| 欧美日韩激情一区二区三区| 成人午夜电影网站| 国产一区二三区好的| 日韩精品欧美精品| 午夜电影久久久| 日韩精品免费视频人成| 五月天亚洲精品| 亚洲h在线观看| 视频一区中文字幕国产| 亚洲精品久久久蜜桃| 1000部国产精品成人观看| 久久久精品影视| 久久久久97国产精华液好用吗| 欧美mv和日韩mv的网站| 欧美mv日韩mv国产网站app| 久久久av毛片精品| 亚洲欧洲无码一区二区三区| 亚洲欧美一区二区三区极速播放| 国产精品污污网站在线观看| 中文字幕人成不卡一区| 亚洲人成影院在线观看| 亚洲电影在线免费观看| 韩国视频一区二区| 一本色道亚洲精品aⅴ| 日韩亚洲欧美中文三级| 亚洲国产激情av| 亚洲成人福利片| 国产成人亚洲综合a∨猫咪| 欧美日韩国产精品成人| 欧美激情中文不卡| 亚洲小说欧美激情另类| 国产一区二区三区观看| 色综合久久九月婷婷色综合| 欧美一区二区在线看| 1区2区3区欧美| 国产一区二区成人久久免费影院| 色婷婷综合中文久久一本| 日韩小视频在线观看专区| 亚洲精品日韩综合观看成人91| 美腿丝袜在线亚洲一区| 欧美日韩亚洲综合在线| 国产精品系列在线| 国精产品一区一区三区mba视频| 欧美久久久久免费| 婷婷久久综合九色国产成人 | 国产精一品亚洲二区在线视频| 在线看国产一区二区| 国产精品色噜噜| 国产成人激情av| 国产精品不卡在线| 99久久综合狠狠综合久久| 亚洲欧洲中文日韩久久av乱码| 91小视频免费看| 一区二区三区精品在线| 欧美精品aⅴ在线视频| 精品一区二区国语对白| 久久精品视频在线看| 成人av在线资源网站| 亚洲国产综合视频在线观看| 精品国产免费一区二区三区香蕉| 国产精品一二三在| 亚洲一二三四在线观看| 欧美一二三四区在线| 韩国欧美国产一区| 一区二区三区四区在线| 日韩欧美国产精品一区| 欧美高清精品3d| 国产精品久久影院| 精品成人一区二区| eeuss鲁一区二区三区| 久久成人18免费观看| 久久爱www久久做| 久久国产精品72免费观看| 美美哒免费高清在线观看视频一区二区| 一区二区三区四区乱视频| 樱桃国产成人精品视频| 一区二区三区免费看视频| 亚洲在线免费播放| 日韩电影免费在线看| 激情文学综合插| 成人国产电影网| 欧美自拍偷拍午夜视频| 91精品国产综合久久久久久久久久 | 制服丝袜亚洲色图| 精品国产亚洲一区二区三区在线观看| 欧美刺激脚交jootjob| 久久久久久综合| 最新不卡av在线| 日韩和欧美的一区| 国产成人在线网站| 欧美日韩亚洲综合在线 | 国产精品亚洲视频| 91免费国产在线| 日韩一区二区在线观看视频 | 成人app软件下载大全免费| 99国内精品久久| 欧美一个色资源| 国产精品成人免费在线| 亚洲成人激情自拍| 高清免费成人av| 3d成人动漫网站| 中日韩av电影| 蜜桃一区二区三区在线| 91小宝寻花一区二区三区| 欧美一区二区视频在线观看2020 | 成人午夜伦理影院| 欧美一区二区三区小说| 国产精品理论在线观看| 喷白浆一区二区| 色网站国产精品| 中日韩免费视频中文字幕| 久久综合综合久久综合| 欧美性大战久久| 亚洲欧美日韩久久精品| 国产在线观看免费一区| 欧美在线制服丝袜| 国产精品灌醉下药二区| 久久电影网站中文字幕| 欧美午夜精品一区二区三区 | 91玉足脚交白嫩脚丫在线播放| 欧美一区二区精品| 亚洲午夜久久久久中文字幕久| 国产成人av福利| 日韩视频永久免费| 午夜精品爽啪视频| 欧美中文字幕亚洲一区二区va在线| 国产亚洲综合色| 美国毛片一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 亚洲日本丝袜连裤袜办公室| 国产成人三级在线观看| 欧美大片日本大片免费观看| 视频一区二区三区在线| 色综合一区二区| 亚洲三级在线免费观看| 成人久久视频在线观看| 欧美韩国日本综合| 国产一区二区女| 2023国产精品| 国产精品正在播放| 久久亚洲综合色| 国产精品中文字幕一区二区三区| 欧美r级电影在线观看| 麻豆中文一区二区| 欧美成人艳星乳罩| 极品美女销魂一区二区三区| 日韩欧美色综合|