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

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

?? epcs.c

?? Universal Bootloader which support OMAP2420.
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* * (C) Copyright 2004, Psyent Corporation <www.psyent.com> * Scott McNutt <smcnutt@psyent.com> * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <common.h>#if defined(CFG_NIOS_EPCSBASE)#include <command.h>#include <nios2.h>#include <nios2-io.h>#include <nios2-epcs.h>/*-----------------------------------------------------------------------*/#define SHORT_HELP\	"epcs    - read/write Cyclone EPCS configuration device.\n"#define LONG_HELP\	"\n"\	"epcs erase start [end]\n"\	"    - erase sector start or sectors start through end.\n"\	"epcs info\n"\	"    - display EPCS device information.\n"\	"epcs protect on | off\n"\	"    - turn device protection on or off.\n"\	"epcs read addr offset count\n"\	"    - read count bytes from offset to addr.\n"\	"epcs write addr offset count\n"\	"    - write count bytes to offset from addr.\n"\	"epcs verify addr offset count\n"\	"    - verify count bytes at offset from addr.\n"/*-----------------------------------------------------------------------*//* Operation codes for serial configuration devices */#define EPCS_WRITE_ENA		0x06	/* Write enable */#define EPCS_WRITE_DIS		0x04	/* Write disable */#define EPCS_READ_STAT		0x05	/* Read status */#define EPCS_READ_BYTES		0x03	/* Read bytes */#define EPCS_READ_ID		0xab	/* Read silicon id */#define EPCS_WRITE_STAT		0x01	/* Write status */#define EPCS_WRITE_BYTES	0x02	/* Write bytes */#define EPCS_ERASE_BULK		0xc7	/* Erase entire device */#define EPCS_ERASE_SECT		0xd8	/* Erase sector *//* Device status register bits */#define EPCS_STATUS_WIP		(1<<0)	/* Write in progress */#define EPCS_STATUS_WEL		(1<<1)	/* Write enable latch *//* Misc */#define EPCS_TIMEOUT		100	/* 100 msec timeout */static nios_spi_t *epcs =	(nios_spi_t *)CACHE_BYPASS(CFG_NIOS_EPCSBASE);/*********************************************************************** * Device access ***********************************************************************/static int epcs_cs (int assert){	ulong start;	if (assert) {		epcs->control |= NIOS_SPI_SSO;	} else {		/* Let all bits shift out */		start = get_timer (0);		while ((epcs->status & NIOS_SPI_TMT) == 0)			if (get_timer (start) > EPCS_TIMEOUT)				return (-1);		epcs->control &= ~NIOS_SPI_SSO;	}	return (0);}static int epcs_tx (unsigned char c){	ulong start;	start = get_timer (0);	while ((epcs->status & NIOS_SPI_TRDY) == 0)		if (get_timer (start) > EPCS_TIMEOUT)			return (-1);	epcs->txdata = c;	return (0);}static int epcs_rx (void){	ulong start;	start = get_timer (0);	while ((epcs->status & NIOS_SPI_RRDY) == 0)		if (get_timer (start) > EPCS_TIMEOUT)			return (-1);	return (epcs->rxdata);}static unsigned char bitrev[] = {	0x00, 0x08, 0x04, 0x0c, 0x02, 0x0a, 0x06, 0x0e,	0x01, 0x09, 0x05, 0x0d, 0x03, 0x0b, 0x07, 0x0f};static unsigned char epcs_bitrev (unsigned char c){	unsigned char val;	val  = bitrev[c>>4];	val |= bitrev[c & 0x0f]<<4;	return (val);}static void epcs_rcv (unsigned char *dst, int len){	while (len--) {		epcs_tx (0);		*dst++ = epcs_rx ();	}}static void epcs_rrcv (unsigned char *dst, int len){	while (len--) {		epcs_tx (0);		*dst++ = epcs_bitrev (epcs_rx ());	}}static void epcs_snd (unsigned char *src, int len){	while (len--) {		epcs_tx (*src++);		epcs_rx ();	}}static void epcs_rsnd (unsigned char *src, int len){	while (len--) {		epcs_tx (epcs_bitrev (*src++));		epcs_rx ();	}}static void epcs_wr_enable (void){	epcs_cs (1);	epcs_tx (EPCS_WRITE_ENA);	epcs_rx ();	epcs_cs (0);}static unsigned char epcs_status_rd (void){	unsigned char status;	epcs_cs (1);	epcs_tx (EPCS_READ_STAT);	epcs_rx ();	epcs_tx (0);	status = epcs_rx ();	epcs_cs (0);	return (status);}static void epcs_status_wr (unsigned char status){	epcs_wr_enable ();	epcs_cs (1);	epcs_tx (EPCS_WRITE_STAT);	epcs_rx ();	epcs_tx (status);	epcs_rx ();	epcs_cs (0);	return;}/*********************************************************************** * Device information ***********************************************************************/static struct epcs_devinfo_t devinfo[] = {	{ "EPCS1 ", 0x10, 17, 4, 15, 8, 0x0c },	{ "EPCS4 ", 0x12, 19, 8, 16, 8, 0x1c },	{ 0, 0, 0, 0, 0, 0 }};epcs_devinfo_t *epcs_dev_find (void){	unsigned char buf[4];	unsigned char id;	int i;	struct epcs_devinfo_t *dev = NULL;	/* Read silicon id requires 3 "dummy bytes" before it's put	 * on the wire.	 */	buf[0] = EPCS_READ_ID;	buf[1] = 0;	buf[2] = 0;	buf[3] = 0;	epcs_cs (1);	epcs_snd (buf,4);	epcs_rcv (buf,1);	if (epcs_cs (0) == -1)		return (NULL);	id = buf[0];	/* Find the info struct */	i = 0;	while (devinfo[i].name) {		if (id == devinfo[i].id) {			dev = &devinfo[i];			break;		}		i++;	}	return (dev);}/*********************************************************************** * Misc Utilities ***********************************************************************/int epcs_cfgsz (void){	int sz = 0;	unsigned char buf[128];	unsigned char *p;	struct epcs_devinfo_t *dev = epcs_dev_find ();	if (!dev)		return (-1);	/* Read in the first 128 bytes of the device */	buf[0] = EPCS_READ_BYTES;	buf[1] = 0;	buf[2] = 0;	buf[3] = 0;	epcs_cs (1);	epcs_snd (buf,4);	epcs_rrcv (buf, sizeof(buf));	epcs_cs (0);	/* Search for the starting 0x6a which is followed by the	 * 4-byte 'register' and 4-byte bit-count.	 */	p = buf;	while (p < buf + sizeof(buf)-8) {		if ( *p == 0x6a ) {			/* Point to bit count and extract */			p += 5;			sz = *p++;			sz |= *p++ << 8;			sz |= *p++ << 16;			sz |= *p++ << 24;			/* Convert to byte count */			sz += 7;			sz >>= 3;		} else if (*p == 0xff) {			/* 0xff is ok ... just skip */			p++;			continue;		} else {			/* Not 0xff or 0x6a ... something's not			 * right ... report 'unknown' (sz=0).			 */			break;		}	}	return (sz);}int epcs_erase (unsigned start, unsigned end){	unsigned off, sectsz;	unsigned char buf[4];	struct epcs_devinfo_t *dev = epcs_dev_find ();	if (!dev || (start>end))		return (-1);	/* Erase the requested sectors. An address is required	 * that lies within the requested sector -- we'll just	 * use the first address in the sector.	 */	printf ("epcs erasing sector %d ", start);	if (start != end)		printf ("to %d ", end);	sectsz = (1 << dev->sz_sect);	while (start <= end) {		off = start * sectsz;		start++;		buf[0] = EPCS_ERASE_SECT;		buf[1] = off >> 16;		buf[2] = off >> 8;		buf[3] = off;		epcs_wr_enable ();		epcs_cs (1);		epcs_snd (buf,4);		epcs_cs (0);		printf ("."); /* Some user feedback */		/* Wait for erase to complete */		while (epcs_status_rd() & EPCS_STATUS_WIP)			;	}	printf (" done.\n");	return (0);}int epcs_read (ulong addr, ulong off, ulong cnt){	unsigned char buf[4];	struct epcs_devinfo_t *dev = epcs_dev_find ();	if (!dev)		return (-1);	buf[0] = EPCS_READ_BYTES;	buf[1] = off >> 16;	buf[2] = off >> 8;	buf[3] = off;	epcs_cs (1);	epcs_snd (buf,4);	epcs_rrcv ((unsigned char *)addr, cnt);	epcs_cs (0);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久男人中文字幕资源站| 国产麻豆精品一区二区| 成人黄色在线看| 国产清纯白嫩初高生在线观看91| 国产综合成人久久大片91| 精品国产免费人成电影在线观看四季| 麻豆中文一区二区| 国产亚洲短视频| 不卡av在线免费观看| 偷偷要91色婷婷| 精品久久久久一区| 国产精品自拍av| 日韩一区在线免费观看| 在线亚洲免费视频| 免费成人av在线| 国产欧美日韩久久| 在线综合视频播放| 国产一区二区在线观看免费 | 欧美特级限制片免费在线观看| 夜夜亚洲天天久久| 欧美一区二区三区喷汁尤物| 国产激情视频一区二区在线观看 | 亚洲国产精品自拍| 日韩一区二区精品在线观看| 国产不卡在线视频| 亚洲综合一区二区精品导航| 精品国精品国产| 91麻豆精品91久久久久同性| 91婷婷韩国欧美一区二区| 午夜不卡av免费| 亚洲国产日韩在线一区模特| 日韩一区中文字幕| 中文在线免费一区三区高中清不卡| 色婷婷综合五月| 国产一区二区三区在线观看免费| 日本aⅴ免费视频一区二区三区| 亚洲色图都市小说| 亚洲精品在线免费播放| 91精品久久久久久久91蜜桃 | 日韩一区二区视频在线观看| 欧美人动与zoxxxx乱| 成人国产精品免费网站| 国产激情一区二区三区四区| 国产精品自拍一区| 国产成人综合在线播放| 国产一区二区三区在线观看免费| 国产一区二区三区在线观看精品 | 久久99精品国产.久久久久久| 亚洲欧美日韩国产手机在线| 精品国产一区二区三区四区四| 欧美一区二区三区在线电影| 日韩视频一区二区| 精品精品国产高清一毛片一天堂| 精品精品国产高清a毛片牛牛 | 在线观看成人小视频| 精品视频一区二区三区免费| 成人丝袜视频网| 开心九九激情九九欧美日韩精美视频电影 | 经典一区二区三区| 韩国成人精品a∨在线观看| 国产激情一区二区三区四区| 99精品欧美一区二区三区小说| 久久91精品国产91久久小草| 激情国产一区二区| 国产精品一区免费视频| 成人黄色片在线观看| 欧美影视一区在线| 欧美一区二区在线观看| 久久综合久久综合亚洲| 欧美另类一区二区三区| 欧美综合色免费| 欧美精品久久久久久久多人混战| 日韩免费电影网站| 亚洲精品高清视频在线观看| 精品国产91九色蝌蚪| 国产精品乱码一区二三区小蝌蚪| 日韩欧美国产一区二区三区| 久久久久成人黄色影片| 亚洲黄色性网站| 九九精品一区二区| 99天天综合性| 91在线丨porny丨国产| 欧美美女激情18p| 国产午夜精品久久| 一级女性全黄久久生活片免费| 日日摸夜夜添夜夜添国产精品| 亚洲午夜久久久久| 狠狠色2019综合网| 一本一道久久a久久精品综合蜜臀| 在线不卡免费欧美| 国产精品伦一区| 免费黄网站欧美| 色综合久久中文字幕| 精品欧美黑人一区二区三区| 亚洲天堂精品视频| 美女视频一区在线观看| 91免费视频网| 欧美精品一区二区在线播放| 亚洲精品高清在线观看| 国产精品99久久久久久久女警| 欧美日韩国产天堂| 国产精品毛片久久久久久久| 美日韩黄色大片| 91久久线看在观草草青青 | 欧美一a一片一级一片| 久久综合九色综合97婷婷女人| 一区二区国产视频| 国产精品99久久久久久似苏梦涵 | 久久久精品国产99久久精品芒果| 亚洲资源中文字幕| 粉嫩av一区二区三区在线播放| 制服丝袜激情欧洲亚洲| 亚洲三级小视频| 成人免费电影视频| 精品精品欲导航| 石原莉奈一区二区三区在线观看 | 欧美人与性动xxxx| 一区二区三区日韩在线观看| 成人夜色视频网站在线观看| 日韩欧美在线网站| 婷婷丁香激情综合| 欧美在线一二三| 亚洲欧美一区二区不卡| 波多野结衣亚洲一区| 久久久国际精品| 激情六月婷婷综合| www激情久久| 久久99精品久久久久婷婷| 欧美高清视频不卡网| 亚洲一区二区三区在线看| 成人的网站免费观看| 国产性做久久久久久| 激情综合一区二区三区| 欧美成人a∨高清免费观看| 日韩精品成人一区二区三区| 欧美日韩美少妇| 天天影视涩香欲综合网| 欧美顶级少妇做爰| 亚瑟在线精品视频| 国产黄色91视频| 久久久99免费| 成人自拍视频在线| 国产精品免费免费| 99久久久无码国产精品| 国产精品传媒在线| 精品一区二区在线观看| 欧美大白屁股肥臀xxxxxx| 麻豆精品久久久| 久久综合九色综合97婷婷女人 | 日韩美女天天操| 激情国产一区二区| 亚洲国产精品高清| 一本久久a久久免费精品不卡| 亚洲另类春色校园小说| 欧美日韩国产一级片| 免费三级欧美电影| 亚洲精品一区二区三区蜜桃下载| 国产露脸91国语对白| 中文字幕不卡的av| 在线免费一区三区| 日本不卡123| 久久久久久毛片| 99国产一区二区三精品乱码| 亚洲精品成人精品456| 欧美日韩午夜在线| 久草精品在线观看| 国产精品久久久久久户外露出 | 亚洲sss视频在线视频| 91精品国产手机| 黄色资源网久久资源365| 中文字幕亚洲在| 69堂亚洲精品首页| 国产精品亚洲一区二区三区在线| 亚洲女人的天堂| 777午夜精品视频在线播放| 国产一区二区女| 亚洲精品亚洲人成人网| 91精品国产综合久久精品图片| 国模娜娜一区二区三区| 亚洲日本在线天堂| 欧美一级一级性生活免费录像| 国产馆精品极品| 午夜日韩在线观看| 国产三级精品视频| 欧美视频一区二区三区在线观看 | 自拍偷拍国产精品| 3d动漫精品啪啪1区2区免费| 国产91丝袜在线播放| 亚洲成人动漫在线观看| 日本一区二区在线不卡| 欧美挠脚心视频网站| 国产成人av电影| 日韩成人伦理电影在线观看| 欧美一区二区三区在线看| 成人免费毛片高清视频| 美女一区二区三区在线观看| 日韩理论电影院| 精品成人一区二区三区| 欧美在线不卡一区| 成人一级黄色片|