⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tftpput.c

📁 Compex BIOS for SAMSUNG S3C4510B v1.20-lt
💻 C
字号:
#include "tftpput.h"#include "bioscall.h"#include "console.h"#include "utils.h"#include "config.h"#include "board.h"#if 0#define TFTP_BUF_BASE	(BUF_ADDR | NOCACHE_BIT)#define TFTP_BUF_LIMIT	(TFTP_ADDR | NOCACHE_BIT)#endif#if 1#define TFTP_BUF_BASE	(BUF_ADDR)#define TFTP_BUF_LIMIT	(TFTP_ADDR)#endifextern unsigned long tftp_mode;extern unsigned long tftp_param;extern int tftp_break;extern int tftp_datalen;static unsigned char *buf;static int data_len;static int put_begin = 0;int tftp_put_begin(void){	put_begin = 1;		switch (tftp_mode) {	case BOOT_LOAD_IMAGE:	case BOOT_UPDATE_IMAGE:		printf("\r\nStarting the TFTP download...\r\n");		buf = (unsigned char *)TFTP_BUF_BASE;		data_len = 0;		break;	default:		put_begin = 0;		break;	}	return 0;}int tftp_put(unsigned char *data, int len){	static int count = 0;	if (!put_begin)		return -1;	if (count == 0)		printf(".");	count += len;	if (count >= 32 * 1024)		count = 0;	switch (tftp_mode) {	case BOOT_LOAD_IMAGE:	case BOOT_UPDATE_IMAGE:		if ((unsigned long)(buf + data_len + len) > TFTP_BUF_LIMIT) {			printf("\r\nTFTP buffer overflow, stop!\r\n");			tftp_break = 1;			return -1;		}		memcpy(buf + data_len, data, len);		data_len += len;		return 0;	default:		return 0;	}	return 0;}int update_image(struct partition_struct *partition, int size){	unsigned long offset, l;	if (size > partition->size) {		printf("\r\nPartition Size Too Small!\r\n");		return -1;	}	printf("Update Image to Disk .................... ");	offset = partition->offset;	bios_flash_erase(offset, size);	bios_flash_write(offset, size, &l, (unsigned char *)TFTP_BUF_BASE);	printf("Done\r\n");	if (offset == bios_bios_offset()) {		printf("\r\nBIOS Updated, rebooting...\r\n");		bios_reboot();	}	return 0;}int tftp_put_end(void){	if (!put_begin)		return -1;		printf("\r\n");	put_begin = 0;	tftp_break = 1;	switch (tftp_mode) {	case BOOT_LOAD_IMAGE:		tftp_datalen = data_len;		break;	case BOOT_UPDATE_IMAGE:		update_image((struct partition_struct *)tftp_param, data_len);		break;	default:		break;	}	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -