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

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

?? flashmem.c

?? at91rm9200 bsp at91rm9200 bsp
?? C
?? 第 1 頁 / 共 2 頁
字號:
    return (retVal);    }/******************************************************************************** sysFlashEraseSector - erase the contents of flash memory** This routine clears the contents of one sector in flash memory.** Flash 28F\f2xxx\f1 devices are erased by writing a flash erase command to* the device and verifying that each flash location is set to a high value* (0xFF).** Flash 29F\f2xxx\f1 devices are erased by writing the six-byte erase code* into specific address locations, which sets all byte locations to a high* value (0xFF).** RETURNS: OK, or ERROR if the contents of flash memory cannot be erased.*/STATUS sysFlashEraseSector    (    UINT8 flashType,		/* type of flash memory on-board */    int	  offset		/* sector byte offset into flash memory */    )    {    volatile FLASH_DEF * pFA = FLASH_CAST (FLASH_ADRS + offset);    STATUS retVal = OK;    switch (flashType)        {        case (FLASH_29LV800):            {	    SYS_FLASH_WRITE_ENABLE_RTN ();		/* enable write */            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;            *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_CHIP_ERASE;            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FOURTH;            *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_FIFTH;            *(FLASH_CAST (FLASH_ADRS + offset))    = FLASH29_CMD_SECTOR;            do {                retVal = sysFlashDataPoll (pFA, (FLASH_DEF) 0xffffffff);                } while ((*pFA != (FLASH_DEF) 0xffffffff) && (retVal == OK));            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;            *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_READ_RESET;	    SYS_FLASH_WRITE_DISABLE_RTN ();		/* disable enable */            break;            }        default:            retVal = ERROR;        }    return (retVal);    }/******************************************************************************** sysFlashWrite - write data to flash memory** This routine copies specified data of a specified length, <size>, into a* specified offset, <offset>, in the flash memory.  Data is passed as a string,* <pFB>, if not NULL.  If NULL, data is taken as a repeated sequence of* <value>.* The parameter <flashType> should be set to the flash device code.* The parameter <offset> must be appropriately aligned for the width of* the Flash devices in use.** Flash 28F\f2xxx\f1 devices are programmed by a sequence of operations:* .iP* set up device to write* .iP* perform write* .iP* verify the write* .LP** Flash 29F\f2xxx\f1 devices are programmed by a sequence of operations:* .iP* set up device to write* .iP* perform write* .iP* wait for the write to complete* .LP** RETURNS: OK, or ERROR if the write operation fails.** SEE ALSO: sysFlashSet()*/STATUS sysFlashWrite    (    FLASH_DEF *	pFB,		/* string to be copied; use <value> if NULL */    int		size,		/* size to program in bytes */    int		offset,		/* byte offset into flash memory */    UINT8	flashType,	/* type of flash memory on-board */    FLASH_DEF	value		/* value to program */    )    {    volatile FLASH_DEF * pFA;		/* flash address */    STATUS retVal = OK;    int ix;    int sectorSize = 128;    int twc = 2;	/* time for write completion */    switch (flashType)        {	case (FLASH_28F008):	case (FLASH_28F016):	    SYS_FLASH_WRITE_ENABLE_RTN ();		/* raise Vpp */            for (pFA = FLASH_CAST (FLASH_ADRS + offset); (pFA < FLASH_CAST                (FLASH_ADRS + size + offset)) && (retVal == OK); pFA++)		{		if (pFB != NULL)		    value = *pFB++;		*pFA = FLASH28_CMD_PROG_SETUP;	/* write setup */		*pFA = value;			/* data to write */		/* Check Write State Machine Status */		do		    {		    *pFA = FLASH28F008_CMD_READ_STATUS;		    }		while ((*pFA & FLASH28F008_STAT_WSMS) != FLASH28F008_STAT_WSMS);		/* Check Byte Write Error Status */		if ((*pFA & FLASH28F008_STAT_BWS) != 0)		    {		    *pFA = FLASH28F008_CMD_CLEAR_STATUS;		    retVal = ERROR;		    }		}            pFA = FLASH_CAST (FLASH_ADRS);            *pFA = FLASH28_CMD_RESET;	    SYS_FLASH_WRITE_DISABLE_RTN ();		/* lower Vpp */            break;        case (FLASH_28F256):        case (FLASH_28F512):        case (FLASH_28F010):        case (FLASH_28F020):            {	    SYS_FLASH_WRITE_ENABLE_RTN ();		/* raise Vpp */            for (pFA = FLASH_CAST (FLASH_ADRS + offset); (pFA < FLASH_CAST                (FLASH_ADRS + size + offset)) && (retVal == OK); pFA++)	        for (ix = 0; TRUE; ix++)	            {		    if (pFB != NULL)			value = *pFB++;	            *pFA = FLASH28_CMD_PROG_SETUP;	/* write setup */	            *pFA = value;			/* data to write */	            sysFlashDelay (10);			/* wait for write */	            *pFA = FLASH28_CMD_PROG_VERIFY;	/* verify command */	            sysFlashDelay (6);			/* wait for verify */	            if (*pFA == value)			/* done? */		        break;	            if (ix == 25)			/* error? */			{	                retVal = ERROR;			break;			}	            }            pFA = FLASH_CAST (FLASH_ADRS);            *pFA = FLASH28_CMD_RESET;            *pFA = FLASH28_CMD_READ_MEM;	    sysFlashDelay (6);	    SYS_FLASH_WRITE_DISABLE_RTN ();		/* lower Vpp */            break;            }        case (FLASH_29F010):        case (FLASH_29LV800):            {	    SYS_FLASH_WRITE_ENABLE_RTN ();		/* enable write */            for (pFA = FLASH_CAST (FLASH_ADRS + offset); pFA < FLASH_CAST                (FLASH_ADRS + size + offset) && (retVal == OK); pFA++)                {                *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;                *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;                *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_PROGRAM;		if (pFB != NULL)		    value = *pFB++;                *pFA = value;                    	/* data to write */                do {                    retVal = sysFlashDataPoll (pFA, (FLASH_DEF) value);                    } while ((*pFA != value) && (retVal == OK));                }            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;            *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;            *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_READ_RESET;	    SYS_FLASH_WRITE_DISABLE_RTN ();		/* disable write */            break;            }	case (FLASH_29C040A):	    sectorSize = 256;	    twc = 1;	    /* FALL THROUGH */        case (FLASH_29LV1024):            {            for (pFA = FLASH_CAST (FLASH_ADRS + offset);		 pFA < FLASH_CAST (FLASH_ADRS + size + offset); )                {		/* Enable sector write */		*(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;		*(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;		*(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_PROGRAM;		/*		 * write the sector:		 *    29LV1024: 128 half-word accesses = 256 bytes		 *    29C040A 256 byte accesses		 */		for (ix = 0; ix < sectorSize; ix++)		    {		    if (pFB != NULL)			value = *pFB++;		    /* ensure entire sector written */		    if (pFA >= FLASH_CAST (FLASH_ADRS + size + offset))			value = (FLASH_DEF) 0xFFFFFFFF;		    *pFA++ = value;                    	/* data to write */		    }		/*		 * Ensure write cycle completes. Atmel chip spec suggest		 * waiting for a specified time rather than polling for		 * completion.		 *		 * It seems that we cannot always safely use taskDelay()		 */		sysFlashDelay (10000 * twc);                }            break;            }        default:            retVal = ERROR;        }    return (retVal);    }/******************************************************************************** sysFlashTypeGet - determine the device type of on-board flash memory** This routine uses the `autoselect' command to determine the device type of* on-board flash memory for flash 29F\f2xxx\f1 devices.** RETURNS: An integer indicating the device type of on-board flash memory.*/UINT8 sysFlashTypeGet (void)    {    volatile FLASH_DEF * pFA = FLASH_CAST (FLASH_ADRS);	/* flash address */    UINT8 retVal;    SYS_FLASH_WRITE_ENABLE_RTN ();			/* enable writes */    *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;    *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;    *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_AUTOSELECT;    /* 29LV1024 (at least) requires 20ms delay */    /* It seems we cannot always safely use taskDelay() */    sysFlashDelay (20000);    retVal = (UINT8) *++pFA;    *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_FIRST;    *(FLASH_CAST FLASH29_REG_SECOND_CYCLE) = FLASH29_CMD_SECOND;    *(FLASH_CAST FLASH29_REG_FIRST_CYCLE)  = FLASH29_CMD_READ_RESET;    sysFlashDelay (20000);    SYS_FLASH_WRITE_DISABLE_RTN ();			/* disable writes */    return (retVal);    }/******************************************************************************** sysFlashSet - write to flash memory** This routine copies a specified string into flash memory after calling* sysFlashErase() and clearing flash memory.** If FLASH_NO_OVERLAY is defined, the parameter <offset> must be* appropriately aligned for the Flash devices in use (device width,* sector size etc.).** If the specified string must be overlaid on the contents of flash memory,* undefine FLASH_NO_OVERLAY.** RETURNS: OK, or ERROR if the write fails or the input parameters are* out of range.** SEE ALSO: sysFlashErase(), sysFlashGet(), sysFlashTypeGet(), sysFlashWrite()** INTERNAL* If multiple tasks are calling sysFlashSet() and sysFlashGet(),* they should use a semaphore to ensure mutually exclusive access to flash* memory.*/STATUS sysFlashSet    (    char *	string,		/* string to be copied into flash memory */    int		strLen,		/* maximum number of bytes to copy       */    int		offset		/* byte offset into flash memory         */    )    {    static UINT8 flashType = FLASH_MEM_TYPE;#ifndef	FLASH_NO_OVERLAY    char *tempBuffer;#endif	/* FLASH_NO_OVERLAY */    if ((offset < 0) || (strLen < 0) || ((offset + strLen) > FLASH_MEM_SIZE))        return (ERROR);    /* see if contents are actually changing */    if (bcmp ((char *) (FLASH_ADRS + offset), string, strLen) == 0)	return (OK);#ifndef	FLASH_NO_OVERLAY    /* first read existing data */    if (tempBuffer = malloc(FLASH_MEM_SIZE), tempBuffer == 0)	return (ERROR);    bcopyBytes ((char *) FLASH_ADRS, tempBuffer, FLASH_MEM_SIZE);    bcopyBytes (string, (tempBuffer + offset), strLen);#endif	/* FLASH_NO_OVERLAY */    if (flashType == 0)	flashType = sysFlashTypeGet ();    switch (flashType)    {	case FLASH_29C040A:        case FLASH_29LV1024:	    /* do not erase these as not required */	    break;        case (FLASH_29LV800):            /* only erase the sector */	    if (sysFlashEraseSector (flashType, offset) == ERROR) /* erase sector */		{#ifndef	FLASH_NO_OVERLAY		free (tempBuffer);#endif		return (ERROR);		}            break;	default:	    if (sysFlashErase (flashType) == ERROR)	/* erase device */		{#ifndef	FLASH_NO_OVERLAY		free (tempBuffer);#endif		return (ERROR);		}	    break;    } /* endswitch */#ifndef	FLASH_NO_OVERLAY				/* program device */    if (sysFlashWrite (FLASH_CAST (tempBuffer), FLASH_MEM_SIZE, 0, flashType, 0)	    == ERROR)	{	free (tempBuffer);#else	/* FLASH_NO_OVERLAY */    if (sysFlashWrite (FLASH_CAST (string), strLen, offset, flashType, 0) ==	ERROR)	{#endif	/* FLASH_NO_OVERLAY */	return (ERROR);	}#ifndef	FLASH_NO_OVERLAY    free (tempBuffer);#endif    return (OK);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷国产v国产偷v亚洲高清| 国产成人激情av| 国产一区二区三区日韩 | 欧美日韩1234| 国产三级精品视频| 亚洲精品日韩综合观看成人91| 亚洲一区在线视频| 国产91精品露脸国语对白| 91精品国产综合久久婷婷香蕉| 日韩精品中文字幕在线不卡尤物| 欧美日韩一区视频| 亚洲久本草在线中文字幕| 色婷婷精品久久二区二区蜜臂av | thepron国产精品| 成人黄色电影在线| 成人一区二区三区视频在线观看 | 久久精品视频网| 日本一区二区三区国色天香 | 国产视频视频一区| 91国模大尺度私拍在线视频| 国产精品久久久久精k8| 国产精品一区二区在线观看不卡 | 欧美疯狂性受xxxxx喷水图片| 国产精品久久久久久户外露出| 色香蕉久久蜜桃| 久久国产福利国产秒拍| 日韩精品中文字幕一区| 成人午夜看片网址| 亚洲一区在线观看网站| 欧美精品一区男女天堂| 国产一区二区三区在线看麻豆| 亚洲国产精品精华液2区45| www.亚洲在线| 亚洲bt欧美bt精品| 日韩一二三区视频| 国产在线看一区| 日韩欧美第一区| 色综合久久综合网97色综合| 日日骚欧美日韩| 欧美一级淫片007| 看国产成人h片视频| 一区二区三区在线免费播放| 色久优优欧美色久优优| 日本欧美在线观看| 日韩精品一区二区三区三区免费| 成人白浆超碰人人人人| 日韩中文字幕av电影| 国产女人水真多18毛片18精品视频| 欧美吞精做爰啪啪高潮| 国产午夜精品久久| 正在播放亚洲一区| 91国偷自产一区二区三区成为亚洲经典 | 日本一区中文字幕 | 欧美视频一二三区| 99精品视频在线播放观看| 亚洲综合区在线| 国产精品女上位| av中文一区二区三区| 亚洲国产精品麻豆| 精品少妇一区二区三区| 成人激情图片网| 国产一区二区三区日韩| 麻豆成人av在线| 亚洲婷婷综合久久一本伊一区 | 日日夜夜免费精品视频| 亚洲曰韩产成在线| 亚洲与欧洲av电影| 一区二区三区四区av| 亚洲色图欧洲色图婷婷| 亚洲色图第一区| 亚洲精品国产成人久久av盗摄| 亚洲欧美中日韩| 91精品国产91久久综合桃花| 欧美亚洲精品一区| 欧美三级视频在线| 欧美精品精品一区| 欧美高清你懂得| 91麻豆精品国产91久久久久| 91精品国产入口在线| 制服丝袜亚洲网站| 91精品国产欧美一区二区18| 91精品国产一区二区三区香蕉| 欧美一区二区成人6969| 欧美电影免费观看完整版| 精品国产一区二区在线观看| 欧美成人高清电影在线| 欧美电影免费观看高清完整版在线| 日韩女优毛片在线| 精品国产1区2区3区| 久久午夜国产精品| 制服丝袜中文字幕亚洲| 欧美日本国产视频| 欧美一区二区福利视频| 欧美一区二区三区的| 欧美大片日本大片免费观看| 日韩精品在线看片z| 精品国产123| 国产人妖乱国产精品人妖| 亚洲欧洲精品一区二区三区不卡| 1024亚洲合集| 亚洲一区二区中文在线| 美女视频网站久久| 大白屁股一区二区视频| 欧美性受xxxx黑人xyx性爽| 日韩一区二区三区视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产在线不卡一区| 成人看片黄a免费看在线| 欧美日韩一区不卡| 亚洲精品在线免费播放| 中文字幕在线不卡| 日韩av高清在线观看| 国产精品1区二区.| 欧美三级视频在线| 国产午夜亚洲精品理论片色戒| 亚洲乱码国产乱码精品精98午夜 | 日韩一区二区免费视频| 国产欧美日韩一区二区三区在线观看| 亚洲日本一区二区| 国内欧美视频一区二区| 91久久精品网| 国产三级三级三级精品8ⅰ区| 亚洲午夜久久久久| 国产激情一区二区三区| 欧美日韩精品一区视频| 国产日韩成人精品| 青青草视频一区| 久久精品国产一区二区三区免费看| 成人国产亚洲欧美成人综合网| 欧美日韩情趣电影| 中文字幕欧美一| 国产一区二区女| 91精品国产入口| 亚洲一二三四久久| 成人黄色大片在线观看| 欧美大黄免费观看| 婷婷久久综合九色综合绿巨人| 国产suv精品一区二区883| 91麻豆精品国产无毒不卡在线观看| 亚洲欧洲精品成人久久奇米网| 国产呦萝稀缺另类资源| 欧美精品 国产精品| 亚洲视频一区在线观看| 国产大片一区二区| 日韩欧美资源站| 午夜精品久久一牛影视| 91黄视频在线观看| |精品福利一区二区三区| 国产精品一二三四五| 欧美一区二区国产| 五月天精品一区二区三区| 一本久道久久综合中文字幕| 国产精品超碰97尤物18| 高清beeg欧美| 久久亚洲综合av| 裸体健美xxxx欧美裸体表演| 欧美三区在线观看| 亚洲福利一二三区| 欧美日韩精品免费| 天天av天天翘天天综合网色鬼国产| 色拍拍在线精品视频8848| 亚洲欧美一区二区三区孕妇| 日本欧美一区二区三区乱码| 欧美日韩免费观看一区三区| 亚洲欧洲中文日韩久久av乱码| 91亚洲精品乱码久久久久久蜜桃| 日韩亚洲欧美中文三级| 视频一区二区三区入口| 欧美日韩精品系列| 天堂精品中文字幕在线| 欧美色国产精品| 奇米影视7777精品一区二区| 日韩欧美在线综合网| 国产一区二区三区美女| 欧美经典一区二区| 91丨porny丨户外露出| 国产精品久久久久7777按摩| 99久久精品国产精品久久| 亚洲欧美乱综合| 欧美日韩一区中文字幕| 美女在线视频一区| 久久综合九色综合欧美就去吻| 国产在线不卡一区| 国产精品久久久久三级| 91豆麻精品91久久久久久| 婷婷六月综合网| 国产午夜精品一区二区三区四区| 国产成人免费在线视频| 亚洲精品自拍动漫在线| 欧美精选一区二区| 国产精品综合视频| 亚洲男女一区二区三区| 91精品国产综合久久国产大片| 国产专区综合网| 亚洲人吸女人奶水| 91精品婷婷国产综合久久性色 | 日韩成人伦理电影在线观看| 精品日韩一区二区| 99久久精品国产毛片| 日本成人超碰在线观看|