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

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

?? lld_wsxxx_asp.c

?? Spansion 公司(原AMD flash 部門 / 富士通 閃存部門) FLASH 訪問的參考函數
?? C
?? 第 1 頁 / 共 2 頁
字號:

/******************************************************************************
* 
* lld_PpbLockBitReadCmd - Read the Ppb Lock Bit value.
* Note: Need to issue lld_PpbLockBitEntryCmd() before read.
* RETURNS: 
*
*/
FLASHDATA lld_PpbLockBitReadCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  return(FLASH_RD(base_addr, 0));
}

/******************************************************************************
* 
* lld_PpbLockBitExitCmd - Exit Ppb Lock Bit mode command.
*
* RETURNS: n/a
*
*/
void lld_PpbLockBitExitCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_SETUP_CMD);
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_CMD);
}
#endif /* REMOVE_ASP_PPB_LOCK */

#ifndef REMOVE_ASP_DYB

/******************************************************************************
* 
* lld_DybEntryCmd - Dynamic (Volatile) Sector Protection Entry Command.
*
* RETURNS: n/a
*
*/
void lld_DybEntryCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{

  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, WSXXX_DYB_ENTRY);
}

/******************************************************************************
* 
* lld_DybSetCmd - Dynamic (Volatile) Sector Protection Set Command.
* Note: Need to issue lld_DybEntryCmd() before issue this command.
* RETURNS: n/a
*
*/
void lld_DybSetCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS   offset			/* sector offset address */
)
{
  FLASH_WR(base_addr, 0, NOR_UNLOCK_BYPASS_PROGRAM_CMD);
  FLASH_WR(base_addr, offset, 0x00000000);
}

/******************************************************************************
* 
* lld_DybClrCmd - Dynamic (Volatile) Sector Protection Clear Command.
* Note: Need to issue lld_DybEntryCmd() before issue this command.
* RETURNS: n/a
*
*/
void lld_DybClrCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS   offset			/* sector offset address */
)
{
  FLASH_WR(base_addr, 0, NOR_UNLOCK_BYPASS_PROGRAM_CMD);
  FLASH_WR(base_addr, offset, WSXXX_DYB_CLEAR);
}

/******************************************************************************
* 
* lld_DybReadCmd - Dynamic (Volatile) Sector Protection Read Command.
* Note: Need to issue lld_DybEntryCmd() before issue this command.
* RETURNS: 
*
*/
FLASHDATA lld_DybReadCmd
(
FLASHDATA *   base_addr,	/* device base address in system */
ADDRESS   offset			/* sector offset address */
)
{
  return(FLASH_RD(base_addr, offset));
}

/******************************************************************************
* 
* lld_DybExitCmd - Exit Dynamic (Volatile) Sector Protection Mode Command.
*
* RETURNS: n/a
*
*/
void lld_DybExitCmd
(
FLASHDATA *   base_addr		/* device base address in system */
)
{
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_SETUP_CMD);
  FLASH_WR(base_addr, 0, NOR_SECSI_SECTOR_EXIT_CMD);
}

#endif /* REMOVE_ASP_DYB */



/****************************************************************************
*                                                                            *
* Section below are example codes to do operations using Ppb commands.       *
*                                                                            *
******************************************************************************/


#ifndef REMOVE_ASP_PPB
/******************************************************************************
* 
* lld_PpbAllEraseOp - Operation to clear protection for all sections.
*
* RETURNS: 0 Successful
*         -1 Failed
*
*/
int lld_PpbAllEraseOp ( FLASHDATA *   base_addr)
{
  DEVSTATUS    dev_status = DEV_STATUS_UNKNOWN;
  unsigned long  polling_counter = 0xFFFFFFFF;
  

    if (lld_PpbLockBitReadOp(base_addr) == PPB_PROTECTED)    /* if it is already locked */
    {
       return(-1);                            /* return an error cuz Lock Bit is locked */
    }


    lld_PpbEntryCmd(base_addr, 0);
    lld_PpbAllEraseCmd(base_addr);

    /* poll for completion */
    do
    {
        polling_counter--;
        /* no checking for interrupts */

        dev_status = lld_StatusGet((FLASHDATA *)base_addr, 0);

    } while ((dev_status == DEV_BUSY) && polling_counter);

    /* if not done, then we have an error */
    if (dev_status != DEV_NOT_BUSY)
    {
        lld_ResetCmd((FLASHDATA *)base_addr);
        lld_PpbExitCmd(base_addr);
        return (-1); /* return error */
    }

    lld_PpbExitCmd(base_addr);		/* exit Ppb protection mode command */
    return 0; /* successful */
}

