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

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

?? flash.c

?? C和C++在嵌入式編程里面的應用
?? C
字號:
/**********************************************************************
 *
 * 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() */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图欧美在线| 日韩精品中文字幕在线不卡尤物| 日韩av不卡在线观看| 亚洲视频中文字幕| 国产精品久久久久久久浪潮网站| 久久久噜噜噜久噜久久综合| 日韩视频永久免费| 日韩欧美成人一区| 欧美va日韩va| 久久女同互慰一区二区三区| 久久综合九色综合久久久精品综合| 欧美一区二区视频在线观看2022| 欧美日韩一级二级三级| 在线观看av一区二区| 色香色香欲天天天影视综合网| 成人午夜大片免费观看| 成人免费高清视频| 一本久久a久久精品亚洲| 91污在线观看| 欧美日韩国产精品成人| 欧美一区二区三区在线观看视频 | 日韩午夜av电影| 精品久久99ma| 欧美国产国产综合| 一区二区三区四区蜜桃 | 欧美日韩精品一区视频| 欧美日本一区二区在线观看| 欧美一区二区三区四区高清| 久久免费偷拍视频| 中文字幕一区二区三| 亚洲一区二区三区在线播放| 免费成人av资源网| 懂色av一区二区在线播放| 91在线视频在线| 欧美一区三区二区| 欧美激情中文字幕一区二区| 亚洲制服欧美中文字幕中文字幕| 日本怡春院一区二区| 国产成人在线视频网站| 91国产丝袜在线播放| 欧美成人激情免费网| 亚洲少妇最新在线视频| 久久精品国产一区二区| 成人av电影在线网| 日韩视频在线一区二区| 亚洲裸体xxx| 国产一区二区三区国产| 在线欧美日韩精品| 国产婷婷色一区二区三区在线| 亚洲精品伦理在线| 国产精品1区2区3区| 欧美在线不卡一区| 中文一区二区在线观看| 蜜臀av一区二区在线免费观看| 99国产欧美另类久久久精品| 精品欧美乱码久久久久久1区2区| 亚洲欧洲av另类| 激情偷乱视频一区二区三区| 在线免费亚洲电影| 综合在线观看色| 国产一区二区免费看| 在线成人高清不卡| 亚洲一区视频在线| 91视频一区二区| 国产精品免费aⅴ片在线观看| 蜜乳av一区二区三区| 欧美日韩一本到| 亚洲精品综合在线| 91在线视频观看| 国产精品色呦呦| 国产精品一二三| 欧美sm美女调教| 免费美女久久99| 在线播放91灌醉迷j高跟美女| 一区二区三区免费观看| av不卡免费在线观看| 国产日产亚洲精品系列| 国产在线精品免费| xfplay精品久久| 韩国视频一区二区| 久久尤物电影视频在线观看| 免费人成在线不卡| 欧美成人综合网站| 捆绑变态av一区二区三区| 91精品国产欧美一区二区18| 亚洲r级在线视频| 欧美精品在线观看播放| 日日欢夜夜爽一区| 正在播放亚洲一区| 美女在线视频一区| 久久精品日韩一区二区三区| 国产乱人伦偷精品视频不卡 | 91美女片黄在线观看| 亚洲日本成人在线观看| 在线看日韩精品电影| 天天综合网天天综合色| 制服丝袜一区二区三区| 久草在线在线精品观看| 国产日韩在线不卡| a级精品国产片在线观看| 亚洲一区二区av在线| 欧美一区二区久久久| 国产成人在线视频免费播放| 中文字幕一区二区三区视频| 欧美婷婷六月丁香综合色| 蜜桃av一区二区三区| 国产精品久久国产精麻豆99网站| 91久久久免费一区二区| 久久er精品视频| 亚洲日本一区二区| 日韩欧美aaaaaa| 91最新地址在线播放| 免费精品视频最新在线| 中文字幕视频一区| 日韩一区国产二区欧美三区| 成人动漫精品一区二区| 天天av天天翘天天综合网色鬼国产| 久久夜色精品国产噜噜av| 日本国产一区二区| 国产麻豆视频一区| 亚洲一区中文日韩| 欧美精品一区二区三区高清aⅴ | 在线看不卡av| 日韩高清欧美激情| 久久午夜国产精品| 欧美喷水一区二区| 狠狠色丁香久久婷婷综合_中| 国产欧美中文在线| 欧美视频在线一区| 紧缚奴在线一区二区三区| 亚洲激情成人在线| 日韩女优av电影| av在线一区二区三区| 午夜精品视频一区| 91精品国产91热久久久做人人| jlzzjlzz国产精品久久| 午夜亚洲福利老司机| 久久久久久毛片| 欧美亚洲动漫另类| 国产福利一区二区三区在线视频| 天堂va蜜桃一区二区三区漫画版| 欧美大片在线观看一区| 99精品国产热久久91蜜凸| 日韩av在线播放中文字幕| 中文字幕 久热精品 视频在线| 91福利视频久久久久| 国产一区二区三区日韩| 亚洲成人av一区二区| 亚洲国产精品v| 日韩免费一区二区| 在线电影一区二区三区| av激情综合网| 韩国女主播成人在线观看| 亚洲综合色网站| 中文字幕在线不卡一区| 国产精品国产三级国产aⅴ无密码| 在线不卡免费欧美| 欧美精品在线观看播放| 欧美喷水一区二区| 在线精品视频一区二区三四| youjizz国产精品| 99精品视频在线免费观看| 国产精选一区二区三区| 麻豆国产精品一区二区三区| 亚洲最新视频在线观看| 亚洲一区二区三区四区在线观看 | 国产女同互慰高潮91漫画| 制服视频三区第一页精品| 欧美在线观看视频一区二区| thepron国产精品| 国产精品自拍一区| 丁香另类激情小说| 国产在线播放一区三区四| 人禽交欧美网站| 午夜婷婷国产麻豆精品| 亚洲一级二级在线| 奇米四色…亚洲| 日韩激情一二三区| 婷婷六月综合亚洲| 婷婷中文字幕综合| 麻豆国产欧美日韩综合精品二区| 五月天丁香久久| 日韩电影一区二区三区四区| 日韩精品亚洲一区| 蜜臀久久99精品久久久久久9| 国产在线播放一区二区三区| 黑人巨大精品欧美黑白配亚洲| 久久er精品视频| 国产一区二区三区| 国产成人精品午夜视频免费| 懂色中文一区二区在线播放| 国产精品99久久久久久久女警| 国产一区视频在线看| eeuss影院一区二区三区| 欧美日韩dvd在线观看| 日韩欧美一级片| 中文字幕欧美日本乱码一线二线| 国产精品久久免费看| 日本sm残虐另类| 国产一区二区精品久久91|