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

📄 sys_cfg.c

📁 某个ARM9板子的实际bootloader 对裁剪
💻 C
字号:
/***************************************************************************** Copyright  Storlink Corp 2005.  All rights reserved.                *--------------------------------------------------------------------------* Name			: sys_cfg.c* Description	: *		Handle system configuration** History**	Date		Writer		Description*	-----------	-----------	-------------------------------------------------*	09/20/2005	Gary Chen	Create*****************************************************************************/#include <define.h>#include <board_config.h>#include <sys_vctl.h>#ifndef SYS_MAC_NUM#define SYS_MAC_NUM		1#endif#define SYS_MAC_MAX		2static unsigned char null_mac_addr[6] = {0x00,0x000,0x00,0x00,0x00,0x00};static unsigned char my_mac_addr[SYS_MAC_MAX][6] = 	{BOARD_DEFAULT_MAC0_ADDR, BOARD_DEFAULT_MAC1_ADDR};static UINT32 my_ip_addr;static UINT32 my_ip_netmask;static UINT32 my_ip_gateway;#ifdef LOAD_FROM_IDE	static char my_kernel_name[128];static char my_initrd_name[128];static UINT32 my_kernel_addr;static UINT32 my_initrd_addr;#endifextern void sys_get_vctl_mac(char *mac1, char *mac2);extern void sys_set_vctl_mac(char *mac1, char *mac2);extern void sys_get_vctl_ip(UINT32 *ipaddr, UINT32 *netmask, UINT32 *gateway);extern void sys_set_vctl_ip(UINT32 ipaddr, UINT32 netmask, UINT32 gateway);void sys_get_vctl_boot_file(UINT8 *f1_name, UINT32 *f1_addr, UINT8 *f2_name, UINT32 *f2_addr);void sys_set_vctl_boot_file(UINT8 *f1_name, UINT32 f1_addr, UINT8 *f2_name, UINT32 f2_addr);extern void gmac_set_mac_addr(unsigned char *mac1, unsigned char *mac2);extern UINT32 char2hex(UINT8 c);/*----------------------------------------------------------------------* sys_init_cfg*----------------------------------------------------------------------*/void sys_init_cfg(void){	int ipaddr[4] = BOARD_DEFAULT_IP_ADDR;	int netmask[4] = BOARD_DEFAULT_IP_NETMASK;	int gateway[4] = BOARD_DEFAULT_GATEWAY;	// default value	my_ip_addr = IPIV(ipaddr[0], ipaddr[1], ipaddr[2], ipaddr[3]);	my_ip_netmask = IPIV(netmask[0], netmask[1], netmask[2], netmask[3]);	my_ip_gateway = IPIV(gateway[0], gateway[1], gateway[2], gateway[3]);		// get configuration from flash 	sys_get_vctl_mac(&my_mac_addr[0][0], &my_mac_addr[1][0]);	sys_get_vctl_ip(&my_ip_addr, &my_ip_netmask, &my_ip_gateway);#ifdef LOAD_FROM_IDE		strcpy(my_kernel_name, KERNEL_FILENAME);	strcpy(my_initrd_name, INITRD_FILENAME);	my_kernel_addr = BOARD_DRAM_KERNEL_ADDR;	my_initrd_addr = BOARD_DRAM_RAM_DISK_ADDR;	sys_get_vctl_boot_file(my_kernel_name, &my_kernel_addr, my_initrd_name, &my_initrd_addr);#endif	}/*----------------------------------------------------------------------* sys_save_mac*----------------------------------------------------------------------*/void sys_save_mac(void){	sys_set_vctl_mac(&my_mac_addr[0][0], &my_mac_addr[1][0]);	}/*----------------------------------------------------------------------* sys_save_ip_cfg*----------------------------------------------------------------------*/void sys_save_ip_cfg(void){	sys_set_vctl_ip(my_ip_addr, my_ip_netmask, my_ip_gateway);}/*----------------------------------------------------------------------* sys_save_boot_file*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	void sys_save_boot_file(void){	sys_set_vctl_boot_file(my_kernel_name, my_kernel_addr, my_initrd_name, my_initrd_addr);}#endif/*----------------------------------------------------------------------* sys_get_mac_addr*	get mac address*----------------------------------------------------------------------*/char *sys_get_mac_addr(int index){	if (index >= 0 && index < SYS_MAC_NUM)		return (char *)&my_mac_addr[index][0];	else		return (char *)null_mac_addr;}/*----------------------------------------------------------------------* sys_set_mac_addr*	set mac address*----------------------------------------------------------------------*/void sys_set_mac_addr(int index, char *mac_addr){	if (index < 0 || index >= SYS_MAC_NUM)		return;		if ((mac_addr[0] & 1) || memcmp(mac_addr, null_mac_addr, 6) == 0)		return;		memcpy((char *)&my_mac_addr[index][0], mac_addr, 6);#ifdef MIDWAY	gmac_set_mac_addr(&my_mac_addr[0][0], &my_mac_addr[1][0]);#else	emac_set_mac_addr(&my_mac_addr[0][0], &my_mac_addr[1][0]);#endif}/*----------------------------------------------------------------------* sys_get_ip_addr*	get IP address*----------------------------------------------------------------------*/UINT32 sys_get_ip_addr(void){	return my_ip_addr;}/*----------------------------------------------------------------------* sys_set_ip_addr*	set IP address*----------------------------------------------------------------------*/void sys_set_ip_addr(UINT32 ipaddr){	if (ip_verify_addr(ipaddr) == 0)		my_ip_addr = ipaddr;	else		printf("Failed to change IP address due to illegal value\n");}/*----------------------------------------------------------------------* sys_get_ip_netmask*	get IP netmask*----------------------------------------------------------------------*/UINT32 sys_get_ip_netmask(void){	return my_ip_netmask;}/*----------------------------------------------------------------------* sys_set_ip_netmask*	set IP netmask*----------------------------------------------------------------------*/void sys_set_ip_netmask(UINT32 netmask){	if (ip_verify_netmask(netmask) == 0)		my_ip_netmask = netmask;	else		printf("Failed to change IP netmask due to illegal value\n");}/*----------------------------------------------------------------------* sys_get_ip_gateway*	get IP address*----------------------------------------------------------------------*/UINT32 sys_get_ip_gateway(void){	return my_ip_gateway;}/*----------------------------------------------------------------------* sys_set_ip_gateway*	set IP gateway*----------------------------------------------------------------------*/void sys_set_ip_gateway(UINT32 ipaddr){	if (ip_verify_addr(ipaddr) == 0)		my_ip_gateway = ipaddr;	else		printf("Failed to change IP Gateway due to illegal value\n");}/*----------------------------------------------------------------------* sys_show_mac_addr*----------------------------------------------------------------------*/void sys_show_mac_addr(void){	int i;	char *cp;		cp = (char *)& my_mac_addr[0][0];	for (i=0; i<SYS_MAC_NUM; i++)	{		printf("MAC %d Address: %02X:%02X:%02X:%02X:%02X:%02X\n",				i+1, *cp++, *cp++, *cp++, *cp++, *cp++, *cp++);	}}/*----------------------------------------------------------------------* sys_show_ip_addr*----------------------------------------------------------------------*/void sys_show_ip_addr(void){#if 0		printf("inet addr: %d.%d.%d.%d   Mask: %d.%d.%d.%d   Gateway: %d.%d.%d.%d\n",			IP1(my_ip_addr), IP2(my_ip_addr), IP3(my_ip_addr), IP4(my_ip_addr),			IP1(my_ip_netmask), IP2(my_ip_netmask), IP3(my_ip_netmask), IP4(my_ip_netmask),			IP1(my_ip_gateway), IP2(my_ip_gateway), IP3(my_ip_gateway), IP4(my_ip_gateway));#else	printf("inet addr: %d.%d.%d.%d/%d.%d.%d.%d\n",			IP1(my_ip_addr), IP2(my_ip_addr), IP3(my_ip_addr), IP4(my_ip_addr),			IP1(my_ip_netmask), IP2(my_ip_netmask), IP3(my_ip_netmask), IP4(my_ip_netmask));#endif			}/*----------------------------------------------------------------------* sys_set_kernel_name*	set Kernel file name*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	void sys_set_kernel_name(char *name, int write){	if (strcmp(name, my_kernel_name) != 0)	{		strcpy(my_kernel_name, name);		if (write) sys_save_boot_file();	}}#endif/*----------------------------------------------------------------------* sys_get_kernel_name*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	char *sys_get_kernel_name(void){	return my_kernel_name;}#endif/*----------------------------------------------------------------------* sys_set_kernel_addr*	set Kernel file addr*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	void sys_set_kernel_addr(unsigned long addr, int write){	if (addr != my_kernel_addr)	{		my_kernel_addr = addr;		if (write) sys_save_boot_file();	}}#endif/*----------------------------------------------------------------------* sys_get_kernel_addr*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	unsigned long sys_get_kernel_addr(void){	return my_kernel_addr;}#endif/*----------------------------------------------------------------------* sys_set_initrd_name*	set initrd file name*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	void sys_set_initrd_name(char *name, int write){	if (strcmp(name, my_initrd_name) != 0)	{		strcpy(my_initrd_name, name);		if (write) sys_save_boot_file();	}}#endif/*----------------------------------------------------------------------* sys_get_initrd_name*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	char *sys_get_initrd_name(void){	return my_initrd_name;}#endif/*----------------------------------------------------------------------* sys_set_initrd_addr*	set initrd file addr*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	void sys_set_initrd_addr(unsigned long addr, int write){	if (addr != my_initrd_addr)	{		my_initrd_addr = addr;		if (write) sys_save_boot_file();	}}#endif/*----------------------------------------------------------------------* sys_get_initrd_addr*----------------------------------------------------------------------*/#ifdef LOAD_FROM_IDE	unsigned long sys_get_initrd_addr(void){	return my_initrd_addr;}#endif/*----------------------------------------------------------------------* sys_show_sw_cfg*----------------------------------------------------------------------*/void sys_show_sw_cfg(void){	sys_show_mac_addr();	sys_show_ip_addr();#ifdef LOAD_FROM_IDE		printf("Kernel RAM Location: 0x%08X  Filename: %s\n", sys_get_kernel_addr(), sys_get_kernel_name());	printf("Initrd RAM Location: 0x%08X  Filename: %s\n", sys_get_initrd_addr(), sys_get_initrd_name());#endif}

⌨️ 快捷键说明

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