/******************************************************************************
* 
* lld_PpbStatusReadOp - Operation to read the Persistent Protection status register.
*
* RETURNS: FLASHDATA
*
*/

FLASHDATA lld_PpbStatusReadOp ( FLASHDATA *base_addr, ADDRESS offset)
{
   FLASHDATA  status;

   lld_PpbEntryCmd(base_addr,offset);
   status = (FLASH_RD(base_addr, offset));
   lld_PpbExitCmd(base_addr);
    
   return status;

}

/******************************************************************************
* 
* lld_PpbProgramOp - Operation set the Persistent Protection for a sector. 
*
* RETURNS: 0 Successful
*         -1 Failed
*
*/
int lld_PpbProgramOp ( FLASHDATA *base_addr, ADDRESS offset)
{
  DEVSTATUS    dev_status = DEV_STATUS_UNKNOWN;
  unsigned long  polling_counter = 0xFFFFFFFF;
  
  if (lld_PpbLockBitReadOp(base_addr) == PPB_PROTECTED)      /* if it is already locked */
  {
     return(-1);                              /* return an error cuz Lock Bit is locked */
  }


  lld_PpbEntryCmd(base_addr,offset);
  lld_PpbProgramCmd(base_addr, offset);

  /* poll for completion */
  do
  {
     polling_counter--;
     /* no checking for interrupts */
     /* poll Sector 0 for completion - workaround */
     dev_status = lld_StatusGet((FLASHDATA *)base_addr, 0);

  } while ((dev_status == DEV_BUSY) && polling_counter);

  /* if not done, then we have an error */
  if (dev_status != DEV_NOT_BUSY)
  {
     lld_ResetCmd((FLASHDATA *)base_addr);
     lld_PpbExitCmd(base_addr);
     return (-1); /* return error */
  }

  lld_PpbExitCmd(base_addr);
  return 0; /* successful */
}
#endif /* REMOVE_ASP_PPB */

#ifndef REMOVE_ASP_PPB_LOCK_BIT
/******************************************************************************
* 
* lld_PpbLockBitSetOp - Operation to set the global lock bit.
*
* RETURNS: 0 Successful
*         -1 Failed
*
*/
int lld_PpbLockBitSetOp ( FLASHDATA *   base_addr)
{ 
  DEVSTATUS      dev_status = DEV_STATUS_UNKNOWN;
  unsigned long  polling_counter = 0xFFFFFFFF;
  
    lld_PpbLockBitEntryCmd(base_addr);
    lld_PpbLockBitSetCmd(base_addr);

    /* poll for completion */
    do
    {
    	polling_counter--;
    	/* no checking for interrupts */
    
    	dev_status = lld_StatusGet((FLASHDATA *)base_addr, 0);
    
    } while ((dev_status == DEV_BUSY) && polling_counter);
    
    /* if not done, then we have an error */
    if (dev_status != DEV_NOT_BUSY)
    {
        lld_ResetCmd((FLASHDATA *)base_addr);
        lld_PpbLockBitExitCmd(base_addr);
        return (-1);  /* return error */ 
    }

    lld_PpbLockBitExitCmd(base_addr);
    return 0; /* successfull */
}

/******************************************************************************
* 
* lld_PpbLockBitReadOp - Operation to read global lock bit.
*
* RETURNS: FLASHDATA
*
*/
FLASHDATA  lld_PpbLockBitReadOp ( FLASHDATA *base_addr)
{
  FLASHDATA retval;

  (lld_PpbLockBitEntryCmd)(base_addr);
  retval = (lld_PpbLockBitReadCmd)(base_addr);
  lld_PpbLockBitExitCmd(base_addr);

  return retval;
}
#endif /* REMOVE_ASP_PPB_LOCK_BIT */



