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

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

?? flashmem.c

?? vxworks for Sam2410 bsp NoNet
?? C
?? 第 1 頁 / 共 2 頁
字號:
	    sysFlashDelay (20000);            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):	case (FLASH_28F160):	case (FLASH_28F320):	    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);                sysFlashDelay (6);		/* 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):            {	    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);    }#ifdef INCLUDE_FLASH_SIB_FOOTER/****************************************************************************** * * footerChecksum - calculate the footer checksum. * * This function calculates the checksum for a footer. * * RETURNS: The checksum */static UINT32 footerChecksum    (    FOOTER *	footer    )    {    UINT32	checksum;    UINT32 *	ptr;    int         size;    UINT32	word;    checksum    = 0;    size        = sizeof (FOOTER);    ptr         = (UINT32 *)footer;    while (size > 0)        {        word = *ptr++;        if (word > ~checksum)            checksum++;        checksum += word;        size -= sizeof (word);        }    return ~checksum;    }/******************************************************************************** sysFlashWriteFooter - write footer to flash memory** This routine initializes and writes a footer to the block defined by* FLASH_ADRS so that this block can be seen from other utilities.** RETURNS: OK or ERROR*/STATUS sysFlashWriteFooter    (    int flashType    )    {    FOOTER	footer;    FOOTER *	current;    UINT32	writeOffset;    /* Build a flash footer to describe this area. */    footer.blockBase    = (char *)FLASH_ADRS;    footer.infoBase     = NULL;    footer.type         = TYPE_WRS_SIB;    footer.signature    = FLASH_FOOTER_SIGNATURE;    footer.checksum     = 0;    footer.checksum     = footerChecksum (&footer);    current = (FOOTER *)(FLASH_ADRS + FLASH_BLOCK_SIZE - sizeof (FOOTER));    if (current->type == TYPE_WRS_SIB)        return OK;    writeOffset = FLASH_BLOCK_SIZE - sizeof (FOOTER);    if (flashType == 0)        flashType = sysFlashTypeGet ();    if (sysFlashWrite(FLASH_CAST(&footer), sizeof(FOOTER),		      writeOffset,		      flashType, 0) != OK)       return ERROR;    return OK;    }#endif /* INCLUDE_FLASH_SIB_FOOTER *//******************************************************************************** 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;	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);	}#ifdef INCLUDE_FLASH_SIB_FOOTER    /*     * As block has been erased above, we can write the footer at the end of     * the block.     */    sysFlashWriteFooter (flashType);#endif#ifndef	FLASH_NO_OVERLAY    free (tempBuffer);#endif    return (OK);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线小视频| 99国产精品99久久久久久| 亚洲日本电影在线| 国产精品久久久久四虎| 国产精品欧美久久久久一区二区| 91精品国产91综合久久蜜臀| 91精品国产色综合久久ai换脸| 欧美三级日韩三级国产三级| 日本精品视频一区二区| 欧日韩精品视频| 欧美日韩国产小视频| 欧美男同性恋视频网站| 777a∨成人精品桃花网| 日韩欧美成人激情| 国产欧美一区在线| 最新成人av在线| 天天亚洲美女在线视频| 美脚の诱脚舐め脚责91| 在线免费一区三区| 欧美日本免费一区二区三区| 91麻豆精品国产自产在线| 久久久久国产精品人| 国产精品你懂的在线| 亚洲一区二三区| 久久超碰97中文字幕| 成人美女视频在线观看| 欧洲精品中文字幕| 精品久久久久久综合日本欧美| 国产亚洲欧美日韩日本| 亚洲综合一区二区三区| 日本不卡1234视频| 粉嫩一区二区三区性色av| 日本久久电影网| 精品国产91久久久久久久妲己 | 91精品在线观看入口| 欧美精品一区二区蜜臀亚洲| 亚洲你懂的在线视频| 久久精品国产久精国产| 91一区二区三区在线观看| 欧美精品一区二区久久久| 亚洲婷婷综合久久一本伊一区| 亚洲v中文字幕| 国产精品123区| 欧美另类videos死尸| 中文字幕欧美一区| 日本午夜精品一区二区三区电影| 成人在线综合网站| 日韩一级二级三级精品视频| 亚洲激情一二三区| 国产福利91精品| 欧美大尺度电影在线| 一二三区精品视频| 成人av在线资源| 精品国产91乱码一区二区三区| 亚洲一区二区三区视频在线| 成人爱爱电影网址| 久久久国产一区二区三区四区小说 | 国产二区国产一区在线观看| 欧美色综合天天久久综合精品| 久久久久国产一区二区三区四区 | 成人免费观看视频| 精品卡一卡二卡三卡四在线| 一区二区视频在线看| 粉嫩av一区二区三区粉嫩| 欧美成人在线直播| 五月婷婷综合激情| 在线观看国产一区二区| 亚洲色欲色欲www在线观看| 高清国产一区二区| 久久亚洲欧美国产精品乐播 | jlzzjlzz国产精品久久| 国产视频亚洲色图| 国产成人综合自拍| 久久久久久久久久久电影| 国产一区二区毛片| 久久久久久久电影| 丁香六月综合激情| 国产精品久久久久四虎| 不卡视频在线观看| 亚洲视频香蕉人妖| 日本韩国欧美国产| 一区二区在线免费观看| 欧美视频在线观看一区| 午夜伦理一区二区| 欧美一级一区二区| 国模无码大尺度一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 久久成人免费电影| 国产色产综合色产在线视频 | 欧美日韩国产一二三| 首页综合国产亚洲丝袜| 欧美一级高清片| 国产精品一区二区免费不卡| 国产精品丝袜在线| 在线一区二区视频| 日本91福利区| 久久香蕉国产线看观看99| 成人av电影在线| 亚洲午夜免费电影| 欧美一卡二卡三卡| 国产98色在线|日韩| 亚洲精选一二三| 日韩一区二区三区高清免费看看| 美国十次了思思久久精品导航| 26uuu精品一区二区| 99久久精品99国产精品| 日韩精品视频网| 日本一区二区综合亚洲| 91丨porny丨国产| 精品一区二区三区日韩| 亚洲精品国产一区二区三区四区在线| 精品视频1区2区| 精品亚洲免费视频| 亚洲激情一二三区| 国产亚洲午夜高清国产拍精品| 色综合视频在线观看| 久久99精品久久久久久| 亚洲一区二区三区中文字幕在线| 久久综合九色综合欧美98 | 激情国产一区二区| 亚洲一区二区欧美激情| 亚洲国产激情av| 欧美精品123区| 91麻豆国产精品久久| 麻豆精品久久精品色综合| 亚洲人吸女人奶水| 2021久久国产精品不只是精品| 色婷婷综合久久| 高清免费成人av| 精品综合久久久久久8888| 亚洲综合一区二区三区| 中文字幕va一区二区三区| 精品精品欲导航| 正在播放亚洲一区| 欧美性受极品xxxx喷水| www.在线成人| 国产成人午夜高潮毛片| 久久成人久久爱| 日本欧美在线观看| 亚洲国产中文字幕| 中文字幕一区二区三区四区不卡| 久久精品人人做人人爽人人| 日韩精品中午字幕| 欧美一区二区三区四区久久| 欧美日本乱大交xxxxx| 色综合天天性综合| 99国产精品久| 一本久久a久久精品亚洲| 成人av免费在线| 粉嫩绯色av一区二区在线观看 | 色吧成人激情小说| 91最新地址在线播放| av激情成人网| 91成人免费电影| 欧美在线不卡一区| 欧美性受xxxx| 777色狠狠一区二区三区| 911国产精品| 日韩欧美卡一卡二| 欧美成人video| 久久久久国产精品麻豆| 国产精品久久久久久福利一牛影视| 国产免费久久精品| 亚洲欧洲综合另类| 亚洲资源中文字幕| 日韩精品亚洲一区| 国产剧情在线观看一区二区| 国产白丝精品91爽爽久久 | 欧美高清一级片在线| 欧美日韩日日骚| 日韩视频免费观看高清在线视频| 日韩欧美在线网站| 337p粉嫩大胆噜噜噜噜噜91av | 韩国成人福利片在线播放| 国产一区日韩二区欧美三区| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 国产亚洲一本大道中文在线| 国产欧美中文在线| 亚洲精品乱码久久久久久久久| 亚洲午夜羞羞片| 国产乱码精品一区二区三区av| 成人a级免费电影| 91精品国产综合久久蜜臀| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲欧洲成人自拍| 日韩福利电影在线| 粉嫩在线一区二区三区视频| 欧美日韩一区二区不卡| 国产亚洲欧美日韩日本| 亚洲国产裸拍裸体视频在线观看乱了 | 精品国产乱码91久久久久久网站| 国产女主播视频一区二区| 亚洲另类春色国产| 老司机午夜精品| 色综合久久久网| 国产偷国产偷精品高清尤物| 天天亚洲美女在线视频| 99国产精品久久久久| 久久综合九色综合欧美就去吻| 亚洲国产成人av网|