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

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

?? xmodem.c

?? s3c2440 bootloader 源碼
?? C
字號:
/* * vivi/deriver/serialxmodem.c: *     - an implementation of the xmodem protocol from the spec. * * Based on bootldr/xmodem.c (C) 2000 Compaq Computer Coporation. * * Copyright (C) 2001 MIZI Research, Inc. * * * 1999-01-xx: Edwin Foo <efoo@crl.dec.com> *    - Initial code * * 2001-10-04: Janghoon Lyu <nandy@mizi.com> *    - Modified a little bit. * * 2002-07-04: Janghoon Lyu <nandy@mizi.com> */#include "config.h"#include "machine.h"#include "serial.h"#include "priv_data.h"#include <types.h>/* XMODEM parameters */#define BLOCK_SIZE	128	/* size of transmit blocks */#define RETRIES		20	/* maximum number of RETRIES *//* Line control codes */#define SOH		0x01	/* start of header */#define ACK		0x06	/* Acknowledge */#define NAK		0x15	/* Negative acknowledge */#define CAN		0x18	/* Cancel */#define EOT		0x04	/* end of text */#define GET_BYTE_TIMEOUT 10000000/* global error variable */char *xmodem_errtxt = NULL;int get_byte_err = 0;__u8 volatile rbuffer[BLOCK_SIZE];/* prototypes of helper functions */int get_record(void);__u8 get_byte(void);enum{	SAC_SEND_NAK = 0,	SAC_SENT_NAK = 1,	SAC_PAST_START_NAK = 2};static volatile int seen_a_char = SAC_SEND_NAK;static int one_nak = 0;static unsigned long xmodem_timeout = GET_BYTE_TIMEOUT;char debugbuf[4096];int db_idx = 0;void bufputs(char *s){	size_t len = strlen(s) + 1;	if (len + db_idx > sizeof(debugbuf))		len = sizeof(debugbuf) - db_idx;	if (len) {		memcpy(&debugbuf[db_idx], s, len);		db_idx += len;	}}void reset_debugbuf(void){	memset(debugbuf, 0x2a, sizeof(debugbuf));	db_idx = 0;}__u32 xmodem_receive(char *dldaddr, size_t len){	char ochr;	int r = 0, rx_block_num = 0, error_count = 0;	__u32 foffset = 0;	int i;	int ret;	xmodem_errtxt = NULL;	seen_a_char = 0;	one_nak = get_param_value("xmodem_one_nak", &ret);	if (ret) one_nak = 0;	xmodem_timeout = get_param_value("xmodem_initial_timeout", &ret);	if (ret) xmodem_timeout = GET_BYTE_TIMEOUT;	rx_block_num = 1;	error_count = RETRIES;	do {		if ((r = get_record()) == (rx_block_num & 255)) {			error_count = RETRIES;			for (i = 0; i <BLOCK_SIZE; i++)				*(__u8 *)(dldaddr+foffset+i) = rbuffer[i];			xmodem_errtxt = "RX PACKET";			rx_block_num++;			ochr = ACK;			foffset += BLOCK_SIZE;		} else {			switch (r) {			case -1: /* TIMEOUT */				xmodem_errtxt = "TIMEOUT";				ochr = NAK;				break;			case -2: /* Bad block */				xmodem_errtxt = "BAD BLOCK#";				/* eat teh rest of the block */				get_byte_err = 0;				while (get_byte_err != -1) get_byte();				ochr = NAK;				break;			case -3: /* Bad checksum */				xmodem_errtxt = "BAD CHKSUM";				ochr = NAK;				break;			case -4: /* End of file */				xmodem_errtxt = "DONE";				ochr = ACK;				break;			case -5: /* Cancel */				xmodem_errtxt = "ABORTED";				ochr = ACK;				break;			default: /* Block out of sequence */				xmodem_errtxt = "WRONG BLK";				ochr = NAK;			}			error_count--;		}		putc(ochr);	} while ((r > -3) && error_count);	if ((!error_count) || (r != -4)) {		foffset = 0;	/* indicate failure to caller */		/*printk("x-modem error: %s\n", xmodem_errtxt); */	}	return foffset;}/* * Read a record in the XMODEM protocol, return the block number * (0-255) if successful, or one of the following return codes: * 	-1 = Bad byte * 	-2 = Bad block number * 	-3 = Bad block checksum * 	-4 = End of file * 	-5 = Canceled by remote */int get_record(void){	int c, block_num = 0;	int i;	__u32 check_sum;	/* clear the buffer */	for (i = 0; i < BLOCK_SIZE; i++)		rbuffer[i] = 0x00;	check_sum = 0;	i = -2;	c = get_byte();	if (get_byte_err)		return -1;	switch (c) {	case SOH:	/* Receive packet */		for (;;) {			c = get_byte();			if (get_byte_err)				return -1;			switch (i) {			case -2: 				block_num = c;				break;			case -1:#if 0#ifdef CHECK_NEGATED_SECTNUM				if (c != (-block_num -1))					return -2;#endif#endif				break;			case BLOCK_SIZE:				if ((check_sum & 0xff) != c)					return -3;				else					return block_num;				break;			default:				rbuffer[i] = c;				check_sum += c;			}			i++;		}	case EOT:	/* end of file encountered */		return -4;	case CAN:	/* cancel protocol */		return -5;	default:		return -5;	}}/* get_byte should use one of the timer's for a CPU clock independent timeout */__u8 get_byte(){	int c, ret;again:	c = 0;	get_byte_err = 0; /* reset errno */	c = awaitkey(xmodem_timeout, &get_byte_err);	if (get_byte_err) {		if (seen_a_char == SAC_SEND_NAK || !one_nak) {			bufputs("timeout nak");			putc(NAK);	/* make the sender go */		}		if (seen_a_char < SAC_PAST_START_NAK) {			bufputs("goto again");			seen_a_char = SAC_SENT_NAK;			xmodem_timeout = get_param_value("xmodem_timeout", &ret);			if (ret) xmodem_timeout = GET_BYTE_TIMEOUT;			goto again;		}	}	if (get_byte_err == 0)		seen_a_char = SAC_PAST_START_NAK;	return (c);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影一二三区| 欧美精品xxxxbbbb| 欧美色偷偷大香| 国产色综合久久| 日日夜夜精品视频天天综合网| 国产a视频精品免费观看| 欧美日韩一区视频| 亚洲丝袜自拍清纯另类| 经典三级一区二区| 欧美区视频在线观看| 中文字幕一区二区三区在线播放| 蜜桃视频一区二区| 欧美专区日韩专区| 日韩美女精品在线| 国产成人av一区二区三区在线 | 麻豆91精品91久久久的内涵| k8久久久一区二区三区| 精品福利一区二区三区 | 国产乱码精品一品二品| 337p亚洲精品色噜噜噜| 艳妇臀荡乳欲伦亚洲一区| 国产精品18久久久久久久久久久久| 欧美日韩黄色影视| 亚洲成人免费看| 欧美日韩精品一区二区三区蜜桃 | 石原莉奈一区二区三区在线观看| 色94色欧美sute亚洲线路二| 1024成人网| av动漫一区二区| 中文字幕免费观看一区| 国产成人99久久亚洲综合精品| 精品久久国产老人久久综合| 奇米影视7777精品一区二区| 6080午夜不卡| 蜜桃视频一区二区| 精品人在线二区三区| 久久精品国产77777蜜臀| 日韩午夜三级在线| 精品一区二区三区蜜桃| 欧美精品一区二区三区视频 | 日本麻豆一区二区三区视频| 欧美久久一二三四区| 同产精品九九九| 日韩精品中午字幕| 国产原创一区二区三区| 中文字幕乱码亚洲精品一区| 播五月开心婷婷综合| 亚洲日本va在线观看| 欧美亚洲高清一区| 青青草原综合久久大伊人精品| 欧美疯狂性受xxxxx喷水图片| 青娱乐精品视频| 久久精品亚洲乱码伦伦中文| av在线播放一区二区三区| 亚洲人成网站影音先锋播放| 欧美在线观看视频一区二区| 视频一区视频二区中文字幕| 精品国产一区二区精华| 成人综合婷婷国产精品久久免费| 中文字幕日韩av资源站| 欧美日韩国产成人在线91| 激情综合五月婷婷| 综合av第一页| 555夜色666亚洲国产免| 国产精品白丝jk黑袜喷水| 亚洲欧洲中文日韩久久av乱码| 欧美最新大片在线看 | 色婷婷久久99综合精品jk白丝| 亚洲成人一区在线| 久久免费精品国产久精品久久久久| 懂色中文一区二区在线播放| 亚洲一二三四区| 久久久噜噜噜久噜久久综合| 欧美日韩一级黄| 国产乱子伦视频一区二区三区| 亚洲在线观看免费| 久久精品人人做人人爽人人| 欧美亚洲高清一区二区三区不卡| 国产精一品亚洲二区在线视频| 亚洲一线二线三线久久久| 欧美精品一区二区三区蜜桃| 一本一道久久a久久精品| 久久国产精品99久久久久久老狼 | 亚洲欧美在线高清| 日韩女优av电影| 欧美日韩在线播放一区| 成人免费毛片高清视频| 日韩电影一区二区三区四区| 亚洲免费视频中文字幕| 久久精品日韩一区二区三区| 制服丝袜中文字幕一区| 色婷婷综合久久| av在线播放成人| 欧美一区二区日韩| 色综合色狠狠综合色| 精品理论电影在线观看| 欧美色窝79yyyycom| 91麻豆免费看片| 成人精品亚洲人成在线| 激情综合网av| 日韩电影免费在线看| 一区二区三区电影在线播| 中文字幕成人av| 久久久久久99久久久精品网站| 91精品国产综合久久蜜臀| 欧美性色综合网| 欧美在线色视频| 欧美网站大全在线观看| 色综合亚洲欧洲| 91免费国产在线| 91亚洲男人天堂| 91麻豆国产香蕉久久精品| www.欧美亚洲| av激情亚洲男人天堂| 91视频精品在这里| 9i看片成人免费高清| a级精品国产片在线观看| av亚洲精华国产精华| 99久久免费精品高清特色大片| 成人丝袜高跟foot| 成人av在线一区二区三区| 成人av网站在线| 91高清视频在线| 欧美精品一卡两卡| 日韩欧美一区二区视频| 久久亚洲一区二区三区四区| 国产亚洲福利社区一区| 中文字幕乱码久久午夜不卡 | 色偷偷久久一区二区三区| 91视频在线观看免费| 欧美亚洲高清一区| 欧美一区二区在线免费观看| www激情久久| 国产精品色噜噜| 亚洲一区二区欧美| 免费在线成人网| 国产福利91精品| 91官网在线观看| 日韩一区二区麻豆国产| 国产亚洲人成网站| 亚洲裸体xxx| 男人的j进女人的j一区| 国产精品18久久久久久久久久久久| 99在线精品视频| 777奇米成人网| 国产欧美精品国产国产专区| 亚洲综合一二三区| 日本不卡视频在线| 99久久国产综合精品女不卡| 4hu四虎永久在线影院成人| 国产亚洲一二三区| 亚洲国产精品一区二区久久| 看电视剧不卡顿的网站| 成人黄色软件下载| 日韩一区二区在线观看视频播放 | 久久亚区不卡日本| 亚洲精品视频自拍| 精品综合免费视频观看| 91老师国产黑色丝袜在线| 精品欧美乱码久久久久久| 亚洲欧美综合色| 精品一区二区免费看| 色吊一区二区三区| 久久综合色8888| 五月综合激情婷婷六月色窝| 成+人+亚洲+综合天堂| 日韩一区二区三区视频在线| 中文字幕中文字幕在线一区| 久久精品国产成人一区二区三区 | 免费人成在线不卡| 一本一本久久a久久精品综合麻豆| 久久综合久久99| 日韩福利视频导航| 91国产免费看| 中文字幕日韩精品一区| 精品一区二区三区的国产在线播放 | 国产一区二区免费视频| 欧美午夜精品久久久| 国产精品少妇自拍| 国模大尺度一区二区三区| 欧美午夜一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 国产乱国产乱300精品| 日韩欧美区一区二| 婷婷开心久久网| 日本黄色一区二区| 亚洲欧美日韩久久精品| av影院午夜一区| 国产精品欧美经典| 国产传媒久久文化传媒| 精品成人一区二区| 久久国产精品一区二区| 欧美一区二区成人6969| 日本成人在线网站| 91麻豆精品国产91久久久更新时间 | 在线不卡一区二区| 亚洲在线观看免费| 欧美手机在线视频| 天天射综合影视| 制服.丝袜.亚洲.另类.中文|