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

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

?? aduc70xxflash.c

?? AD公司的FlashADuC70xx的Flashloader
?? C
字號:
/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2005
 *
 *    File name   : ADuC70xxFlash.c
 *    Description : ADuC70xx Flash driver
 *
 *    History :
 *    1. Data         : July 6, 2005
 *       Author       : Stanimir Bonev
 *       Description  : Create
 *    1. Data         : July 8, 2005
 *       Author       : Stanimir Bonev
 *       Description  : Modify
 *    Add initialization of FEEMOD for ADuC702x
 *    $Revision: 1.1.2.1 $
**************************************************************************/

#ifdef __ADuC7030
#include <ioaduc7030.h>
#define FLASH_BLOCK_NUMB (30 * 2) // 30KB User memory blocks
#define FEEADD_BASE_ADD  (unsigned long *)&FEE0STA
#define FEEADD_OFFSET   ((unsigned long *)&FEE0ADR - (unsigned long *)&FEE0STA)
#define FEEDATA_OFFSET  ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0STA)
#define FEECMD_OFFSET   ((unsigned long *)&FEE0CON - (unsigned long *)&FEE0STA)
#define FEESTA_OFFSET   ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0DAT)
#define __ADuC703x_32K  0x1
#else
#ifdef __ADuC7032
#include <ioaduc7032.h>
#define FLASH_BLOCK_NUMB (94 * 2) // 94KB User memory blocks
#define FEEADD_BASE_ADD  (unsigned long *)&FEE0STA
#define FEEADD_BASE1_ADD (unsigned long *)&FEE1STA
#define FEEADD_OFFSET   ((unsigned long *)&FEE0ADR - (unsigned long *)&FEE0STA)
#define FEEDATA_OFFSET  ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0STA)
#define FEECMD_OFFSET   ((unsigned long *)&FEE0CON - (unsigned long *)&FEE0STA)
#define FEESTA_OFFSET   ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0DAT)
#else
#ifdef __ADuC7033
#include <ioaduc7033.h>
#define FLASH_BLOCK_NUMB (94 * 2) // 94KB User memory blocks
#define FEEADD_BASE_ADD  (unsigned long *)&FEE0STA
#define FEEADD_BASE1_ADD (unsigned long *)&FEE1STA
#define FEEADD_OFFSET   ((unsigned long *)&FEE0ADR - (unsigned long *)&FEE0STA)
#define FEEDATA_OFFSET  ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0STA)
#define FEECMD_OFFSET   ((unsigned long *)&FEE0CON - (unsigned long *)&FEE0STA)
#define FEESTA_OFFSET   ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0DAT)
#else
#ifdef __ADuC702x
#include <ioaduc7020.h>
#define FLASH_BLOCK_NUMB (62 * 2) // 62KB User memory blocks
#define FEEADD_BASE_ADD  (unsigned long *)&FEESTA
#define FEEADD_OFFSET   ((unsigned long *)&FEEADR - (unsigned long *)&FEESTA)
#define FEEDATA_OFFSET  ((unsigned long *)&FEEDAT - (unsigned long *)&FEESTA)
#define FEECMD_OFFSET   ((unsigned long *)&FEECON - (unsigned long *)&FEESTA)
#define FEESTA_OFFSET   ((unsigned long *)&FEEDAT - (unsigned long *)&FEEDAT)
#else
#ifdef __ADuC712x
#include <ioaduc7128.h>
#define FLASH_BLOCK_NUMB (126 * 2) // 126KB User memory blocks
#define FEEADD_BASE_ADD  (unsigned long *)&FEE0STA
#define FEEADD_BASE1_ADD (unsigned long *)&FEE1STA
#define FEEADD_OFFSET   ((unsigned long *)&FEE0ADR - (unsigned long *)&FEE0STA)
#define FEEDATA_OFFSET  ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0STA)
#define FEECMD_OFFSET   ((unsigned long *)&FEE0CON - (unsigned long *)&FEE0STA)
#define FEESTA_OFFSET   ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0DAT)
#else
#ifdef __ADuC7031
#include <ioaduc7030.h>
#define FLASH_BLOCK_NUMB (30 * 2) // 30KB User memory blocks
#define FEEADD_BASE_ADD  (unsigned long *)&FEE0STA
#define FEEADD_OFFSET   ((unsigned long *)&FEE0ADR - (unsigned long *)&FEE0STA)
#define FEEDATA_OFFSET  ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0STA)
#define FEECMD_OFFSET   ((unsigned long *)&FEE0CON - (unsigned long *)&FEE0STA)
#define FEESTA_OFFSET   ((unsigned long *)&FEE0DAT - (unsigned long *)&FEE0DAT)
#define __ADuC703x_32K  0x1
#else
#error Not define MCU Type: __ADuC702x,__ADuC7030,__ADuC7032 or __ADuC7033!!!
#endif
#endif
#endif
#endif
#endif
#endif


