From 32f507ce5f66dd9c89a45854688f46bde33c5e3d Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 10 Nov 2010 09:20:50 +0100 Subject: Initial import of nios2sim (http://nios2sim.googlecode.com/svn/trunk/ r16) --- main.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 main.c (limited to 'main.c') diff --git a/main.c b/main.c new file mode 100644 index 0000000..40fc250 --- /dev/null +++ b/main.c @@ -0,0 +1,123 @@ +/* + Nios-sim - one simple NIOSII simulator only for personal interest and fun. + Copyright (C) 2010 chysun2000@gmail.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include +#include +#include +#include +#include +#include "public.h" + +static void print_help(void) +{ + printf("\n----------------------------------------------\n"); + printf(" HELP INFORMATION of NIOS2 Simulator\n"); + printf("----------------------------------------------\n"); + printf(" --image|-i image path name\n"); + printf(" --srec|-s image format is SREC\n"); + printf(" --mem_size|-m memory size of board\n"); + printf(" --debug_mode|-d enter debug mode\n"); + printf(" --base_addr|-b base address of memory\n"); + printf(" --sys_map|-p load symbol table\n"); + printf(" --cmdline|-c set kernel command line\n"); + printf(" --initrd|-r set the address of initrd\n"); + printf(" --fs_image|-f set the file system image\n"); + printf(" --version|-v print the version information\n"); + printf("----------------------------------------------\n"); + printf(" For Example:\n"); + printf(" nios-sim -s -i [srec file] -m [memsize] -d [set to debug mode] \n"); + printf(" -b [base addr of mem] -p [symbol file]\n"); + printf(" -c [kernel command line]\n"); + printf("----------------------------------------------\n"); +} + +static const char * version = "Simulator for NIOSII(None-MMU) Version 0.1\n Copyright@chysun2000@gmail.com\n"; +static void print_version(void) +{ + printf("\n---------------------------------------------\n"); + printf("%s", version); + printf("---------------------------------------------\n"); +} + +int main(int argc, char * argv[]) +{ + struct option long_opt [] = { + {"image",required_argument,NULL,'i'}, + {"srec",no_argument, NULL, 's'}, + {"mem_size",required_argument, NULL, 'm'}, + {"debug_mode",no_argument, NULL, 'd'}, + {"base_addr", required_argument, NULL, 'b'}, + {"sys_map", required_argument, NULL, 'p'}, + {"cmdline", required_argument, NULL, 'c'}, + {"initrd", required_argument, NULL, 'r'}, + {"fs_image",required_argument, NULL, 'f'}, + {"version", no_argument, NULL, 'v'}, + {"help", no_argument, NULL, 'h'}, + {0,0,0,0} + }; + + char * short_opt = "i:sm:db:p:c:vhr:f:"; + int32_t c = 0; + + while((c = getopt_long(argc, argv, short_opt, long_opt, NULL)) != -1){ + switch(c){ + case 'i': + set_image_pathname(optarg); + break; + case 's': + set_image_format(SREC_FMT); + break; + case 'm': + set_image_memsize(optarg); + break; + case 'd': + set_debug_mode(get_nios_cpu()); + break; + case 'b': + set_image_base_addr(optarg); + break; + case 'p': + load_symbol_file(optarg); + break; + case 'c': + set_cmdline(optarg); + break; + case 'r': + set_initrd(optarg); + break; + case 'f': + set_fs_image(optarg); + break; + case 'v': + print_version(); + return 0; + case 'h': + print_help(); + return 0; + default: + break; + } + } + + alloc_image_mem(); + load_image(); + print_image_info(); + simulating(); + return 0; +} -- cgit v1.2.3-54-g00ecf