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

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

?? flash.c

?? < C及C++嵌入式編程實(shí)例精選>>一書2-9章的配套源碼.
?? C
字號(hào):
/**********************************************************************
 *
 * Filename:    flash.c
 * 
 * Description: A software interface to the AMD 29F010 flash memory.
 *
 * Notes:       Some of the constants in this file are specific to 
 *              Arcom's Target188EB hardware.
 *
 * 
 * Copyright (c) 1998 by Michael Barr.  This software is placed into
 * the public domain and may be used for any purpose.  However, this
 * notice must not be changed or removed and no warranty is either
 * expressed or implied by its publication or distribution.
 **********************************************************************/

#include <string.h>

#include "tgt188eb.h"
#include "led.h"


/*
 * Features of the AMD 29F010 flash memory device.
 */
#define FLASH_SIZE              0x20000
#define FLASH_BLOCK_SIZE        0x04000

#define UNLOCK1_OFFSET          0x5555
#define UNLOCK2_OFFSET          0x2AAA
#define COMMAND_OFFSET          0x5555

#define FLASH_CMD_UNLOCK1       0xAA
#define FLASH_CMD_UNLOCK2       0x55
#define FLASH_CMD_READ_RESET    0xF0
#define FLASH_CMD_AUTOSELECT    0x90
#define FLASH_CMD_BYTE_PROGRAM  0xA0
#define FLASH_CMD_ERASE_SETUP   0x80
#define FLASH_CMD_CHIP_ERASE    0x10
#define FLASH_CMD_SECTOR_ERASE  0x30

#define DQ7    0x80
#define DQ5    0x20


/**********************************************************************
 *
 * Function:    flashWrite()
 *
 * Description: Write data to consecutive locations in the flash.
 *
 * Notes:       This function is specific to the AMD 29F010 Flash
 *              memory.  In that device, a byte that has been
 *              previously written must be erased before it can be
 *              rewritten successfully.
 *
 * Returns:     The number of bytes successfully written.  
 *
 **********************************************************************/
int
flashWrite(unsigned char *      baseAddress,
           const unsigned char  data[], 
           unsigned int         nBytes)
{
    unsigned char * flashBase = FLASH_BASE;
    unsigned int    offset;


    for (offset = 0; offset < nBytes; offset++)
    {
        /*
         * Issue the command sequence for byte program.
         */
        flashBase[UNLOCK1_OFFSET] = FLASH_CMD_UNLOCK1;
        flashBase[UNLOCK2_OFFSET] = FLASH_CMD_UNLOCK2;
        flashBase[COMMAND_OFFSET] = FLASH_CMD_BYTE_PROGRAM;

        /*
         * Perform the actual write operation.
         */
        baseAddress[offset] = data[offset];
		
        /*
         * Wait for the operation to complete or time-out.
         */
        while (((baseAddress[offset] & DQ7) != (data[offset] & DQ7)) && 
               !(baseAddress[offset] & DQ5));

        if ((baseAddress[offset] & DQ7) != (data[offset] & DQ7))
        {
            break;
        }
    }

    return (offset);                          

}   /* flashWrite() */


/**********************************************************************
 *
 * Function:    flashErase()
 *
 * Description: Erase a block of the flash memory device.
 *
 * Notes:       This function is specific to the AMD 29F010 flash
 *              memory.  In this device, individual sectors may be
 *              hardware protected.  If this algorithm encounters
 *              a protected sector, the erase operation will fail
 *              without notice.
 *
 * Returns:     O on success.  
 *              Otherwise -1 indicates failure.
 *
 **********************************************************************/