#include "Interface.h"

// Every block is present by bit
unsigned long eraseFlags[(FLASH_BLOCK_NUMB/32) + ((FLASH_BLOCK_NUMB%32)?1:0)];

/*************************************************************************
 * Function Name: ProgramHalfword
 * Parameters: unsigned long addr, int halfwor
 * Return: int : 0 - Pass
 *               1 - Error
 *
 * Description: Erase/Write Word to flash at addr.
 *
 *************************************************************************/
static int ProgramHalfword (unsigned long addr, int halfword) {
unsigned long Ind = (addr & 0x1FFFF) >> 9;
  // Is block already erased
  if(Ind >= FLASH_BLOCK_NUMB)
  {
#ifdef __ADuC703x_32K
    FlMessageBox("Program fail");
#else                                                 
    FlMessageBox("Application is too large");
#endif
    FlErrorExit();
    return 1;
  }
unsigned int Mask = 1<<(Ind & 0x1F);

#ifdef __ADuC702x
unsigned long *FlashRegBase = FEEADD_BASE_ADD;
#else
#ifdef __ADuC703x_32K

  FEE0ADR = addr;     //  Set Address to write too
  FEE0DAT = halfword; //  Load Data to write
  if(eraseFlags[Ind>>5] & Mask)
  {
    // Already eresed
    FEE0CON = 0x02;   //  Execute Write
  }
  else
  {
    // Set Block Erase flag
    eraseFlags[Ind>>5] |= Mask;
    // Must be erased
    FEE0CON = 0x03;   //  Execute Erase/Write
  }
  // Start Program Command, We write in half words
  // Wait until complete or fail
unsigned long Flash_Status;
  do
  {
    Flash_Status = FEE0STA; //  Load Status of Flash
    if (Flash_Status & 2)  //  Fail if Fail Bit set
    {
      return 1;                   //  Command Failed
    }
  }
  while (Flash_Status & 4);       //  Wait until Flash Command finish

#else
unsigned long *FlashRegBase;
  if(Ind >= 64*2)
  {
    FlashRegBase = FEEADD_BASE_ADD;
  }
  else
  {
    FlashRegBase = FEEADD_BASE1_ADD;
  }
#endif
#endif

#ifndef __ADuC703x_32K
  *(FlashRegBase + FEEADD_OFFSET) = addr;     //  Set Address to write too
  *(FlashRegBase + FEEDATA_OFFSET)= halfword; //  Load Data to write
  if(eraseFlags[Ind>>5] & Mask)
  {
    // Already eresed
    *(FlashRegBase + FEECMD_OFFSET) = 0x02;   //  Execute Write
  }
  else
  {
    // Set Block Erase flag
    eraseFlags[Ind>>5] |= Mask;
    // Must be erased
    *(FlashRegBase + FEECMD_OFFSET) = 0x03;   //  Execute Erase/Write
  }
  // Start Program Command, We write in half words
  // Wait until complete or fail
unsigned long Flash_Status;
  do
  {
    Flash_Status = *(FlashRegBase + FEESTA_OFFSET); //  Load Status of Flash
    if (Flash_Status & 2)         //  Fail if Fail Bit set
    {
      return 1;                   //  Command Failed
    }
  }
  while (Flash_Status & 4);       //  Wait until Flash Command finish
#endif
  return 0;
}


/*************************************************************************
 * Function Name: FlashWriteByte
 * Parameters: unsigned long addr, int byte
 * Return: none
 *
 * Description: Write byte to flash at addr. the bytes are buffered in halfrord
 * If byte == -1 the flash loader framework signals a flush operation
 * at the end of the input file.
 *
 *************************************************************************/
static void FlashWriteByte(unsigned long addr, int byte)
{
static unsigned short data = 0xFFFF;
static unsigned long last_addr = 0;
  while(1)
  {
    if(byte == -1)
    {
      if(last_addr & 1)
      {
        // Flush Buffer
        ++last_addr;
      }
      else
      {
        // Buffer is empty
        return;
      }
    }
    else if (addr == last_addr)
    {
      if(++last_addr & 1)
      {
        // Add new byte to buffer
        data = byte | 0xFF00;
        return;
      }
      else
      {
        // Flush Buffer
        data &= 0x00FF | (byte << 8);
        // For exit
        byte = -1;
      }
    }
    else
    {
      if(++last_addr & 1)
      {
        last_addr = addr;
        continue;
      }
      // Flush Buffer
    }
    if(ProgramHalfword(last_addr-2,data))
    {
      FlMessageBox("Program fail");
      FlErrorExit();
    }
  }
}