/******************************************************************************
* 
* lld_LockRegBitsReadOp - Operation to read the lock status register.
*
* RETURNS: FLASHDATA
*
*/
FLASHDATA lld_LockRegBitsReadOp ( FLASHDATA *base_addr)
{ 
  FLASHDATA value;

  lld_LockRegEntryCmd(base_addr);
  value = lld_LockRegBitsReadCmd(base_addr);
  lld_LockRegExitCmd(base_addr);

  return(value);
}

/******************************************************************************
* 
* lld_LockRegBitsProgramOp - Operation to program the lock register.
*
* RETURNS: 0 Successful
*         -1 Failed
*
*/
int lld_LockRegBitsProgramOp ( FLASHDATA *base_addr, FLASHDATA value)
{
  DEVSTATUS    dev_status = DEV_STATUS_UNKNOWN;
  unsigned long  polling_counter = 0xFFFFFFFF;

  lld_LockRegEntryCmd(base_addr);
  lld_LockRegBitsProgramCmd(base_addr,value);

  /* poll for completion */
  do
  {
      polling_counter--;
      /* no checking for interrupts */

      dev_status = lld_StatusGet((FLASHDATA *)base_addr, 0);

  } while ((dev_status == DEV_BUSY) && polling_counter);

  /* if not done, then we have an error */
  if (dev_status != DEV_NOT_BUSY)
  {
     lld_ResetCmd((FLASHDATA *)base_addr);
     lld_LockRegExitCmd(base_addr);
     return (-1); /* return error */
  }

  lld_LockRegExitCmd(base_addr);
  return 0; /* successful */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线观看免费| 一区二区三区精品在线| 在线不卡的av| 欧美日韩免费一区二区三区视频| 91丨porny丨最新| 色综合久久中文字幕| 91亚洲午夜精品久久久久久| 欧洲在线/亚洲| 欧美日韩中字一区| 欧美大片在线观看一区| 欧美电影免费观看完整版| 久久久不卡网国产精品二区| 国产免费观看久久| 亚洲麻豆国产自偷在线| 亚洲在线观看免费视频| 视频在线观看一区二区三区| 久热成人在线视频| 成人动漫在线一区| 色八戒一区二区三区| 欧美日韩不卡一区| 欧美成人女星排名| 中文字幕日本不卡| 香蕉成人啪国产精品视频综合网 | 一区二区三区在线影院| 亚洲制服丝袜在线| 美国av一区二区| 懂色av一区二区三区蜜臀| 91理论电影在线观看| 88在线观看91蜜桃国自产| 精品福利av导航| 国产精品青草久久| 亚洲福中文字幕伊人影院| 激情久久久久久久久久久久久久久久| 久久99久国产精品黄毛片色诱| 成人午夜私人影院| 91麻豆精品久久久久蜜臀 | 欧美日韩免费一区二区三区视频| 精品久久久久久久久久久院品网 | 欧美人与z0zoxxxx视频| 久久精品亚洲麻豆av一区二区| 中文字幕在线观看一区| 日韩va亚洲va欧美va久久| 成人免费黄色在线| 欧美大度的电影原声| 亚洲精品va在线观看| 国产成人小视频| 欧美日本一道本在线视频| 中文字幕第一页久久| 久久国产精品免费| 日韩欧美一区在线| 亚洲视频小说图片| 国产一区二区中文字幕| 欧美天堂亚洲电影院在线播放| 国产欧美一区视频| 国产一区二区毛片| 欧美一区二区视频在线观看| 亚洲精品成人在线| 777精品伊人久久久久大香线蕉| 欧美激情综合在线| 国产一区二区导航在线播放| 91精品一区二区三区在线观看| 成人av网址在线观看| 97精品电影院| 99久久99久久精品国产片果冻| 欧美一级淫片007| 亚洲国产精品久久艾草纯爱| 99天天综合性| 国产精品护士白丝一区av| 高清日韩电视剧大全免费| 久久久久久久久久久久电影 | 奇米精品一区二区三区四区 | 国产精品日韩精品欧美在线| 国产永久精品大片wwwapp| 日韩一区二区三区高清免费看看| 亚洲国产wwwccc36天堂| 欧美日韩国产在线观看| 日韩精品国产精品| 91精品国产综合久久蜜臀| 日韩和欧美一区二区三区| 欧美日韩高清一区二区不卡| 亚洲成av人**亚洲成av**| 欧美人伦禁忌dvd放荡欲情| 视频一区中文字幕| 日韩精品一区二| 国产aⅴ精品一区二区三区色成熟| 国产午夜亚洲精品午夜鲁丝片| 成人精品一区二区三区中文字幕| 国产精品亲子伦对白| 国产午夜精品久久| kk眼镜猥琐国模调教系列一区二区| 国产精品乱子久久久久| 91丨九色丨蝌蚪富婆spa| 亚洲一级二级三级| 日韩女优电影在线观看| 成人黄色综合网站| 亚洲福利电影网| 欧美videossexotv100| 成人av网址在线| 日韩黄色一级片| 欧美国产精品一区二区三区| 91小视频免费看| 日本一不卡视频| 中文字幕亚洲一区二区av在线 | 一区二区三区精品| 精品国产一区二区精华| 成人91在线观看| 天天影视网天天综合色在线播放| 日韩免费看的电影| 色婷婷狠狠综合| 久久成人18免费观看| 亚洲摸摸操操av| 亚洲精品一区二区三区蜜桃下载| 成人av资源下载| 麻豆91在线观看| 亚洲观看高清完整版在线观看| 精品国产a毛片| 91久久精品日日躁夜夜躁欧美| 狠狠狠色丁香婷婷综合久久五月| 亚洲日本电影在线| 久久久久九九视频| 欧美高清视频在线高清观看mv色露露十八 | 91精品1区2区| 国产99精品在线观看| 蜜桃av一区二区在线观看 | 日韩av一区二区三区| 国产精品蜜臀av| 精品福利视频一区二区三区| 欧美在线色视频| 成人av综合一区| 国内国产精品久久| 婷婷开心激情综合| 国产精品理伦片| 精品国产乱码久久久久久久| 337p亚洲精品色噜噜噜| 欧美在线不卡视频| av电影天堂一区二区在线| 国产精品一级黄| 韩国理伦片一区二区三区在线播放| 亚洲成av人片在线观看| 有码一区二区三区| 亚洲三级在线免费| 国产精品欧美久久久久无广告| 久久你懂得1024| 久久精品在线观看| 国产视频一区在线播放| 国产亚洲欧美在线| 久久久久久久久伊人| 久久久午夜精品理论片中文字幕| 欧美精品欧美精品系列| 欧美日韩国产综合久久| 欧美午夜精品久久久久久孕妇| 色婷婷综合激情| 欧美日韩另类一区| 欧美日韩二区三区| 日韩一级完整毛片| 欧美白人最猛性xxxxx69交| 日韩欧美高清在线| 久久五月婷婷丁香社区| 国产婷婷色一区二区三区在线| 久久久精品天堂| 中文字幕亚洲欧美在线不卡| 一区二区高清视频在线观看| 亚洲自拍偷拍麻豆| 青青草原综合久久大伊人精品优势| 视频在线在亚洲| 国产精品一区二区你懂的| 成人精品一区二区三区中文字幕| 色偷偷88欧美精品久久久| 欧美日韩国产高清一区二区| 欧美一区二区三区色| 久久网这里都是精品| 亚洲人成精品久久久久久| 午夜精品久久久久久久99樱桃| 爽好多水快深点欧美视频| 国产精品一区二区在线播放| 成人黄色片在线观看| 欧美视频中文字幕| 2021中文字幕一区亚洲| 国产精品日韩成人| 日韩中文字幕麻豆| 国产一区二区福利| 欧美在线不卡视频| 2020日本不卡一区二区视频| 亚洲丝袜美腿综合| 日本特黄久久久高潮| 成人激情小说网站| 欧美精品aⅴ在线视频| 中文字幕国产一区二区| 午夜欧美大尺度福利影院在线看| 国产在线视视频有精品| 在线观看日韩av先锋影音电影院| 日韩午夜中文字幕| 亚洲裸体xxx| 国产一区二区美女诱惑| 欧美日韩成人综合在线一区二区| 欧美国产精品一区| 激情图片小说一区| 欧美日韩精品一区视频| 国产精品传媒视频| 国产呦精品一区二区三区网站|