?? setup.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 = 0x5cb6df58, .size = (uint32)&loader_size, .myipaddr = 0x0100a8c0, .destipaddr = 0x3200a8c0, .myhaddr = {0x00,0x0e,0x2a,0xb7,0x3d,0x58}, .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 + -