/*************************************************************************
 * Function Name: FlashDriverInitialize
 * Parameters: int argc, char const* argv[]
 * Return: none
 *
 * Description: Init Flash driwer and Register the flash byte write function
 *
 *************************************************************************/
int a,b,sta;

void FlashDriverInitialize(int argc, char const* argv[])
{
  // Allow Write/Erase operations
#ifdef __ADuC703x_32K
  FEE0MOD = 0x8;
#else
#ifdef __ADuC7032
  FEE0MOD = 0x8;
  FEE1MOD = 0x8;
#else
#ifdef __ADuC7033
  FEE0MOD = 0x8;
  FEE1MOD = 0x8;
#else
#ifdef __ADuC712x
  FEE0MOD = 0x8;
  FEE1MOD = 0x8;
#else
#ifdef __ADuC702x
  unsigned int Rev = *(unsigned int *)0xffff042c & 0xFF00;
  if(Rev == 0x0200)
  {
    FEEMOD = 0;
  }
  else
  {
    FEEMOD = 0x8;
  }
#endif
#endif
#endif
#endif
#endif
  // Register the flash write function.
  FlRegisterWriteFunction(FlashWriteByte);
}


/*************************************************************************
 * Function Name: FlashDriverInitialize
 * Parameters: int argc, char const* argv[]
 * Return: none
 *
 * Description: For test porpoise only
 *
 *************************************************************************/
