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

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

?? lld_bdsxxx_asp.c

?? Spansion 公司(原AMD flash 部門 / 富士通 閃存部門) FLASH 訪問的參考函數
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* lld_bdsxxx_asp.c - Source Code for Spansion's Low Level Driver */
/* v7.2.0 */
/**************************************************************************
* Copyright (C)2007 Spansion LLC. All Rights Reserved. 
*
* This software is owned and published by: 
* Spansion Inc, 915 DeGuigne Dr. Sunnyvale, CA  94088-3453 ("Spansion").
*
* BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 
* BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.
*
* This software constitutes driver source code for use in programming Spansion's 
* Flash memory components. This software is licensed by Spansion to be adapted only 
* for use in systems utilizing Spansion's Flash memories. Spansion is not be 
* responsible for misuse or illegal use of this software for devices not 
* supported herein.  Spansion is providing this source code "AS IS" and will 
* not be responsible for issues arising from incorrect user implementation 
* of the source code herein.  
*
* SPANSION MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, 
* REGARDING THE SOFTWARE, ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED 
* USE, INCLUDING, WITHOUT LIMITATION, NO IMPLIED WARRANTY OF MERCHANTABILITY, 
* FITNESS FOR A  PARTICULAR PURPOSE OR USE, OR NONINFRINGEMENT.  SPANSION WILL 
* HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, NEGLIGENCE OR 
* OTHERWISE) FOR ANY DAMAGES ARISING FROM USE OR INABILITY TO USE THE SOFTWARE, 
* INCLUDING, WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, 
* SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, SAVINGS OR PROFITS, 
* EVEN IF SPANSION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  
*
* This software may be replicated in part or whole for the licensed use, 
* with the restriction that this Copyright notice must be included with 
* this software, whether used in part or whole, at all times.  
*/
#include "lld.h"

/* Protection Addresses */
#define LLD_PUV7_OW_ADDR (0x001A)
#define LLD_PUV7_PL_ADDR (0x000A)
#define LLD_PUV7_SL_ADDR (0x0012)
#define LLD_PUV7_WP_ADDR (0x003A)

/*  Dynamic Protection Bit Commands */
#define LLD_PUV7_DYB_STATUS_CMD  ((LLD_DEV_MULTIPLIER) * (0x58))
#define LLD_PUV7_DYB_WRITE_CMD   ((LLD_DEV_MULTIPLIER) * (0x48))
#define LLD_PUV7_DYB_ERASE_CMD   ((LLD_DEV_MULTIPLIER) * (0x48))
#define LLD_PUV7_DYB_WRITE_DATA  ((LLD_DEV_MULTIPLIER) * (0x01))
#define LLD_PUV7_DYB_ERASE_DATA  ((LLD_DEV_MULTIPLIER) * (0x00))

/*  SecSi Sector Protect Commands */
#define LLD_PUV7_SECSI_SEC_LOCK_SETUP_CMD   ((LLD_DEV_MULTIPLIER) * (0x60))
#define LLD_PUV7_SECSI_SEC_LOCK_CMD         ((LLD_DEV_MULTIPLIER) * (0x68))
#define LLD_PUV7_SECSI_SEC_LOCK_PGM_VER_CMD ((LLD_DEV_MULTIPLIER) * (0x48))

/* Persistent Protection Bit Commands */
#define LLD_PUV7_PPB_SETUP_CMD        ((LLD_DEV_MULTIPLIER) * (0x60))
#define LLD_PUV7_PPB_PGM_CMD          ((LLD_DEV_MULTIPLIER) * (0x68))
#define LLD_PUV7_PPB_PGM_VER_CMD      ((LLD_DEV_MULTIPLIER) * (0x48))
#define LLD_PUV7_PPB_ERASE_CMD        ((LLD_DEV_MULTIPLIER) * (0x60))
#define LLD_PUV7_PPB_ERASE_VER_CMD    ((LLD_DEV_MULTIPLIER) * (0x40))

#define LLD_PUV7_PPB_LOCK_BIT_SET_CMD     ((LLD_DEV_MULTIPLIER) * (0x78))
#define LLD_PUV7_PPB_LOCK_BIT_STATUS_CMD  ((LLD_DEV_MULTIPLIER) * (0x58))

/* Password Protection Commands */
#define LLD_PUV7_PASSWD_PGM_CMD       ((LLD_DEV_MULTIPLIER) * (0x38))
#define LLD_PUV7_PASSWD_VERIFY_CMD    ((LLD_DEV_MULTIPLIER) * (0xC8))
#define LLD_PUV7_PASSWD_UNLOCK_CMD    ((LLD_DEV_MULTIPLIER) * (0x28))

