summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c123
1 files changed, 123 insertions, 0 deletions
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 <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <string.h>
+#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;
+}