int
flashErase(unsigned char * sectorAddress)
{
    unsigned char * flashBase = FLASH_BASE;


    /*
     * Issue the command sequence for sector erase.
     */
    flashBase[UNLOCK1_OFFSET] = FLASH_CMD_UNLOCK1;
    flashBase[UNLOCK2_OFFSET] = FLASH_CMD_UNLOCK2;
    flashBase[COMMAND_OFFSET] = FLASH_CMD_ERASE_SETUP;
    flashBase[UNLOCK1_OFFSET] = FLASH_CMD_UNLOCK1;
    flashBase[UNLOCK2_OFFSET] = FLASH_CMD_UNLOCK2;

    *sectorAddress = FLASH_CMD_SECTOR_ERASE;

    /*
     * Wait for the operation to complete or time-out.
     */
    while (!(*sectorAddress & DQ7) && !(*sectorAddress & DQ5));

    if (!(*sectorAddress & DQ7))
    {
        return (-1);
    }

    return (0);
 
}   /* flashErase() */


/**********************************************************************
 *
 * Function:    main()
 *
 * Description: Minimalistic test code for the flash driver code.
 *
 * Notes:       It would be a very bad idea to erase and/or overwrite
 *              the first couple of sectors in the flash device.  The
 *              debug monitor code resides there!
 *
 * Returns:     0 on success.
 *              Otherwise -1 indicates failure.
 *
 **********************************************************************/