#if 0
int Add;
int main (void)
{
//  Mass erase
  FlashDriverInitialize(0, (char const **)0);
//  FEEMOD= 0x08;
//  FEEADR= 0xFFC3;
//  FEEDAT= 0x3CFF;
//  FEECON= 0x06; // Mass-Erase command
//  while (!(FEESTA & 0x01)){}; //Wait for command to finish
/*
  FEE1MOD= 0x08;
  FEE1ADR= 0xFFC3;
  FEE1DAT= 0x3CFF;
  FEE1CON= 0x06; // Mass-Erase command
  while (!(FEE1STA & 0x01)){}; //Wait for command to finish
*/
// Write test
  for (Add = 0; Add < 0x1000; ++Add)
  {
    FlashWriteByte(Add,0xFFFF);
  }
  FlashWriteByte(Add, -1);
  return(0);
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产午夜精品 | 色悠悠久久综合| 久久久久九九视频| 蜜桃精品在线观看| 日韩精品资源二区在线| 日韩制服丝袜先锋影音| 欧美三区在线观看| 日日噜噜夜夜狠狠视频欧美人| 91美女片黄在线| 夜夜嗨av一区二区三区网页| 欧美性大战久久久久久久| 亚洲一区二区三区四区在线观看 | 国产欧美日本一区视频| 国产精品1区二区.| 国产精品美女久久久久av爽李琼 | 国产欧美日韩另类一区| 国产91丝袜在线18| 国产精品日日摸夜夜摸av| 成人听书哪个软件好| 亚洲精品老司机| 欧美调教femdomvk| 久久www免费人成看片高清| 精品99一区二区三区| 国产精品一卡二卡在线观看| 国产亚洲欧美中文| 99re免费视频精品全部| 亚洲国产中文字幕| 欧美熟乱第一页| 麻豆久久久久久| 国产精品国产a| 欧美三电影在线| 国产一本一道久久香蕉| 亚洲色图都市小说| 欧美一区二区精美| 国产91精品一区二区| 亚洲一区二区三区自拍| 日韩一区二区视频在线观看| 国产精品18久久久久久vr| 亚洲天堂成人在线观看| 在线观看亚洲精品视频| 久久97超碰国产精品超碰| 国产精品美女久久久久久| 欧洲精品视频在线观看| 狠狠色2019综合网| 久久精品亚洲国产奇米99| 色哟哟一区二区在线观看 | 91免费版在线看| 午夜精品久久久久久不卡8050| 国产日产亚洲精品系列| 日韩精品一区二区在线| 精品视频一区二区不卡| 99精品视频在线观看免费| 国产精品资源网站| 蜜桃av一区二区三区电影| 一区二区三区**美女毛片| 国产女同性恋一区二区| 日韩精品一区二| 日韩一区二区三区免费看| 在线免费不卡电影| 99国产欧美另类久久久精品| 国产尤物一区二区在线| 精品系列免费在线观看| 美女视频第一区二区三区免费观看网站| 亚洲男同性恋视频| 一区精品在线播放| 国产精品看片你懂得| 欧美国产激情二区三区| 久久色.com| 精品播放一区二区| 久久伊人中文字幕| 精品国产99国产精品| 日韩亚洲欧美在线| 日韩午夜电影在线观看| 欧美一区二区国产| 欧美一级片在线看| 日韩一区二区三区免费观看| 欧美一区二区三区视频在线观看| 欧美日韩免费视频| 91.com视频| 日韩一二三区视频| 久久久精品免费免费| 国产精品私人影院| 亚洲欧洲精品天堂一级| 亚洲日穴在线视频| 亚洲国产美女搞黄色| 日韩精品久久理论片| 美国十次了思思久久精品导航| 九九九久久久精品| 国产福利视频一区二区三区| 成人国产精品视频| 色偷偷一区二区三区| 欧美中文一区二区三区| 欧美日韩美女一区二区| 日韩欧美的一区| 国产人成亚洲第一网站在线播放| 中文字幕一区二区三区乱码在线| 国产精品毛片大码女人| 亚洲久本草在线中文字幕| 亚洲国产成人tv| 精品一区二区在线视频| 成人黄色电影在线| 欧美日本在线看| 久久综合色8888| 中文字幕亚洲区| 亚洲bdsm女犯bdsm网站| 黑人巨大精品欧美黑白配亚洲| 国产黄色精品网站| 色爱区综合激月婷婷| 日韩一区二区中文字幕| 亚洲国产精品传媒在线观看| 亚洲国产精品一区二区久久恐怖片| 蜜桃传媒麻豆第一区在线观看| 丁香六月久久综合狠狠色| 欧美色图免费看| 久久久影视传媒| 亚洲超碰精品一区二区| 国产精品一二三区| 欧美日本一区二区| 中文字幕不卡的av| 午夜精品影院在线观看| 国产成人亚洲综合色影视| 欧美色精品天天在线观看视频| 久久久精品黄色| 午夜精品福利在线| www.欧美日韩国产在线| 69久久夜色精品国产69蝌蚪网| 国产人妖乱国产精品人妖| 日韩av网站免费在线| 91农村精品一区二区在线| 精品少妇一区二区三区视频免付费 | 国产精品久久久久久久久晋中| 亚洲高清中文字幕| av中文字幕一区| 精品久久久影院| 日韩精品1区2区3区| av资源网一区| 久久精品一区八戒影视| 免费久久精品视频| 欧美日韩久久久一区| 中文字幕一区免费在线观看| 狠狠色丁香婷综合久久| 91精品国产综合久久香蕉的特点| 国产精品护士白丝一区av| 国产美女精品在线| 日韩欧美在线123| 亚洲国产成人va在线观看天堂| 91在线观看美女| 中文字幕中文乱码欧美一区二区| 六月婷婷色综合| 欧美人动与zoxxxx乱| 一区二区三区久久久| aaa欧美大片| 国产精品视频一二| 激情欧美一区二区三区在线观看| 欧美精品日韩一区| 亚洲.国产.中文慕字在线| 一本大道av一区二区在线播放 | 尤物视频一区二区| 91香蕉视频mp4| 中文字幕一区在线| 97久久超碰国产精品电影| 日本一区二区久久| 国产福利视频一区二区三区| 久久蜜桃一区二区| 丰满少妇久久久久久久| 国产欧美日本一区视频| 成人精品免费看| 国产精品黄色在线观看| 91蜜桃婷婷狠狠久久综合9色| 国产精品久久久久四虎| 91性感美女视频| 一二三区精品视频| 欧美色爱综合网| 秋霞午夜av一区二区三区| 日韩欧美一级在线播放| 国产在线一区二区| 国产日韩欧美综合在线| 国产成人精品免费看| 国产精品麻豆99久久久久久| 不卡高清视频专区| 一区二区三区精密机械公司| 欧美视频在线不卡| 日本aⅴ免费视频一区二区三区 | 日韩经典一区二区| 欧美一区二区免费视频| 国产一区二区按摩在线观看| 中文在线资源观看网站视频免费不卡| 成av人片一区二区| 一区二区三区四区不卡视频| 欧美日韩精品一区二区三区| 免费三级欧美电影| 国产欧美1区2区3区| 日本乱人伦一区| 成人av第一页| 综合色天天鬼久久鬼色| 欧美日韩国产免费一区二区 | 91麻豆精品国产综合久久久久久| 久久福利资源站| 国产精品对白交换视频| 在线影视一区二区三区|