#define PPB_PROTECTED     (1*LLD_DEV_MULTIPLIER)
#define PPB_UNPROTECTED   (0*LLD_DEV_MULTIPLIER)

#define	DQ0_BIT_MASK	(0x01)		/* select DQ0 */
#define	DQ1_BIT_MASK	(0x02)		/* select DQ1 */
#define	DQ2_BIT_MASK	(0x04)		/* select DQ2 */
#define	DQ5_BIT_MASK	(0x20)		/* select DQ5 */
#define	DQ6_BIT_MASK	(0x40)		/* select DQ6 */
#define	DQ7_BIT_MASK	(0x80)		/* select DQ7 */

#define LLD_DEV_DQ0_MASK	 ((LLD_DEV_MULTIPLIER) * (DQ0_BIT_MASK))
#define LLD_DEV_DQ1_MASK	 ((LLD_DEV_MULTIPLIER) * (DQ1_BIT_MASK))
#define LLD_DEV_DQ6_MASK	 ((LLD_DEV_MULTIPLIER) * (DQ6_BIT_MASK))
#define LLD_DEV_DQ7_MASK	 ((LLD_DEV_MULTIPLIER) * (DQ7_BIT_MASK))
/*
*
*
*
*
*/
DEVSTATUS lld_PasswordProtectionProgramOp
(
FLASHDATA * base_addr,
FLASHDATA pwd0,
FLASHDATA pwd1,
FLASHDATA pwd2,
FLASHDATA pwd3
)
{
  FLASHDATA act_data_ptr;
  DEVSTATUS status;
  int attempts = 0;

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_PGM_CMD);
  FLASH_WR(base_addr, 0, pwd0); 
  status = lld_Poll(base_addr, 0, &pwd0, &act_data_ptr, LLD_P_POLL_PGM);
  if (status != DEV_NOT_BUSY)
  {
    FLASH_WR(base_addr, 0x00, NOR_RESET_CMD); /* go back to read array mode */
    return(status);
  }

  attempts = 0;
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);       
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);       
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_PGM_CMD);
  FLASH_WR(base_addr, 1, pwd1);
  status = lld_Poll(base_addr, 1, &pwd1, &act_data_ptr, LLD_P_POLL_PGM);
  if (status != DEV_NOT_BUSY)
  {
    FLASH_WR(base_addr, 0x00, NOR_RESET_CMD); /* go back to read array mode */
    return(status);
  }

  attempts = 0;
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);       
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);       
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_PGM_CMD);
  FLASH_WR(base_addr, 2, pwd2);
  status = lld_Poll(base_addr, 2, &pwd2, &act_data_ptr, LLD_P_POLL_PGM);
  if (status != DEV_NOT_BUSY)
  {
    FLASH_WR(base_addr, 0x00, NOR_RESET_CMD); /* go back to read array mode */
    return(status);
  }

  attempts = 0;
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);       
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);       
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_PGM_CMD);
  FLASH_WR(base_addr, 3, pwd3);
  status = lld_Poll(base_addr, 3, &pwd3, &act_data_ptr, LLD_P_POLL_PGM);

  FLASH_WR(base_addr, 0x00, NOR_RESET_CMD); /* go back to read array mode */
  return(status);
}

/*
*
*
*
*
*/
void lld_PasswordProtectionPasswordVerify
( 
FLASHDATA * base_addr,
FLASHDATA *pd0,
FLASHDATA *pd1,
FLASHDATA *pd2,
FLASHDATA *pd3
)
{
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_VERIFY_CMD);
  *pd0 = FLASH_RD(base_addr, 0x0000);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_VERIFY_CMD);
  *pd1 = FLASH_RD(base_addr, 0x0000);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_VERIFY_CMD);
  *pd2 = FLASH_RD(base_addr, 0x0000);

  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_VERIFY_CMD);
  *pd3 = FLASH_RD(base_addr, 0x0000);

  FLASH_WR(base_addr, 0x00, NOR_RESET_CMD); /* go back to read array mode */
}

/*
*
*
*
*
*/
void lld_PasswordProtectionPasswordUnlock
(
FLASHDATA * base_addr,
FLASHDATA pd0,
FLASHDATA pd1,
FLASHDATA pd2,
FLASHDATA pd3
)
{
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);           
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);           
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PASSWD_UNLOCK_CMD); 
  FLASH_WR(base_addr, 0, pd0);
  FLASH_WR(base_addr, 1, pd1);
  FLASH_WR(base_addr, 2, pd2);
  FLASH_WR(base_addr, 3, pd3);

  FLASH_WR(base_addr, 0x00, NOR_RESET_CMD); /* go back to read array mode */
}

