/* 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; }