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

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

?? blkmem.c

?? 單片機學習資料 適合初學者進行開發學習
?? C
?? 第 1 頁 / 共 5 頁
字號:
    printk(".");#ifdef CONFIG_LEDMAN	if (i & 1) {		ledman_cmd(LEDMAN_CMD_OFF, LEDMAN_NVRAM_1);		ledman_cmd(LEDMAN_CMD_ON,  LEDMAN_NVRAM_2);	} else {		ledman_cmd(LEDMAN_CMD_ON,  LEDMAN_NVRAM_1);		ledman_cmd(LEDMAN_CMD_OFF, LEDMAN_NVRAM_2);	}#endif#if 0    printk("%s(%d): PROGRAM BLOCK min=%x max=%x\n", __FILE__, __LINE__,      (int) min, (int) max);#endif    for (ptr = min; (ptr < max); ptr += 2, w++) {            offset = (ptr - a->address) % a->unitsize;      base = ptr - offset;#if 0      printk("%s(%d): PROGRAM base=%x offset=%x ptr=%x value=%x\n",	  __FILE__, __LINE__, (int) base, (int) offset, (int) ptr, (int) *w);#endif      *((volatile unsigned short *) (base | (0x555 << 1))) = 0xaaaa;      *((volatile unsigned short *) (base | (0x2aa << 1))) = 0x5555;      *((volatile unsigned short *) (base | (0x555 << 1))) = 0xa0a0;      *((volatile unsigned short *) ptr) = *w;      for (j = 0; (j < FTIMEOUT); j++) {	status = *((volatile unsigned short *) ptr);	if (status == *w) {	  /* Program complete */	  break;	}      }      status = *((volatile unsigned short *) ptr);      if (status != *w) {	printk("FLASH: (%d) write failed, addr=%x val=%x status=%x cnt=%d\n",		__LINE__, (int) ptr, *w, status, j);	/* Reset FLASH unit */	*((volatile unsigned short *) ptr) = 0xf0f0;	failures++;      }    }  }#ifdef CONFIG_LEDMAN  ledman_cmd(LEDMAN_CMD_RESET, LEDMAN_NVRAM_1);  ledman_cmd(LEDMAN_CMD_RESET, LEDMAN_NVRAM_2);#endif  if (failures > 0) {    printk("FLASH: %d failures programming FLASH!\n", failures);    return;  }#if 0  printk("\nFLASH: programming successful!\n");#endif  if (prog->reset) {    printk("FLASH: rebooting...\n\n");    HARD_RESET_NOW();  }}#endif /* !CONFIG_FLASH8BIT *//****************************************************************************//*                             INTEL FLASH                                  *//****************************************************************************/#if defined(CONFIG_INTELFLASH)#if defined(CONFIG_FLASH16BIT)	typedef unsigned short itype;#else	typedef unsigned char itype;#endif/* *	FLASH erase routine for the Intel Strata FLASH. */void flash_intel_erase(struct arena_t *a, unsigned long pos){  volatile itype *address;  unsigned long fbase = a->address;  unsigned long flags;  itype status;  int i;  #if 0  printk("%s(%d): flash_intel_erase(a=%x,pos=%x)\n", __FILE__, __LINE__,    (int) a, (int) pos);#endif  if (pos >= a->length)    return;#ifdef CONFIG_LEDMAN    ledman_cmd(LEDMAN_CMD_OFF, (pos&0x20000) ? LEDMAN_NVRAM_1 : LEDMAN_NVRAM_2);    ledman_cmd(LEDMAN_CMD_ON, (pos&0x20000) ? LEDMAN_NVRAM_2 : LEDMAN_NVRAM_1);#endif  address = (volatile itype *) (fbase + pos);  /* Mutex all access to FLASH memory */  down(&spare_lock);  save_flags(flags); cli();#if defined(CONFIG_WATCHDOG)  watchdog_disable();#endif#if 0  /* add this in if you want sectors unlocked as you erase them */  /* Unlock this sector */  *address = 0x60;  *address = 0xd0;  for (i = 0; (i < FTIMEOUT); i++) {    status = *address;    if (status & 0x80)      break;  }  /* Restore FLASH to normal read mode */  *address = 0xff;#endif  *address = 0x20;  *address = 0xd0;  for (i = 0; (i < FTIMEOUT); i++) {    status = *address;    if (status & 0x80)      break;  }  /* Restore FLASH to normal read mode */  *address = 0xff;  if (*address != (itype) 0xffff) {     printk("FLASH: (%d): erase failed, address %p iteration=%d "		"status=%x\n", __LINE__, address, i, (int) status);  }#if defined(CONFIG_WATCHDOG)  watchdog_enable();#endif  restore_flags(flags);  up(&spare_lock);}/* *	FLASH programming routine for Intel Strata FLASH. */void flash_intel_write(struct arena_t * a, unsigned long pos, unsigned long length, char * buffer){  unsigned long		flags, ptr, min, max;  itype			*lp, *lp0, status;  int			failures, j, k, l;  #if 0  printk("%s(%d): flash_intel_write(a=%x,pos=%x,length=%d,buf=%x)\n",	__FILE__, __LINE__, (int) a, (int) pos, (int) length, (int) buffer);#endif  down(&spare_lock);#if defined(CONFIG_WATCHDOG)  watchdog_disable();#endif  min = (a->address + pos);  max = min + length;  lp = (itype *) buffer;  for (ptr = min; (ptr < max); ptr += l) {      save_flags(flags); cli();      /* Determine write size */      lp0 = lp;      j = max - ptr;      l = (j < 32) ? j : 32;      if ((ptr & ~0x1f) != ptr) {	j = 32 - (ptr & 0x1f);	l = (l < j) ? l : j;      }      /* Program next buffer bytes */      for (j = 0; (j < FTIMEOUT); j++) {	*((volatile itype *) ptr) = 0xe8;	status = *((volatile itype *) ptr);	if (status & 0x80)	  break;      }      if ((status & 0x80) == 0)	goto writealldone;      *((volatile itype *) ptr) = (l-1)/sizeof(itype);      for (j = 0; j < l; j += sizeof(itype))	*((volatile itype *) (ptr+j)) = *lp++;      *((volatile itype *) ptr) = 0xd0;      for (j = 0; (j < FTIMEOUT); j++) {	status = *((volatile itype *) ptr);	if (status & 0x80) {	  /* Program complete */	  break;	}      }writealldone:      /* Restore FLASH to normal read mode */      *((volatile itype *) ptr) = 0xff;      for (k = 0; k < l; k += sizeof(itype), lp0++) {      	status = *((volatile itype *) (ptr+k));        if (status != *lp0) {		printk("FLASH: (%d): write failed, addr=%08x wrote=%x "		"read=%x cnt=%d len=%d\n",		__LINE__, (int) (ptr+k), (int) *lp0, (int) status, j, l);		failures++;	}      }      restore_flags(flags);    }#if defined(CONFIG_WATCHDOG)  watchdog_enable();#endif  up(&spare_lock);}#if 0/* *	Slow FLASH programming routine for Intel Strata FLASH. */void flash_intel_writeslow(struct arena_t * a, unsigned long pos, unsigned long length, char * buffer){  volatile unsigned char *address;  unsigned long flags, fbase = a->address;  unsigned char *lbuf, status;  int i;  #if 0  printk("%s(%d): flash_intel_write(a=%x,pos=%x,length=%d,buf=%x)\n",	__FILE__, __LINE__, (int) a, (int) pos, (int) length, (int) buffer);#endif  down(&spare_lock);#if defined(CONFIG_WATCHDOG)  watchdog_disable();#endif  address = (unsigned volatile char *) (fbase + pos);  lbuf = (unsigned char *) buffer;  for (; (length > 0); length--, address++, lbuf++) {      if (*address != *lbuf) {      save_flags(flags); cli();      *address = 0x40;      *address = *lbuf;      for (i = 0; (i < FTIMEOUT); i++) {	status = *address;	if (status & 0x80) {	  /* Program complete */	  break;	}      }      /* Restore FLASH to normal read mode */      *address = 0xff;      if (*address != *lbuf) {          printk("FLASH: (%d): write failed i=%d, address %p -> %x(%x)\n",		__LINE__, i, address, (int) *lbuf, (int) *address);      }      restore_flags(flags);    }  }#if defined(CONFIG_WATCHDOG)  watchdog_enable();#endif  up(&spare_lock);}#endif/* *	Program a complete FLASH image into an Intel Strata FLASH part. *	This runs from DRAM, so no need to worry about writing to what *	we are running from... */void flash_intel_writeall(struct arena_t * a, struct blkmem_program_t * prog){  unsigned long		erased[16];  unsigned long		base, offset, ptr, min, max;  unsigned char		*lp, *lp0, status;  int			failures, i, j, k, l;#if defined(CONFIG_WATCHDOG)  watchdog_disable();#endif#if 0  printk("FLASH: programming");#endif  failures = 0;  memset(&erased[0], 0, sizeof(erased));  cli();    for (i = 0; (i < prog->blocks); i++) {#if 0    printk("%s(%d): block=%d address=%x pos=%x length=%x range=%x-%x\n",      __FILE__, __LINE__, i, (int) a->address, (int) prog->block[i].pos,      (int) prog->block[i].length, (int) (prog->block[i].pos + a->address),      (int) (prog->block[i].pos + prog->block[i].length - 1 + a->address));#endif    /*     *	Erase FLASH sectors for this program block...     */    for (l = prog->block[i].pos / a->blksize;	l <= ((prog->block[i].pos+prog->block[i].length-1) / a->blksize);	l++) {      if (erased[(l / 32)] & (0x1 << (l % 32)))	continue;      ptr = l * a->blksize;      offset = ptr % a->unitsize;      base = ptr - offset;      base += a->address;      ptr += a->address;      j = 0;#if 0      printk("%s(%d): ERASE BLOCK sector=%d ptr=%x\n",	  __FILE__, __LINE__, l, (int) ptr);#endif      /* Erase this sector */      *((volatile unsigned char *) ptr) = 0x20;      *((volatile unsigned char *) ptr) = 0xd0;      for (k = 0; (k < FTIMEOUT); k++) {	status = *((volatile unsigned char *) ptr);	if (status & 0x80) {	  /* Erase complete */	  status = *((volatile unsigned char *) ptr);	  break;	}      }      /* Restore FLASH to normal read mode */      *((volatile unsigned char *) ptr) = 0xff;      if (k >= FTIMEOUT) {	  printk("FLASH: (%d) erase failed, status=%08x\n",		__LINE__, (int) status);	  failures++;	  /* Continue (with unerased sector) */	  break;      }      erased[(l / 32)] |= (0x1 << (l % 32));    }    /*     *	Program FLASH with the block data...     */    min = prog->block[i].pos+a->address;    max = prog->block[i].pos+prog->block[i].length+a->address;    lp = (unsigned char *) prog->block[i].data;    /* Progress indicators... */    printk(".");#ifdef CONFIG_LEDMAN    ledman_cmd(LEDMAN_CMD_OFF, (i & 1) ? LEDMAN_NVRAM_1 : LEDMAN_NVRAM_2);    ledman_cmd(LEDMAN_CMD_ON, (i & 1) ? LEDMAN_NVRAM_2 : LEDMAN_NVRAM_1);#endif#if 0    printk("%s(%d): PROGRAM BLOCK min=%x max=%x\n", __FILE__, __LINE__,      (int) min, (int) max);#endif    for (ptr = min; (ptr < max); ptr += l) {      /* Determine write size */      lp0 = lp;      j = max - ptr;      l = (j < 32) ? j : 32;      if ((ptr & ~0x1f) != ptr) {	j = 32 - (ptr & 0x1f);	l = (l < j) ? l : j;      }#if 0      printk("%s(%d): PROGRAM ptr=%x l=%d\n", __FILE__, __LINE__, (int) ptr, l);#endif      /* Program next buffer bytes */      for (j = 0; (j < FTIMEOUT); j++) {	*((volatile unsigned char *) ptr) = 0xe8;	status = *((volatile unsigned char *) ptr);	if (status & 0x80)	  break;      }      if ((status & 0x80) == 0)	goto intelwritealldone;      *((volatile unsigned char *) ptr) = (l-1);      for (j = 0; (j < l); j++)	*((volatile unsigned char *) (ptr+j)) = *lp++;      *((volatile unsigned char *) ptr) = 0xd0;      for (j = 0; (j < FTIMEOUT); j++) {	status = *((volatile unsigned char *) ptr);	if (status & 0x80) {	  /* Program complete */	  break;	}      }intelwritealldone:      /* Restore FLASH to normal read mode */      *((volatile unsigned char *) ptr) = 0xff;      for (k = 0; (k < l); k++, lp0++) {      	status = *((volatile unsigned char *) (ptr+k));        if (status != *lp0) {		printk("FLASH: (%d): write failed, addr=%08x wrote=%02x "		"read=%02x cnt=%d len=%d\n",		__LINE__, (int) (ptr+k), (int) *lp0, (int) status, j, l);		failures++;	}      }    }  }#ifdef CONFIG_LEDMAN  ledman_cmd(LEDMAN_CMD_RESET, LEDMAN_NVRAM_1);  ledman_cmd(LEDMAN_CMD_RESET, LEDMAN_NVRAM_2);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲高清一区| 日本伊人精品一区二区三区观看方式| 国产综合色视频| 亚洲精品一区二区三区蜜桃下载 | 亚洲欧美福利一区二区| 91在线播放网址| 洋洋成人永久网站入口| 欧美伊人久久久久久久久影院| 亚洲一区在线播放| 欧美一区二区福利视频| 久久99精品一区二区三区三区| 久久久久综合网| 99免费精品在线| 香蕉av福利精品导航| 91精品国产福利| 国产伦精品一区二区三区在线观看| 久久久久久麻豆| 一本大道久久a久久精品综合| 图片区小说区区亚洲影院| 日韩精品一区二区三区四区| 成人性生交大合| 亚洲国产wwwccc36天堂| 久久麻豆一区二区| 色综合天天综合狠狠| 午夜婷婷国产麻豆精品| 精品国产乱码久久久久久影片| 成人黄动漫网站免费app| 亚洲一二三专区| 久久久精品黄色| 欧美在线你懂的| 国产精品乡下勾搭老头1| 亚洲一区二区欧美激情| 久久久久久久久久久久久女国产乱 | 成人综合日日夜夜| 天天综合天天综合色| 国产亚洲一区二区三区四区| 欧美午夜在线观看| 成人性生交大片免费看在线播放| 天天影视色香欲综合网老头| 亚洲国产精品成人综合| 欧美疯狂做受xxxx富婆| 9l国产精品久久久久麻豆| 青青青爽久久午夜综合久久午夜| 国产精品久久久久影视| 精品久久久久久无| 欧美日韩成人高清| 99久久99久久精品免费观看| 国内精品免费**视频| 亚洲123区在线观看| 国产精品免费视频网站| 26uuu亚洲| 欧美男人的天堂一二区| 色综合久久天天| 国产精品日韩成人| 一本高清dvd不卡在线观看| 亚洲天堂精品在线观看| 国产盗摄精品一区二区三区在线| 亚洲精品高清在线| 国产精品私人影院| 亚洲区小说区图片区qvod| 欧美成人国产一区二区| 欧美视频一区二区| 一道本成人在线| 91亚洲男人天堂| www.视频一区| 成人激情文学综合网| 国产91丝袜在线18| 国产乱码精品一区二区三区五月婷 | 欧美不卡激情三级在线观看| 欧美日韩精品专区| 色吧成人激情小说| 一本色道久久综合亚洲91| www.在线欧美| 不卡电影一区二区三区| 91女厕偷拍女厕偷拍高清| 成人免费视频免费观看| 成人av先锋影音| 99国产精品视频免费观看| 成人app在线| 色婷婷综合久久久久中文| 99久久精品国产麻豆演员表| 99久久免费精品高清特色大片| 成人av资源在线| 色国产精品一区在线观看| 91麻豆精品在线观看| 在线观看成人免费视频| 欧美日韩一区二区三区四区 | 91在线精品一区二区三区| 国产成人av电影在线观看| 国产精品综合网| 国产999精品久久久久久绿帽| 国产999精品久久久久久| 成人免费毛片嘿嘿连载视频| 色婷婷一区二区| 欧美日韩国产免费一区二区| 欧美一区二区三区喷汁尤物| 日韩欧美中文字幕公布| 国产视频一区二区三区在线观看| 中文字幕在线一区免费| 国产精品影视天天线| 成人aaaa免费全部观看| 欧美私模裸体表演在线观看| 日韩视频永久免费| 中文字幕免费在线观看视频一区| 亚洲欧洲精品一区二区三区| 亚洲综合丝袜美腿| 久久99国产精品免费网站| 大白屁股一区二区视频| 欧美视频日韩视频| 久久亚洲精华国产精华液| 成人欧美一区二区三区白人 | 亚洲欧美另类在线| 五月婷婷综合激情| 国产高清不卡二三区| 色久综合一二码| 精品毛片乱码1区2区3区| 亚洲女性喷水在线观看一区| 日本视频免费一区| 92精品国产成人观看免费 | 国产v日产∨综合v精品视频| 色狠狠综合天天综合综合| 欧美精品一区二区久久久| 亚洲另类一区二区| 久久国产婷婷国产香蕉| 一本久道中文字幕精品亚洲嫩 | 国产亚洲人成网站| 性感美女久久精品| 成人动漫视频在线| 26uuu久久综合| 天天色天天爱天天射综合| 成人激情午夜影院| 精品国免费一区二区三区| 亚洲美女少妇撒尿| 高潮精品一区videoshd| 欧美二区在线观看| 亚洲精品中文在线观看| 国产传媒一区在线| 欧美一区二区三区四区五区| 亚洲免费在线播放| 国产91在线观看| 欧美大片国产精品| 调教+趴+乳夹+国产+精品| 99国产精品99久久久久久| 久久久久国产精品免费免费搜索| 日日嗨av一区二区三区四区| 91日韩在线专区| 国产精品美女久久久久久 | 亚洲视频你懂的| 国产成人在线免费| 精品国产一区a| 天堂精品中文字幕在线| 欧美在线高清视频| 亚洲色图制服丝袜| 成人av高清在线| 国产精品麻豆网站| www.亚洲激情.com| 国产精品污污网站在线观看 | 久久国产精品99久久人人澡| 欧美日韩免费一区二区三区视频| 亚洲图片欧美激情| 成人av免费网站| 亚洲视频香蕉人妖| 色综合天天综合狠狠| 亚洲欧美一区二区在线观看| 91精品蜜臀在线一区尤物| 亚洲综合色在线| 欧美亚洲尤物久久| 亚洲综合视频网| 欧美精品一卡两卡| 日韩电影在线一区二区| 91精品国产综合久久精品性色| 亚洲第一电影网| 欧美日本一道本在线视频| 天天色综合天天| 欧美一级欧美三级| 久久国产三级精品| 久久精品免视看| 不卡视频一二三四| 亚洲三级免费电影| 欧美亚洲高清一区| 蜜臀av一级做a爰片久久| 欧美成人在线直播| 成人深夜视频在线观看| 亚洲同性gay激情无套| 欧美三级电影在线看| 免费人成精品欧美精品| 精品粉嫩aⅴ一区二区三区四区| 国产一区999| 综合色中文字幕| 欧美人牲a欧美精品| 麻豆极品一区二区三区| xvideos.蜜桃一区二区| www.激情成人| 亚洲国产精品久久久久婷婷884| 欧美一区二区精美| 成人综合在线视频| 午夜成人免费电影| 国产蜜臀av在线一区二区三区| 99免费精品视频| 日韩精品电影一区亚洲|