/*
*
*
*
*
*/
FLASHDATA PPB_Status
(
FLASHDATA * base_addr,
ADDRESS   offset
)
{
  FLASHDATA retval;

  /* Write command Sequence */
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);             /* *(xxx555) = 0xAA */
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);             /* *(xxx2AA) = 0x55 */
  FLASH_WR(base_addr, offset + LLD_UNLOCK_ADDR1, NOR_AUTOSELECT_CMD);  /* *(sax555) = 0x90 */
  retval = (FLASH_RD(base_addr, offset + 2) );                         /* read ppb */

  /* Exit Mode */
  FLASH_WR(base_addr, 0, NOR_RESET_CMD);
  return(retval);
}

/*
*
*
*
*
*/
FLASHDATA PPB_Program
(
FLASHDATA * base_addr,
ADDRESS   offset
)
{
  FLASHDATA retval = PPB_UNPROTECTED;
  int plscnt = 0;

  /* if PPB already protected, don't over program it */
  if (PPB_Status(base_addr, offset) == PPB_PROTECTED)
  {
    return(PPB_PROTECTED);
  }

  /* Write command Sequence */
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, NOR_UNLOCK_DATA1);       /* *(xxx555) = 0xAA */
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR2, NOR_UNLOCK_DATA2);       /* *(xxx2AA) = 0x55 */
  FLASH_WR(base_addr, LLD_UNLOCK_ADDR1, LLD_PUV7_PPB_SETUP_CMD); /* *(xxx2AA) = 0x60 */

  while ((plscnt++ < 25) && (retval != PPB_PROTECTED) )
  {
    FLASH_WR(base_addr, offset + 2, LLD_PUV7_PPB_PGM_CMD);     /* *(sa+2) = 0x68  */
    DelayMicroseconds(150);                                    /* datasheet p. 22 */
    FLASH_WR(base_addr, offset + 2, LLD_PUV7_PPB_PGM_VER_CMD); /* *(sa+2) = 0x48  */
    retval  = (FLASH_RD(base_addr, offset + 2) );              /* return verify information */

  }

  /* Exit Mode */
  FLASH_WR(base_addr, offset + 2, NOR_RESET_CMD);

  return(retval);
}

