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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? norflashcfi.c

?? IAR5.2下 AT91SAM9260 ARM 對 MCP2515 控制源化碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* ----------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support 
 * ----------------------------------------------------------------------------
 * Copyright (c) 2008, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

//------------------------------------------------------------------------------
//         Headers
//------------------------------------------------------------------------------

#include "NorFlashAPI.h"
#include "norFlashAmd.h"
#include "norFlashIntel.h"
#include "NorFlashCommon.h"
#include <utility/trace.h>
#include <string.h>

//------------------------------------------------------------------------------
//         Internal definitions
//------------------------------------------------------------------------------
#define DUMP_CFI

//------------------------------------------------------------------------------
//         Local functions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// Dump the Common Flash Interface Definition Table.
/// \param pNorFlashCFI  Pointer to an NorFlashCFI instance.
//------------------------------------------------------------------------------
void NorFlash_CFI_DumpConfigruation(struct NorFlashCFI *pNorFlashCFI)
{
	unsigned char i;
	
	trace_LOG(trace_DEBUG, "\n\r-I- Common Flash Interface Definition Table\n\r");
	trace_LOG(trace_DEBUG, "-I- Addr. Data   Description \n\r");
	trace_LOG(trace_DEBUG, "-I- 0x10  %04Xh  Query Unique ASCII string\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.queryUniqueString[0]);
	trace_LOG(trace_DEBUG, "-I- 0x11  %04Xh  \n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.queryUniqueString[1]);
	trace_LOG(trace_DEBUG, "-I- 0x12  %04Xh  \n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.queryUniqueString[2]);
	trace_LOG(trace_DEBUG, "-I- 0x13  %04Xh  Primary OEM Command Set\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.primaryCode);
	trace_LOG(trace_DEBUG, "-I- 0x15  %04Xh  Address for Primary Extended Table\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.primaryAddr);
	trace_LOG(trace_DEBUG, "-I- 0x17  %04Xh  Alternate OEM Command Set\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.alternateCode);
	trace_LOG(trace_DEBUG, "-I- 0x19  %04Xh  Address for Alternate OEM Extended Table\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.alternateAddr);
	trace_LOG(trace_DEBUG, "-I- 0x1B  %04Xh  VCC min write/erase\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.minVcc);
	trace_LOG(trace_DEBUG, "-I- 0x1C  %04Xh  VCC max write/erase\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.maxVcc);
	trace_LOG(trace_DEBUG, "-I- 0x1D  %04Xh  VPP min voltage\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.minVpp);
	trace_LOG(trace_DEBUG, "-I- 0x1E  %04Xh  VPP max voltage\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.maxVpp);
	trace_LOG(trace_DEBUG, "-I- 0x1F  %04Xh  Typical timeout per single word write\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.minTimeOutWrite);
	trace_LOG(trace_DEBUG, "-I- 0x20  %04Xh  Typical timeout for Min. size buffer write\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.minTimeOutBuffer);
	trace_LOG(trace_DEBUG, "-I- 0x21  %04Xh  Typical timeout per individual block erase\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.minTimeOutBlockErase);
	trace_LOG(trace_DEBUG, "-I- 0x22  %04Xh  Typical timeout for full chip erase\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.minTimeOutChipErase);
	trace_LOG(trace_DEBUG, "-I- 0x23  %04Xh  Max. timeout for word write\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.maxTimeOutWrite);
	trace_LOG(trace_DEBUG, "-I- 0x24  %04Xh  Max. timeout for buffer write\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.maxTimeOutBuffer);
	trace_LOG(trace_DEBUG, "-I- 0x25  %04Xh  Max. timeout per individual block erase\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.maxTimeOutBlockErase);
	trace_LOG(trace_DEBUG, "-I- 0x26  %04Xh  Max. timeout for full chip erase\n\r",
	pNorFlashCFI->norFlashCfiQueryInfo.maxTimeOutChipErase);
	
	trace_LOG(trace_DEBUG, "-I- 0x27  %04Xh  Device Size = 2N byte\n\r",
	pNorFlashCFI->norFlashCfiDeviceGeometry.deviceSize);
	trace_LOG(trace_DEBUG, "-I- 0x28  %04Xh  Flash Device Interface description\n\r",
	pNorFlashCFI->norFlashCfiDeviceGeometry.deviceInterface);
	trace_LOG(trace_DEBUG, "-I- 0x2A  %04Xh  Max. number of byte in multi-byte write\n\r",
	pNorFlashCFI->norFlashCfiDeviceGeometry.numMultiWrite);
	trace_LOG(trace_DEBUG, "-I- 0x2C  %04Xh  Number of Erase Block Regions within device\n\r",
	pNorFlashCFI->norFlashCfiDeviceGeometry.numEraseRegion);
	for(i = 0; i < pNorFlashCFI->norFlashCfiDeviceGeometry.numEraseRegion; i++) {
		trace_LOG(trace_DEBUG, "-I- 0x%2X  %04Xh  Number of Erase Blocks of identical size within region %x \n\r",
			0x2D + i * 4, pNorFlashCFI->norFlashCfiDeviceGeometry.eraseRegionInfo[i].Y, i );
		trace_LOG(trace_DEBUG, "-I- 0x%2X  %04Xh  (z) times 256 bytes within region %x \n\r",
			0x2E + i * 4, pNorFlashCFI->norFlashCfiDeviceGeometry.eraseRegionInfo[i].Z, i );
	}
}


//------------------------------------------------------------------------------
//         Exported functions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// Returns the numbers of block in all Norflash regions.
/// \param pNorFlashInfo  Pointer to a NorFlashInfo instance.
//------------------------------------------------------------------------------
unsigned int NorFlash_GetDeviceNumOfBlocks(
    struct NorFlashInfo *pNorFlashInfo)
{
    unsigned char i;
    unsigned int blocks = 0;
    unsigned short numBlockRegion;
    
    numBlockRegion = pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.numEraseRegion;
   
    for (i = 0; i < numBlockRegion; i++) {
        blocks += (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[i]).Y + 1;
    }
    return blocks;
}

//------------------------------------------------------------------------------
/// Returns the minimun block size in all Norflash regions.
/// \param pNorFlashInfo  Pointer to a NorFlashInfo instance.
//------------------------------------------------------------------------------
unsigned int NorFlash_GetDeviceMinBlockSize(
    struct NorFlashInfo *pNorFlashInfo)
{
    unsigned char i;
    unsigned short numBlockRegion;
    unsigned long size ;
    numBlockRegion = pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.numEraseRegion;
    
    size = (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[0].Z) * 256;
    
    for (i = 1; i < numBlockRegion; i++) {
        if (size > (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[i].Z) * 256) {
            size = (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[i].Z) * 256 ;
        }
    }
    return size;
}

//------------------------------------------------------------------------------
/// Returns the maximun block size in all Norflash regions.
/// \param pNorFlashInfo  Pointer to a NorFlashInfo instance.
//------------------------------------------------------------------------------
unsigned int NorFlash_GetDeviceMaxBlockSize(
    struct NorFlashInfo *pNorFlashInfo)
{
    unsigned char i;
    unsigned short numBlockRegion;
    unsigned long size ;
    numBlockRegion = pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.numEraseRegion;
    
    size = (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[0].Z) * 256;
    
    for (i = 1; i < numBlockRegion; i++) {
        if (size < (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[i].Z) * 256) {
            size = (pNorFlashInfo->cfiDescription.norFlashCfiDeviceGeometry.eraseRegionInfo[i].Z) * 256 ;
        }
    }
    return size;
}

//------------------------------------------------------------------------------
/// Returns the block size in giving block number.
/// \param pNorFlashInfo  Pointer to a NorFlashInfo instance.
/// \param sector  Sector number.
//------------------------------------------------------------------------------
unsigned int NorFlash_GetDeviceBlockSize(
    struct NorFlashInfo *pNorFlashInfo,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费人成精品欧美精品| 欧美日韩久久久| 国产一区二区三区美女| 日韩黄色免费网站| 秋霞国产午夜精品免费视频| 亚洲国产日韩在线一区模特| 亚洲综合小说图片| 亚洲高清视频中文字幕| 亚洲亚洲人成综合网络| 亚洲丰满少妇videoshd| 爽好久久久欧美精品| 日韩精品福利网| 免费久久精品视频| 国产在线视频精品一区| 懂色av一区二区在线播放| 国产成人精品一区二| 成人av第一页| 91性感美女视频| 色婷婷亚洲精品| 欧美老女人在线| 欧美一级日韩不卡播放免费| 日韩欧美在线1卡| 亚洲精品一区二区三区影院| 久久精品亚洲精品国产欧美kt∨| 日本一区二区视频在线| 亚洲三级久久久| 无吗不卡中文字幕| 久久电影国产免费久久电影| 国产精品一卡二| 99视频一区二区| 欧美日韩在线亚洲一区蜜芽| 欧美一区2区视频在线观看| 2014亚洲片线观看视频免费| 国产精品久久网站| 亚洲一区二区不卡免费| 美日韩一区二区三区| 国产精品羞羞答答xxdd| av一区二区不卡| 3d动漫精品啪啪一区二区竹菊| 欧美成人一区二区三区| 国产精品乱码久久久久久| 一区二区激情视频| 久久99国产精品尤物| k8久久久一区二区三区| 欧美日韩一区二区三区四区五区| 精品三级在线观看| 亚洲精品菠萝久久久久久久| 免费的国产精品| jizz一区二区| 日韩欧美电影在线| 亚洲人精品午夜| 精品亚洲免费视频| 91电影在线观看| 精品久久久久久久人人人人传媒| 综合久久国产九一剧情麻豆| 麻豆精品视频在线观看免费| 99精品久久只有精品| 日韩欧美国产三级| 亚洲香蕉伊在人在线观| 国产乱码精品一区二区三区忘忧草 | 极品少妇xxxx精品少妇| 99精品久久只有精品| 精品国产成人在线影院| 亚洲一区二区三区四区五区中文 | 成人app网站| 日韩视频免费直播| 一区二区三区在线视频观看58| 久久99热这里只有精品| 在线免费av一区| 国产精品每日更新| 国产伦精品一区二区三区在线观看| 欧美在线播放高清精品| 国产精品福利电影一区二区三区四区 | 狠狠狠色丁香婷婷综合久久五月| 一本久久综合亚洲鲁鲁五月天| 久久综合久久综合九色| 日韩中文字幕不卡| 欧洲视频一区二区| 中文字幕免费不卡| 六月丁香综合在线视频| 欧美日韩aaaaaa| 亚洲色图一区二区三区| 成人午夜av在线| 精品国产91洋老外米糕| 五月天一区二区| 在线观看成人免费视频| 亚洲欧美日韩人成在线播放| 国产成人精品亚洲日本在线桃色| 日韩免费看的电影| 日本人妖一区二区| 欧美巨大另类极品videosbest | 日韩精品在线网站| 视频精品一区二区| 欧美色国产精品| 亚洲一区二区四区蜜桃| 色菇凉天天综合网| 亚洲精品欧美在线| 日本电影欧美片| 亚洲色图.com| 97久久超碰国产精品| 中文字幕欧美一| www.亚洲在线| 国产精品美女久久福利网站| 国产不卡在线一区| 国产精品麻豆欧美日韩ww| 国产成人精品免费| 欧美激情在线免费观看| 国产成人aaa| 国产精品成人免费| 99久久精品情趣| 亚洲精品欧美专区| 欧美日韩精品欧美日韩精品一综合| 亚洲综合精品自拍| 91精品免费在线| 蜜臀av性久久久久蜜臀av麻豆| 日韩欧美在线网站| 国产精品影视天天线| 国产日韩欧美精品在线| 成人一区二区三区在线观看| 亚洲欧洲国产专区| 色哟哟一区二区三区| 午夜影院在线观看欧美| 欧美精品一卡二卡| 久久国产精品免费| 国产区在线观看成人精品| 成人性生交大片| 亚洲人123区| 欧美久久婷婷综合色| 麻豆精品在线观看| 中文字幕高清不卡| 色天天综合久久久久综合片| 午夜视频一区二区| 日韩欧美中文一区| av欧美精品.com| 亚洲不卡在线观看| 久久伊99综合婷婷久久伊| 成人app下载| 日本vs亚洲vs韩国一区三区二区 | 中文一区二区在线观看| 一本色道a无线码一区v| 免费高清在线视频一区·| 欧美经典一区二区| 欧美日韩一区二区三区高清 | 日韩三级.com| 暴力调教一区二区三区| 亚洲国产精品久久一线不卡| 欧美草草影院在线视频| av一区二区不卡| 免费高清在线视频一区·| 中文在线一区二区| 在线播放欧美女士性生活| 国产成a人亚洲精| 视频在线观看国产精品| 国产精品不卡在线| 日韩一区二区免费在线电影| 99v久久综合狠狠综合久久| 日本欧美加勒比视频| 综合婷婷亚洲小说| 久久久久久久久久久久久久久99 | 色天使久久综合网天天| 国内精品久久久久影院一蜜桃| 亚洲精品videosex极品| 久久久久久久久97黄色工厂| 精品视频在线视频| 99精品视频免费在线观看| 久久99精品久久久久久久久久久久| 亚洲免费色视频| 国产亚洲精品bt天堂精选| 911精品国产一区二区在线| aaa国产一区| 精品影视av免费| 亚洲va欧美va人人爽| 亚洲欧洲日韩av| 久久久精品影视| 日韩女优电影在线观看| 欧美日韩高清影院| 一本一道久久a久久精品综合蜜臀| 国产黑丝在线一区二区三区| 美女任你摸久久| 亚洲一区二区三区四区中文字幕| 亚洲国产精品成人久久综合一区 | 亚洲午夜久久久久中文字幕久| 日本一区二区三区dvd视频在线| 欧美一区二区三区在线| 日本福利一区二区| 97精品电影院| 成人18视频日本| 国产91丝袜在线观看| 国产伦精品一区二区三区免费| 日韩高清欧美激情| 亚洲国产精品自拍| 亚洲欧美日韩久久| 国产精品私人影院| 中文字幕国产精品一区二区| 国产无人区一区二区三区| 精品区一区二区| www国产精品av| 精品伦理精品一区| wwwwww.欧美系列| 精品久久99ma|