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

📄 setup.c

📁 ARM开发用的启动代码
💻 C
字号:
#include "board.h"#include "console.h"#include "utils.h"#include "bios.h"int main_menu(void){	int list[] = {		SETUP_ROM,		SETUP_DRAM,		SETUP_BOOT_MODE,		SETUP_ETH		};	int select;	int ch;	printf("Setup Menu\r\n\r\n");	printf("1 - ROM Setup\r\n");	printf("2 - DRAM Setup\r\n");	printf("3 - Boot Mode Setup\r\n");	printf("4 - Eth Setup\r\n");	printf("\r\n");	printf("Please Select ");	select = get_select('1', '4');	printf("\r\n\r\n");	return select;}int update_system_table(struct system_table_struct *system_table){	unsigned long offset, size, l;	offset = bios_system_table_offset();	size = bios_system_table_size();	printf("Update System Paramters ............. ");	bios_flash_erase(offset, size);	bios_flash_write(offset, size, &l, system_table);	printf("Done\r\n\r\n");	return 0;
}int setup_rom(void){	struct system_table_struct system_table;	int bank, i;	printf("ROM Setup\r\n\r\n");	bios_system_table(&system_table);	for (i = 0; i < 6; i++) {		printf("ROM Bank %01d : %08x %08x %08x\r\n", i + 1,			system_table.rom_table[i].size,			system_table.rom_table[i].width,			system_table.rom_table[i].flags);	}	printf("\r\n");	printf("Please Select ROM Bank (1 - 6) ");	bank = get_select('1', '6');	printf("\r\n\r\n");	if (bank < 0)		return 0;	printf("ROM Size (%08x)  : ", system_table.rom_table[bank].size);	system_table.rom_table[bank].size = getul(system_table.rom_table[bank].size);	printf("\r\n");	printf("ROM Width (%08x) : ", system_table.rom_table[bank].width);	system_table.rom_table[bank].width = getul(system_table.rom_table[bank].width);	printf("\r\n");	printf("ROM Flags (%08x) : ", system_table.rom_table[bank].flags);	system_table.rom_table[bank].flags = getul(system_table.rom_table[bank].flags);	printf("\r\n\r\n");	update_system_table(&system_table);	printf("\r\n");	return 0;}int setup_dram(void){	struct system_table_struct system_table;	int bank, i;	printf("DRAM Setup\r\n\r\n");	bios_system_table(&system_table);	for (i = 0; i < 4; i++) {		printf("DRAM Bank %01d : %08x %08x %08x\r\n", i + 1,			system_table.dram_table[i].size,			system_table.dram_table[i].width,			system_table.dram_table[i].flags);	}	printf("\r\n");	printf("Please Select DRAM Bank (1 - 4) ");	bank = get_select('1', '4');	printf("\r\n\r\n");	if (bank < 0)		return 0;	printf("DRAM Size (%08x)  : ", system_table.dram_table[bank].size);	system_table.dram_table[bank].size = getul(system_table.dram_table[bank].size);	printf("\r\n");	printf("DRAM Width (%08x) : ", system_table.dram_table[bank].width);	system_table.dram_table[bank].width = getul(system_table.dram_table[bank].width);	printf("\r\n");	printf("DRAM Flags (%08x) : ", system_table.dram_table[bank].flags);	system_table.dram_table[bank].flags = getul(system_table.dram_table[bank].flags);	printf("\r\n\r\n");	update_system_table(&system_table);	printf("\r\n");	return 0;}int setup_boot_mode(void){	struct system_table_struct system_table;	int list[] = {		BOOT_LOAD_FIRMWARE,		BOOT_LOAD_PROGRAM,		BOOT_UPDATE_FIRMWARE,		BOOT_MENU	};	int select;	printf("Boot Mode Setup\r\n\r\n");	bios_system_table(&system_table);	printf("1 - Load Firmware\r\n");	printf("2 - Load Program (HEX)\r\n");	printf("3 - Update Firmware\r\n");	printf("4 - Boot Menu\r\n");	printf("\r\n");	printf("Please Select ");	select = get_select('1', '4');	printf("\r\n\r\n");	if (select < 0)		return 0;	system_table.startup_mode = list[select];	update_system_table(&system_table);	printf("\r\n");	return 0;}int eth_menu(void){	int select;	printf("Eth Address Setup\r\n\r\n");	printf("1 - Display MAC Address\r\n");	printf("2 - Set MAC Address\r\n");	printf("\r\n");	printf("Please Select ");	select = get_select('1', '2');	printf("\r\n\r\n");	return select;}int setup_eth_address(void){	struct system_table_struct system_table;	int select, i;	while (1) {		select = eth_menu();		if (select < 0) {			break;		}		bios_system_table(&system_table);		if (select == 0) {			printf("MAC Address : ");			for (i = 0; i < 6; i++) {				printf("%02x ", system_table.eth.address[i]);			}			printf("\r\n\r\n");		} else {			for (i = 0; i < 6; i++) {				printf("Address %01x (%02x) : ", i, system_table.eth.address[i]);				system_table.eth.address[i] = getul(system_table.eth.address[i]);				printf("\r\n");			}			printf("\r\n");			update_system_table(&system_table);			}	}	return 0;}int setup(void){	int select;	while (1) {		select = main_menu();		if (select < 0) {			break;		}		switch (select) {		case SETUP_ROM:			setup_rom();			break;		case SETUP_DRAM:			setup_dram();			break;		case SETUP_BOOT_MODE:			setup_boot_mode();			break;		case SETUP_ETH:			setup_eth_address();			break;		default:			break;		}	}	return 0;}

⌨️ 快捷键说明

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