/*
*
*
*
*
*/
FLASHDATA PPB_AllErase
(
FLASHDATA * base_addr,
ADDRESS   offset
)
{
  FLASHDATA retval = PPB_PROTECTED;
  int plscnt = 0;

  /* pre-program the protect bits */
/*  for (i = 0; i < number_of_sector_groups; i++)
  {
    if ( lld_ppb(i) == PPB_UNPROTECTED)
    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美视频在线观看| 91久久一区二区| 视频一区二区三区在线| 亚洲乱码国产乱码精品精的特点| 久久亚洲精品小早川怜子| 日韩午夜精品电影| 日韩久久精品一区| 久久九九99视频| 成人欧美一区二区三区黑人麻豆| 亚洲国产成人一区二区三区| 国产精品欧美久久久久一区二区| 中文字幕第一区| 亚洲男人天堂一区| 亚洲成人免费在线观看| 日韩国产成人精品| 九九国产精品视频| 成人中文字幕电影| 91黄色免费网站| 欧美一区二区在线免费播放| 久久亚区不卡日本| 亚洲欧洲制服丝袜| 午夜欧美视频在线观看| 精品在线视频一区| 成人激情午夜影院| 欧美日韩一区二区三区四区五区 | 99re成人精品视频| 色综合天天综合网天天看片 | 国产精品私人影院| 亚洲欧美乱综合| 亚洲精品ww久久久久久p站| 亚洲国产精品激情在线观看| 亚洲青青青在线视频| 日韩av中文在线观看| 国产成a人无v码亚洲福利| 色婷婷精品大在线视频| 日韩免费观看高清完整版| 国产精品少妇自拍| 亚洲一区电影777| 精久久久久久久久久久| 99re8在线精品视频免费播放| 欧美日韩国产区一| 久久久国产精品午夜一区ai换脸| 久久综合久久综合久久| 樱桃国产成人精品视频| 狠狠狠色丁香婷婷综合激情| 欧美综合色免费| 久久久av毛片精品| 日韩在线播放一区二区| 91免费观看国产| 国产亚洲美州欧州综合国| 亚欧色一区w666天堂| 96av麻豆蜜桃一区二区| 久久综合丝袜日本网| 午夜精品一区二区三区免费视频| 成人一级片在线观看| 日韩欧美第一区| 亚洲国产精品影院| 91欧美一区二区| 国产精品国产三级国产a| 久久av资源网| 日韩欧美国产一区在线观看| 天天色图综合网| 91福利在线看| 亚洲人成精品久久久久| 北条麻妃一区二区三区| 国产日韩欧美一区二区三区综合| 激情综合五月婷婷| 日韩欧美综合在线| 日本亚洲三级在线| 色视频成人在线观看免| 中文字幕在线视频一区| 国产成人精品aa毛片| 久久亚洲精精品中文字幕早川悠里 | www亚洲一区| 精品亚洲aⅴ乱码一区二区三区| 日韩精品一区二区三区在线观看| 亚洲尤物视频在线| 欧亚洲嫩模精品一区三区| 亚洲一区中文在线| 6080亚洲精品一区二区| 久久99在线观看| 日韩免费视频线观看| 国产一区二区不卡| 国产欧美一区在线| av亚洲精华国产精华精| 亚洲黄色小视频| 在线视频你懂得一区| 婷婷综合久久一区二区三区| 欧美喷潮久久久xxxxx| 蜜臀av一区二区| 国产婷婷色一区二区三区四区| 国产不卡一区视频| 亚洲精品国产无天堂网2021| 91久久精品国产91性色tv| 天堂午夜影视日韩欧美一区二区| 日韩一区二区电影在线| 国内精品久久久久影院薰衣草 | 国内精品免费在线观看| 精品国产91洋老外米糕| 国产高清亚洲一区| 一区二区在线观看视频在线观看| 在线看日韩精品电影| 免费成人你懂的| 国产精品久久久久影院色老大| 91蝌蚪国产九色| 久久精品国产亚洲aⅴ | 99久免费精品视频在线观看| 亚洲国产一区二区在线播放| 欧美一区二区三区免费| 成人一二三区视频| 亚洲国产中文字幕在线视频综合| 日韩一卡二卡三卡国产欧美| 99综合影院在线| 日韩成人精品视频| 亚洲人妖av一区二区| 欧美大尺度电影在线| 精品粉嫩aⅴ一区二区三区四区| 久久九九全国免费| 欧美无砖砖区免费| 久久精品国产免费看久久精品| 国产精品丝袜久久久久久app| 欧美日韩一级二级| 国产福利一区二区三区视频在线 | 99精品国产热久久91蜜凸| 天堂在线亚洲视频| 自拍偷拍国产精品| 亚洲国产精品黑人久久久| 欧美一区二区在线看| 在线视频中文字幕一区二区| 国产91露脸合集magnet| 美女视频网站久久| 五月天激情小说综合| 亚洲女人的天堂| 中文字幕一区日韩精品欧美| 精品国产乱码91久久久久久网站| 欧美日韩国产中文| 91亚洲精品久久久蜜桃| 成人免费黄色大片| 国产成人aaa| 亚洲天堂福利av| 亚洲成人在线网站| 一区二区视频在线| 中文字幕日韩av资源站| 国产日韩欧美一区二区三区乱码| 日韩视频一区二区三区| 5月丁香婷婷综合| 欧美日韩你懂得| 欧美日韩一区中文字幕| 欧美性videosxxxxx| 色婷婷av久久久久久久| 色综合久久中文字幕| 91在线观看一区二区| av在线免费不卡| 91浏览器打开| 欧美亚洲动漫制服丝袜| 91免费视频大全| 色综合久久久久久久久| 色噜噜狠狠一区二区三区果冻| av在线这里只有精品| 色噜噜狠狠色综合欧洲selulu | 亚洲欧洲在线观看av| 中文字幕在线不卡一区二区三区| 综合欧美一区二区三区| 亚洲激情六月丁香| 亚洲成人动漫av| 久久不见久久见免费视频7| 国产精品资源在线| 成人动漫一区二区在线| 在线亚洲高清视频| 欧美三级视频在线| 欧美r级电影在线观看| 久久久久久久久久美女| 国产精品久久久久久久浪潮网站| 国产精品美女久久久久久久久久久 | 日韩女同互慰一区二区| 久久久激情视频| 亚洲精品伦理在线| 日日嗨av一区二区三区四区| 国产一区中文字幕| 色琪琪一区二区三区亚洲区| 91麻豆精品国产91久久久资源速度| 日韩网站在线看片你懂的| 欧美激情在线一区二区| 亚洲第一狼人社区| 国产成人在线电影| 欧美日韩一二三| 国产日韩欧美一区二区三区乱码| 一区二区三区av电影| 久久精品国产亚洲一区二区三区| 97se亚洲国产综合自在线不卡| 88在线观看91蜜桃国自产| 国产精品久久免费看| 青娱乐精品视频| 91玉足脚交白嫩脚丫在线播放| 欧美剧情片在线观看| 国产精品免费视频观看| 久久精品久久精品| 欧美人伦禁忌dvd放荡欲情| 欧美激情在线观看视频免费| 日本一道高清亚洲日美韩|