main(void)
{
    unsigned char * p = (unsigned char *) 0xD0000000;
    unsigned char * s = "Hello, World!";


    flashErase(p);
    flashWrite(p, s, strlen(s) + 1);

    if (strcmp(p, s))
    {
        toggleLed(LED_RED);
 
        return (-1);
    }
    else
    {
        toggleLed(LED_GREEN);
   
        return (0);
    }

}   /* main() */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线观看不卡视频| 在线观看日韩精品| 91影院在线免费观看| 欧美在线观看18| 日韩精品一区二区三区蜜臀| 国产亚洲欧洲997久久综合| 亚洲色图在线视频| 欧美aaaaa成人免费观看视频| 国产在线播放一区| 91蜜桃在线免费视频| 日韩一区二区影院| 一区免费观看视频| 日本欧美久久久久免费播放网| 国产成人亚洲精品青草天美| 欧美主播一区二区三区| 久久久亚洲高清| 一区二区三区免费观看| 狠狠色丁香久久婷婷综合_中| av在线不卡免费看| 日韩欧美一级二级三级久久久| 中文字幕亚洲电影| 久久精品99久久久| 在线免费一区三区| 久久精品视频一区| 日韩精品一二三| 色综合欧美在线视频区| 久久综合一区二区| 天天av天天翘天天综合网色鬼国产| 国产精品一二三四五| 欧美疯狂性受xxxxx喷水图片| 国产精品黄色在线观看| 久久不见久久见免费视频1| 在线精品视频免费播放| 欧美国产一区二区| 免费成人av在线| 色8久久精品久久久久久蜜| 欧美高清在线一区二区| 美日韩黄色大片| 欧美日韩在线播放三区| 亚洲人成在线播放网站岛国| 国产精品88av| 日韩欧美一级在线播放| 午夜精品福利一区二区三区av | 中文字幕高清一区| 久久 天天综合| 欧美巨大另类极品videosbest| 国产精品天干天干在线综合| 国产一区二区久久| 91精品国产日韩91久久久久久| 一区二区视频在线| 9i看片成人免费高清| 国产午夜精品久久| 国产在线麻豆精品观看| 日韩三级在线观看| 日韩av电影一区| 欧美久久久久久久久中文字幕| 亚洲人成7777| 99精品久久久久久| 国产精品久线观看视频| 国产91精品欧美| 国产亚洲欧美一区在线观看| 国产一区二区三区高清播放| 日韩美女视频在线| 免费视频一区二区| 欧美大尺度电影在线| 免费成人在线视频观看| 日韩欧美综合在线| 蜜臀精品久久久久久蜜臀| 欧美一区二区三区视频免费播放| 石原莉奈一区二区三区在线观看| 欧美精品久久99| 亚洲地区一二三色| 欧美日本一道本| 日韩中文欧美在线| 日韩精品自拍偷拍| 国产麻豆午夜三级精品| 亚洲国产精品成人综合色在线婷婷| 国产精品456露脸| 国产精品久久久久久久浪潮网站| 国产69精品久久久久毛片| 中文字幕中文乱码欧美一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲色图在线视频| 欧美日韩中文一区| 日韩av电影天堂| 精品国产凹凸成av人网站| 国产美女精品一区二区三区| 久久久久久免费| 成人一区在线看| 一区二区三区蜜桃| 91精品国产日韩91久久久久久| 精品无码三级在线观看视频| 国产三区在线成人av| av不卡免费电影| 亚洲一级片在线观看| 日韩一级二级三级精品视频| 国产精品18久久久久久久久 | 顶级嫩模精品视频在线看| 国产精品人妖ts系列视频| 91色porny| 亚洲444eee在线观看| 欧美精品一区二区三区蜜桃视频| 国产福利不卡视频| 亚洲精品欧美二区三区中文字幕| 欧美日韩精品免费| 久久精品国产亚洲aⅴ| 欧美极品少妇xxxxⅹ高跟鞋| 色婷婷精品大在线视频| 三级亚洲高清视频| 久久久亚洲欧洲日产国码αv| 一本大道久久a久久综合婷婷| 日日夜夜精品免费视频| 久久久精品免费网站| 91高清在线观看| 精品亚洲免费视频| 亚洲欧美国产高清| 欧美另类z0zxhd电影| 丰满少妇久久久久久久| 亚洲高清三级视频| 国产免费成人在线视频| 欧美日韩中文精品| 粉嫩av一区二区三区粉嫩| 亚洲成人精品影院| 亚洲国产成人午夜在线一区| 欧美日本免费一区二区三区| 粉嫩av亚洲一区二区图片| 日韩精品午夜视频| 自拍偷在线精品自拍偷无码专区| 91精品午夜视频| 99久久婷婷国产| 久久99国产精品尤物| 樱桃视频在线观看一区| 久久夜色精品国产欧美乱极品| 色妞www精品视频| 国产真实乱子伦精品视频| 亚洲一区视频在线观看视频| 欧美国产日产图区| 91麻豆精品国产91久久久久| 91美女在线看| 国产麻豆精品一区二区| 天天综合色天天| 亚洲男同1069视频| 国产亚洲美州欧州综合国| 在线成人av网站| 91高清在线观看| 波多野结衣在线一区| 久久99精品国产.久久久久久| 亚洲国产精品久久不卡毛片| 国产精品久线在线观看| 久久久精品综合| 欧美xxxx老人做受| 欧美丰满嫩嫩电影| 色拍拍在线精品视频8848| 岛国av在线一区| 国产一区二区三区日韩| 人妖欧美一区二区| 亚洲成人福利片| 亚洲黄色免费网站| 亚洲色图视频免费播放| 国产欧美1区2区3区| 精品第一国产综合精品aⅴ| 宅男在线国产精品| 欧美影视一区在线| 色婷婷精品大在线视频| 91色乱码一区二区三区| 不卡的av中国片| aaa亚洲精品| 不卡一卡二卡三乱码免费网站| 国产精品一级片在线观看| 国内欧美视频一区二区| 麻豆中文一区二区| 美女任你摸久久 | 精品国精品自拍自在线| 日韩视频在线一区二区| 日韩三级高清在线| 日韩三级精品电影久久久| 日韩欧美视频在线| 欧美成人福利视频| 精品三级在线看| 久久精品一区二区三区av| 久久久久久久久久美女| 久久中文娱乐网| 久久久综合精品| 日本一区二区视频在线| 国产欧美日韩视频在线观看| 国产女主播一区| 亚洲图片你懂的| 亚洲视频一区二区免费在线观看| 亚洲色图清纯唯美| 亚洲精品免费在线| 亚洲成av人在线观看| 午夜精品久久一牛影视| 日韩二区三区在线观看| 免费精品视频最新在线| 国产在线播精品第三| 丁香婷婷综合五月| 91免费精品国自产拍在线不卡| 91成人网在线| 日韩一区二区三区av| 国产网站一区二区|