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

📄 setup.c

📁 Intel PXA270的bootloader程序,在linux环境下运行的.
💻 C
字号:
#include <stdio.h>#include <string.h>#include <command.h>#include <network.h>#include <board.h>#include <setup.h>#define assert(fmt, args...)	//printf(fmt, ##args)#define STATUS_ID			0x5166a1c0extern unsigned long loader_size;extern unsigned long setup_size;# define setup_storeat		((void *)((ulong)setup & 0x000FFFFF))static struct setup_t __bsetup _setup = {	.sid        = 0x58fd5dfd,	.size       = (uint32)&loader_size,	.myipaddr   = 0x0100a8c0,	.destipaddr = 0x3200a8c0,	.myhaddr    = {0x00,0x05,0xb4,0x6d,0x15,0xfd},	.autoboot   = AUTOBOOT,	.kernelname     = KERNEL,	.fsname   = FILESYSTEM,	.delay     = DELAYTIME,};struct setup_t *setup = &_setup;static bool do_config(int argc, char **argv);static void config_usage(void);static void view_setup(void);extern void init_map(void);struct command_t cmd_config = {	.name  = "set",	.run   = do_config,	.usage = config_usage};bool config_init(void){	init_map();	return true;}static void config_usage(void){	usage_format("set", "");	usage_format("set name value", "");	return;}static bool do_config(int argc, char **argv){	if (argc == 1){		view_setup();		return true;	} else if (argc == 3){		if (!strcmp(argv[1], "myipaddr")){			setup->myipaddr = inet_addr(argv[2]);		} else if (!strcmp(argv[1], "destipaddr")){			setup->destipaddr = inet_addr(argv[2]);		} else if (!strcmp(argv[1], "myhaddr")){			void *mac = mac_aton(argv[2]);			if (!mac) goto invalid;			memcpy(setup->myhaddr, mac, 6);			net_set_haddr(setup->myhaddr);		} else if (!strcmp(argv[1], "autoboot")){			strcpy(setup->autoboot, argv[2]);		} else if (!strcmp(argv[1], "kernelname")){			strcpy(setup->kernelname, argv[2]);		} else if (!strcmp(argv[1], "fsname")){			strcpy(setup->fsname, argv[2]);		} else if (!strcmp(argv[1], "delay")){			setup->delay = delay_aton(argv[2]);		} else goto invalid;	} else goto invalid;	save_setup();	return true;invalid :	config_usage();	return false;}static void view_setup(void){	printf(" %-10s : %s\n", "myipaddr", inet_ntoa(setup->myipaddr));	printf(" %-10s : %s\n", "destipaddr", inet_ntoa(setup->destipaddr));	printf(" %-10s : %s\n", "myhaddr", mac_ntoa(setup->myhaddr));	printf(" %-10s : %s\n", "autoboot", setup->autoboot);	printf(" %-10s : %s\n", "kernelname", setup->kernelname);	printf(" %-10s : %s\n", "fsname", setup->fsname);	printf(" %-10s : %d\n", "delay", setup->delay);	return;}extern int flash_write(void *dest, const void *src, uint cnt);extern void save_setup(void){	struct setup_t *s;	s = setup_storeat;	if (s->sid == setup->sid){		flash_write(s, setup, (int)&setup_size);	} else {		assert(" failed : invalid setup id. reboot and try again.\n");		return;	}	return;}

⌨️ 快捷键说明

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