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

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

?? flashmem.c

?? Vxworks下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);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产一区二区视频| 欧美一区二区三区的| 国产一区二区视频在线播放| 一区二区三区在线不卡| 亚洲欧美综合色| 综合精品久久久| 亚洲综合丝袜美腿| 午夜精品久久久久久| 男男成人高潮片免费网站| 免费美女久久99| 国产v综合v亚洲欧| 91免费看片在线观看| 欧美日韩一区二区三区视频| 欧美午夜精品一区二区三区| 91麻豆精品久久久久蜜臀| 欧美一二三在线| 精品国精品国产| 亚洲狼人国产精品| 久久69国产一区二区蜜臀| 成人美女在线观看| 日本大香伊一区二区三区| 精品视频免费看| 中文字幕成人网| 久久精品噜噜噜成人av农村| www.日韩精品| 国产三级精品三级在线专区| 亚洲成a人在线观看| 风间由美中文字幕在线看视频国产欧美 | 色综合久久综合| 久久久www免费人成精品| 亚洲综合自拍偷拍| 国产精品99久久久久久似苏梦涵| 色又黄又爽网站www久久| 国产亲近乱来精品视频| 婷婷中文字幕综合| 色哟哟一区二区| 国产精品久久久久aaaa| 国产精品亚洲第一| 欧美电影免费观看高清完整版在线观看 | 精品噜噜噜噜久久久久久久久试看| 国产区在线观看成人精品| 国模一区二区三区白浆| 精品久久久久久久久久久院品网| 亚洲电影一区二区三区| 欧美三级电影网| 日韩精品成人一区二区三区| 在线播放欧美女士性生活| 亚洲高清免费观看高清完整版在线观看| 99热这里都是精品| 激情欧美一区二区| 久久精品理论片| 国产毛片精品视频| 337p日本欧洲亚洲大胆色噜噜| 日韩中文字幕不卡| 久久久另类综合| 91美女精品福利| 午夜精品123| 26uuu国产电影一区二区| 国产**成人网毛片九色 | 亚洲精品日韩一| 日韩欧美国产成人一区二区| 国产一区91精品张津瑜| 亚洲精品中文在线观看| 欧美日韩精品一区二区在线播放| 日本伊人色综合网| 亚洲精品写真福利| 日韩精品一区二区三区视频| 成人一区二区三区| 爽好多水快深点欧美视频| 中文在线免费一区三区高中清不卡| 高清在线不卡av| 蜜桃一区二区三区在线| 亚洲日穴在线视频| 久久久久久久网| 欧美成人官网二区| 欧美剧情片在线观看| 91看片淫黄大片一级在线观看| 免费一级片91| 亚洲高清三级视频| 亚洲精品国产无套在线观| 中文欧美字幕免费| 久久色.com| 久久无码av三级| 精品国精品国产尤物美女| 91精品国产综合久久久久久漫画 | 国产精品麻豆欧美日韩ww| 日韩一卡二卡三卡| 欧美一区二区三区爱爱| 欧日韩精品视频| 欧美人成免费网站| 7777精品伊人久久久大香线蕉的| 欧美在线播放高清精品| 91在线高清观看| 在线免费不卡视频| 在线不卡a资源高清| 欧美人狂配大交3d怪物一区| 日韩欧美一区在线观看| 91精品国产综合久久久久| 欧美成人伊人久久综合网| 国产午夜亚洲精品午夜鲁丝片| 亚洲国产成人一区二区三区| 中文字幕亚洲电影| 亚洲综合小说图片| 经典一区二区三区| 色综合色综合色综合| 91精品国产福利| 国产精品久久777777| 日本女人一区二区三区| 成人国产一区二区三区精品| 在线看不卡av| 国产欧美一区二区精品秋霞影院 | 粉嫩蜜臀av国产精品网站| 日本丰满少妇一区二区三区| 日韩精品一区二区三区中文不卡| 国产欧美日韩激情| 美女性感视频久久| 色综合久久久网| 中文字幕国产一区| 青青草国产精品亚洲专区无| av激情综合网| 久久精品人人做| 麻豆精品一区二区综合av| 欧美午夜一区二区三区| 国产网站一区二区三区| 久久国产综合精品| 日韩欧美久久久| 毛片一区二区三区| 欧美一区二区三区成人| 日日夜夜精品视频免费| 欧美日韩免费一区二区三区| 亚洲美女在线一区| 色妹子一区二区| 亚洲美女区一区| 欧美日韩一区二区在线视频| 亚洲精选免费视频| 91麻豆成人久久精品二区三区| 国产精品福利一区| 色久优优欧美色久优优| 亚洲免费观看高清在线观看| 91久久精品一区二区三区| 亚洲一二三四区| 日韩区在线观看| 极品少妇一区二区三区精品视频| 精品国产网站在线观看| 国产成人8x视频一区二区| 亚洲国产精品精华液2区45| 99久久综合国产精品| 亚洲一区二区三区免费视频| 欧美一区二区私人影院日本| 韩国在线一区二区| 综合欧美一区二区三区| 777色狠狠一区二区三区| 国产成人在线视频网站| 亚洲高清中文字幕| 久久久99精品久久| 欧美主播一区二区三区美女| 国内外成人在线| 亚洲图片有声小说| 久久久国产一区二区三区四区小说| 91片在线免费观看| 国产精品99久久久久久有的能看| 亚洲一区二区三区在线| 亚洲国产成人在线| 精品盗摄一区二区三区| 欧美夫妻性生活| 欧美日韩在线三区| 成人av小说网| 国产91露脸合集magnet | 日韩精品资源二区在线| 972aa.com艺术欧美| 久久精品国产99久久6| 日日夜夜免费精品| 香蕉久久夜色精品国产使用方法| 国产精品青草久久| 欧美国产在线观看| 国产女主播一区| 精品国产sm最大网站| 精品免费日韩av| 亚洲精品在线电影| 久久亚洲一区二区三区明星换脸| 欧美一二三区在线观看| 6080yy午夜一二三区久久| 欧美精品1区2区| 亚洲国产精品激情在线观看| 精品国产伦理网| 国产精品乱码妇女bbbb| 国产精品久久久久久久久图文区| 国产日韩影视精品| 国产精品乱人伦中文| 亚洲精品亚洲人成人网| 青青草国产精品亚洲专区无| 看国产成人h片视频| 成人国产亚洲欧美成人综合网| 99久久er热在这里只有精品66| 在线一区二区观看| 欧美大片拔萝卜| 亚洲日本在线观看| 精品一区二区在线看| 色综合av在线| 久久综合久久鬼色|