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

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

?? sysspinvram.c

?? vxworks 串口通信程序例子 對vxworks下開發串口通信程序很有幫助
?? C
?? 第 1 頁 / 共 2 頁
字號:
   while (pSpi->pRxBdBase->statusMode & SPI_TRANS_RX_BD_EMPTY)
     {
       /* Busy-wait. */
       ;
     }
 
   /* De-assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) |= 0x00001;
 
   /* Copy EEPROM data into given string. */
   bcopyBytes(&eeprom_data[3], string, strLen);
   return(OK);
 }	/* end of sysNvRamGet */
 
 
 /******************************************************************************
 *
 * sysNvRamSet - write to non-volatile RAM
 *
 * This routine copies a specified string into non-volatile RAM.
 *
 * RETURNS: OK, or ERROR if access is outside the non-volatile RAM range.
 *
 * SEE ALSO: sysNvRamGet(), sysHwSpiInit()
 */
 
 STATUS	sysNvRamSet(
                     char*	string,
                     int		strLen,
                     int		offset)
 {
   /* (Note - given offset is not used by this routine.) */
 
   UCHAR	dataChar;
   USHORT	int_offset = 0;
   SPI_DEV*	pSpi;
 
   pSpi = &spiDev;
 
   if (pSpi->init != TRUE)
       return(ERROR);
 
   offset += NV_BOOT_OFFSET;   /* boot line begins at <offset> = 0 */
   
   if ((offset < 0)
       || (strLen < 0)
       || ((offset + strLen) > SPI_SERIAL_EEPROM_SZ))
     return (ERROR);
 
   int_offset = offset;
 
   while (strLen)
     {
       sysNvRamWriteEnable();
       dataChar = (UCHAR) *string++;
       sysNvRamWriteByte(dataChar, int_offset++);
       strLen--;
     }
 
   return(OK);
 }	/* end of sysNvRamSet */
 
 
 /******************************************************************************
 *
 * sysNvRamWriteEnable - enable writing to NVRAM
 *
 * This routine enables writing to NVRAM
 *
 * RETURNS: none
 *
 * NOMANUAL
 */
 
 LOCAL void	sysNvRamWriteEnable(
                                 void)
 {
   SPI_DEV*	pSpi;
 
 
   pSpi = &spiDev;
 
   /* Wait for EEPROM to become ready. */
   while (sysNvRamGetStatus() == ERROR)
     {
       /* Busy-wait. */
       ;
     }
 
   /* Assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) &= 0x3FFFE;
 
   /* Wait for transmit to finish (first). */
   while (pSpi->pTxBdBase->statusMode & SPI_TRANS_TX_BD_READY)
     {
       /* Busy-wait. */
       ;
     }
 
   /* Disable SPI (serial port interface). */
   *MPC860_SPMODE(pSpi->regBase) = DisSPI;
 
   /* Set up for "write enable latch (enable write operations)". */
   *eep_wt_ptr = 6;
 
   /* Set up transmit buffer descriptor. */
   pSpi->pTxBdBase->dataPointer = eep_wt_ptr;
   pSpi->pTxBdBase->dataLength = 1;
   pSpi->pTxBdBase->statusMode = ( SPI_TRANS_TX_BD_READY |
                                   SPI_TRANS_TX_BD_WRAP  |
                                   SPI_TRANS_TX_BD_LAST );
 
   /* Set SPI read value. */
   pSpi->pPram->mrblr = 1;
 
   /* Set up receive buffer descriptor. */
   pSpi->pRxBdBase->dataPointer = eep_wt_ptr + 16;
   pSpi->pRxBdBase->statusMode = ( SPI_TRANS_RX_BD_EMPTY |
                                   SPI_TRANS_RX_BD_WRAP );
 
   /* Assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) &= 0x3FFFE;
 
   /* Enable SPI. */
   *MPC860_SPMODE(pSpi->regBase) = EnSPI;
 
   /* Start transfer. */
   *MPC860_SPCOM(pSpi->regBase) = SPI_STR;
 
   /* Wait for reading to finish. */
   while (pSpi->pRxBdBase->statusMode & 0x8000)
     {
       /* Busy-wait. */
       ;
     }
 
   /* De-assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) |= 0x00001;
 
   return;
 }	/* end of sysNvRamWriteEnable */
 
 
 /******************************************************************************
 *
 * sysNvRamWriteByte - write a byte to NVRAM
 *
 * This routine writes one byte to NVRAM
 *
 * RETURNS: none
 *
 * NOMANUAL
 */
 
 LOCAL void	sysNvRamWriteByte(
                               UCHAR		data,
                               USHORT		eep_addr)
 {
   SPI_DEV*	pSpi;
 
 
   pSpi = &spiDev;
 
   /* Wait for EEPROM to become ready. */
   while (sysNvRamGetStatus() == ERROR)
     {
       /* Busy-wait. */
       ;
     }
 
   /* Wait for transmit to finish (first). */
   while (pSpi->pTxBdBase->statusMode & SPI_TRANS_TX_BD_READY)
     {
       /* Busy-wait. */
       ;
     }
 
   /* Disable SPI (serial port interface). */
   *MPC860_SPMODE(pSpi->regBase) = DisSPI;
 
 
   /* Set up for "write data to memory array beginning at selected addr". */
   *eep_wt_ptr = 2;
 
   /* Write the given character into the proper write buffer location. */
   *(eep_wt_ptr + 3) = data;
 
   *(USHORT*) (eep_wt_ptr + 1) = eep_addr;
 
   /* Set up transmit buffer descriptor. */
   pSpi->pTxBdBase->dataPointer = eep_wt_ptr;
   pSpi->pTxBdBase->dataLength = 4;
   pSpi->pTxBdBase->statusMode =  ( SPI_TRANS_TX_BD_READY |
                                    SPI_TRANS_TX_BD_WRAP  |
                                    SPI_TRANS_TX_BD_LAST );
 
   /* Set SPI read value. */
   pSpi->pPram->mrblr = 4;
 
   /* Set up receive buffer descriptor. */
   pSpi->pRxBdBase->dataPointer = eep_wt_ptr + 32;
   pSpi->pRxBdBase->statusMode = ( SPI_TRANS_RX_BD_WRAP  |
                                   SPI_TRANS_RX_BD_EMPTY );
   /* Assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) &= 0x3FFFE;
 
   /* Enable SPI. */
   *MPC860_SPMODE(pSpi->regBase) = EnSPI;
 
   /* Start transfer. */
   *MPC860_SPCOM(pSpi->regBase) = SPI_STR;
 
   /* Wait for reading to finish. */
   while (pSpi->pRxBdBase->statusMode & SPI_TRANS_RX_BD_EMPTY)
     {
       /* Busy-wait. */
       ;
     }
 
   /* De-assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) |= 0x00001;
 
   return;
 }	/* end of sysNvRamWriteByte */
 
 
 /******************************************************************************
 *
 * sysNvRamGetStatus - get the status of NVRAM
 *
 * This routine gets the status of the NVRAM
 *
 * RETURNS: OK or ERROR
 *
 * NOMANUAL
 */
 
 LOCAL STATUS	sysNvRamGetStatus(
                                   void)
 {
   SPI_DEV*	pSpi;
 
 
   pSpi = &spiDev;
 
   /* Wait for transmit to finish (first). */
   while (pSpi->pTxBdBase->statusMode & SPI_TRANS_TX_BD_READY)
     {
       /* Busy-wait. */
       ;
     }
 
   /* Assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) &= 0x3FFFE;
 
   /* Disable SPI (serial port interface). */
   *MPC860_SPMODE(pSpi->regBase) = DisSPI;
 
   /* Set up for "read status register". */
   *eep_wt_ptr = 5;
 
   /* Set up transmit buffer descriptor. */
   pSpi->pTxBdBase->dataPointer = eep_wt_ptr;
   pSpi->pTxBdBase->dataLength = 2;
   pSpi->pTxBdBase->statusMode = ( SPI_TRANS_TX_BD_READY |
                                   SPI_TRANS_TX_BD_WRAP  |
                                   SPI_TRANS_TX_BD_LAST );
 
   /* Set SPI read value. */
   pSpi->pPram->mrblr = 2;
 
   /* Set up receive buffer descriptor. */
   pSpi->pRxBdBase->dataPointer = eep_wt_ptr + 16;
   pSpi->pRxBdBase->statusMode = ( SPI_TRANS_RX_BD_WRAP  |
                                   SPI_TRANS_RX_BD_EMPTY );
 
   /* Enable SPI. */
   *MPC860_SPMODE(pSpi->regBase) = EnSPI;
 
   /* Start transfer. */
   *MPC860_SPCOM(pSpi->regBase) = SPI_STR;
 
   /* Wait for reading to finish. */
   while (pSpi->pRxBdBase->statusMode & SPI_TRANS_RX_BD_EMPTY)
     {
       ;
     }
 
   /* De-assert EEPROM chip select (CS). */
   *PBDAT(pSpi->regBase) |= 0x00001;
 
   if (*(eep_wt_ptr + 17) & 1)
     {
       return(ERROR);
     }
   else
     {
       return(OK);
     }
 }	/* end of sysNvRamGetStatus */
 
 
 
 /* NV-RAM test. */
 UCHAR	read_from_EEPROM[(SPI_SERIAL_EEPROM_SZ + SPI_SERIAL_CMD_SEQ_SZ)];
 UCHAR	write_to_EEPROM[(SPI_SERIAL_EEPROM_SZ + SPI_SERIAL_CMD_SEQ_SZ)];
 void	nvram_test(int seed,int offset )
 {
   STATUS	status;
   int		i;
 
 
   printf("About to init SPI.\n");
   sysHwSpiInit();
   printf("About to read contents of entire EEPROM.\n");
   status = sysNvRamGet(&read_from_EEPROM[0], SPI_SERIAL_EEPROM_SZ, 0);
   printf("Status of sysNvRamGet is %d.\n", status);
   printf("Contents of EEPROM are: \n");
   for (i = 0; i < 64; i++)
     {
       printf("\n%x %x %x %x",
              *((UINT*) &read_from_EEPROM[i * 16]),
              *((UINT*) &read_from_EEPROM[(i * 16) + 4]),
              *((UINT*) &read_from_EEPROM[(i * 16) + 8]),
              *((UINT*) &read_from_EEPROM[(i * 16) + 12]));
     }
   for (i = 0; i < SPI_SERIAL_EEPROM_SZ; i++)
     {
       write_to_EEPROM[i] = (unsigned char)0;
     }
   printf("About to write contents of entire EEPROM.\n");
 	status = sysNvRamSet(&write_to_EEPROM[0], SPI_SERIAL_EEPROM_SZ - offset,
 							offset);
   printf("Status of sysNvRamSet is %d.\n", status);
   printf("About to read contents of entire EEPROM.\n");
   status = sysNvRamGet(&read_from_EEPROM[0], SPI_SERIAL_EEPROM_SZ, 0);
 
 	for (i = 0; i < SPI_SERIAL_EEPROM_SZ; i++)
 		{
 		if (read_from_EEPROM[i] != write_to_EEPROM[i])
 			{
 			printf("\n%d: 0x%02x != 0x%02x ", i, read_from_EEPROM[i],
 					write_to_EEPROM[i]);
 			}
 		}
   printf("\nDONE");
     
   return;
 }
 
 
 /* end of sysSpiNvRam.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清国产一区二区| 日韩一区二区免费高清| 精品视频一区 二区 三区| 日韩欧美国产精品一区| 亚洲精品你懂的| 国产又黄又大久久| 91成人在线精品| 欧美激情在线一区二区三区| 天堂成人国产精品一区| 91在线无精精品入口| 久久久影院官网| 日日夜夜精品免费视频| 在线看日本不卡| 中文字幕一区日韩精品欧美| 国产一区在线不卡| 精品国产成人系列| 奇米四色…亚洲| 欧美日韩在线播放一区| 欧美日韩免费视频| 97精品国产露脸对白| www成人在线观看| 日韩和欧美的一区| 欧美夫妻性生活| 亚洲国产欧美日韩另类综合| 91免费视频大全| 国产精品第一页第二页第三页| 国产精品538一区二区在线| 欧美精品一区二区三| 蜜桃视频一区二区| 欧美一区二区成人| 日韩av不卡一区二区| 91精品国产入口在线| 日韩综合在线视频| 91精品国产综合久久精品| 水野朝阳av一区二区三区| 欧美日韩精品一区视频| 天天色图综合网| 欧美日韩视频在线观看一区二区三区 | 亚洲欧美aⅴ...| av影院午夜一区| 中文字幕在线免费不卡| 99免费精品视频| 亚洲综合在线视频| 欧美吞精做爰啪啪高潮| 五月综合激情婷婷六月色窝| 欧美女孩性生活视频| 日韩vs国产vs欧美| 精品成人私密视频| 从欧美一区二区三区| 成人欧美一区二区三区白人 | 老司机精品视频导航| 精品国产乱码久久| 懂色av一区二区三区蜜臀| 中文字幕中文在线不卡住| 在线视频中文字幕一区二区| 舔着乳尖日韩一区| 国产丝袜欧美中文另类| 色综合久久综合| 日本不卡的三区四区五区| 久久九九久久九九| 色8久久人人97超碰香蕉987| 五月天中文字幕一区二区| 精品福利一二区| 91视频你懂的| 秋霞成人午夜伦在线观看| 国产视频亚洲色图| 欧美日韩一区高清| 国产成人av一区二区三区在线| 亚洲视频免费观看| 日韩午夜精品电影| bt7086福利一区国产| 日韩av电影免费观看高清完整版| 欧美经典三级视频一区二区三区| 欧美午夜在线观看| 成人福利视频网站| 蜜臀av国产精品久久久久| 亚洲视频免费在线| 久久久高清一区二区三区| 欧美日韩精品一区二区三区蜜桃| 国内精品免费在线观看| 亚洲综合激情另类小说区| 久久青草欧美一区二区三区| 精品视频1区2区| 99视频国产精品| 国产麻豆精品一区二区| 亚洲va欧美va国产va天堂影院| 国产亚洲成av人在线观看导航 | 精品国产凹凸成av人导航| 色欧美乱欧美15图片| 粉嫩久久99精品久久久久久夜| 亚洲国产一区视频| 亚洲视频一区二区在线| 国产欧美日韩亚州综合| 日韩免费成人网| 亚洲国产精品视频| 日本aⅴ亚洲精品中文乱码| 国产精品高潮久久久久无| 久久久电影一区二区三区| 日韩免费电影一区| 91精品欧美福利在线观看| 欧美主播一区二区三区| 99精品久久免费看蜜臀剧情介绍 | 婷婷久久综合九色综合绿巨人| 中文字幕一区三区| 国产精品成人免费在线| 亚洲国产精品成人久久综合一区| 欧美mv和日韩mv的网站| 91精品国产综合久久婷婷香蕉| 欧美性猛片xxxx免费看久爱| 91激情五月电影| 91麻豆精品视频| 一本大道综合伊人精品热热| 91丨porny丨国产| 9色porny自拍视频一区二区| 成人深夜福利app| www.日韩av| 91丨九色丨黑人外教| 91色porny蝌蚪| 色哟哟精品一区| 欧美吞精做爰啪啪高潮| 欧美在线不卡视频| 在线免费不卡视频| 欧美日韩久久不卡| 欧美精品v日韩精品v韩国精品v| 欧美午夜不卡视频| 在线91免费看| 精品久久国产97色综合| 久久久影院官网| 中文字幕永久在线不卡| 亚洲一区在线观看网站| 肉肉av福利一精品导航| 极品少妇xxxx精品少妇| 国产精品99久久久久久似苏梦涵| 大美女一区二区三区| 色哟哟一区二区在线观看| 欧美高清视频在线高清观看mv色露露十八| 欧美在线观看一区二区| 欧美一区二区在线免费播放| 久久丝袜美腿综合| 国产精品视频一二| 亚洲1区2区3区4区| 国产经典欧美精品| 日本乱人伦一区| 日韩欧美久久久| 自拍av一区二区三区| 婷婷一区二区三区| 国产精品一区二区三区网站| 白白色亚洲国产精品| 欧美日韩大陆一区二区| 久久久久久久免费视频了| 成人欧美一区二区三区1314| 视频一区视频二区中文字幕| 国产一区二区91| 色猫猫国产区一区二在线视频| 欧美日韩综合在线免费观看| 久久久一区二区三区| 亚洲线精品一区二区三区八戒| 国产69精品久久99不卡| 欧美在线观看视频一区二区| 精品久久久久久久久久久久包黑料 | av在线不卡网| 日韩一级完整毛片| 亚洲色图欧洲色图| 精品午夜久久福利影院| 欧美亚洲国产一区在线观看网站| 精品三级av在线| 夜夜精品浪潮av一区二区三区| 激情久久五月天| 在线欧美一区二区| 国产免费成人在线视频| 免费成人av在线| 99久久精品费精品国产一区二区| 日韩欧美卡一卡二| 天天综合天天做天天综合| 91一区二区在线观看| 国产色产综合产在线视频| 首页国产欧美日韩丝袜| 色999日韩国产欧美一区二区| 欧美精品一区二区三区蜜桃| 婷婷开心激情综合| 在线观看免费成人| 亚洲欧美日韩系列| 粉嫩av一区二区三区在线播放| 日韩一级完整毛片| 午夜成人在线视频| 在线看不卡av| 亚洲欧美一区二区三区久本道91| 国产伦理精品不卡| 精品欧美一区二区三区精品久久| 日韩精品电影一区亚洲| 欧美伊人精品成人久久综合97 | 99国产精品久久久久久久久久久| 精品国产百合女同互慰| 久久国产夜色精品鲁鲁99| 在线播放中文字幕一区| 天天操天天干天天综合网| 99精品黄色片免费大全| 国产精品久久777777| 成人福利视频网站| 亚洲日本va午夜在线电影|