X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/7e24905c2e22a136d5730c4d6f7ca39842952ad3..refs/tags/hexrel-6.7.1:/avr/command_tbl.c diff --git a/avr/command_tbl.c b/avr/command_tbl.c index 6e8a91b..944c1c4 100644 --- a/avr/command_tbl.c +++ b/avr/command_tbl.c @@ -1,37 +1,63 @@ +/* + * (C) Copyright 2014-2016 Leo C. + * + * SPDX-License-Identifier: GPL-2.0 + */ #include "common.h" - #include "command.h" #include "cmd_mem.h" - extern command_ret_t do_help(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_echo(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_sleep(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_env_print(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_env_default(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_env_set(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_env_save(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_loadf(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_loadcpm3(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_loadihex(cmd_tbl_t *, int, int, char * const []); +#if defined(CONFIG_CMD_LOADB) +extern command_ret_t do_load_serial_bin(cmd_tbl_t *, int, int, char * const []); +#endif extern command_ret_t do_go(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_restart(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_console(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_dump_mem(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_mem_mm_avr(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_mem_nm_avr(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_eep_cp(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_busreq_pulse(cmd_tbl_t *, int, int, char * const []); extern command_ret_t do_date(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_gpio(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_sd(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_fat_stat(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_fat_ls(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_fat_rw(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +extern command_ret_t do_source(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +extern command_ret_t do_attach(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); + +#ifdef CONFIG_SYS_LONGHELP +const FLASH char sd_help_text[] = + "bla \t- do bla\n" + ; +#endif /* CONFIG_SYS_LONGHELP */ cmd_tbl_t cmd_tbl[] = { CMD_TBL_ITEM( date, 2, 1, do_date, - "get/set/reset date & time", - "[MMDDhhmm[[CC]YY][.ss]]\ndate reset\n" + "get/set date & time", + "[MMDDhhmm[[CC]YY][.ss]]\n" " - without arguments: print date & time\n" " - with numeric argument: set the system date & time\n" - " - with 'reset' argument: reset the RTC" ), #ifdef DEBUG + CMD_TBL_ITEM( !mdr, 3, 1, do_dump_mem, "RAM dump", @@ -42,11 +68,26 @@ CMD_TBL_ITEM( "EEPROM dump", "address [count]" ), +CMD_TBL_ITEM( + !mdf, 3, 1, do_dump_mem, + "FLASH dump", + "address [count]" +), CMD_TBL_ITEM( !cpe, 4, 0, do_eep_cp, "EEPROM copy", "source target count" ), +CMD_TBL_ITEM( + !mm, 2, 1, do_mem_mm_avr, + "avr memory modify (auto-incrementing address)", + "address" +), +CMD_TBL_ITEM( + !nm, 2, 1, do_mem_nm_avr, + "avr memory modify (constant address)", + "address" +), #endif CMD_TBL_ITEM( mstep, 2, 1, do_busreq_pulse, @@ -56,9 +97,16 @@ CMD_TBL_ITEM( ), CMD_TBL_ITEM( echo, CONFIG_SYS_MAXARGS, 1, do_echo, - "echo args to console", - "[args..]\n" - " - echo args to console; \\c suppresses newline" + "display a line of text", + "[-n] [argument ...]\n" + "- echo the argument(s) to console.\n" + " -n do not output the trailing newline" +), +CMD_TBL_ITEM( + sleep , 2, 1, do_sleep, + "delay execution for some time", + "N[m][s]\n" + " - delay execution for decimal N (milli) seconds" ), CMD_TBL_ITEM_COMPLETE( run, CONFIG_SYS_MAXARGS, 1, do_run, @@ -67,6 +115,13 @@ CMD_TBL_ITEM_COMPLETE( " - run the commands in the environment variable(s) 'var'", var_complete ), +CMD_TBL_ITEM_COMPLETE( + source, CONFIG_SYS_MAXARGS, 1, do_source, + "run commands from a file", + "filename\n" + " - run the commands in the script file 'filename'", + var_complete +), CMD_TBL_ITEM_COMPLETE( printenv, CONFIG_SYS_MAXARGS, 1, do_env_print, "print environment variables", @@ -101,6 +156,45 @@ CMD_TBL_ITEM( "load srec_cat prepared image from controller flash", "" ), +CMD_TBL_ITEM( + loadcpm3, 3, 0, do_loadcpm3, + "load CPM3.SYS file", + "[filename [common-base [banked-base]]] \n" + " - Load CP/M 3 system file from FAT filesystem. This command makes\n" + " CPMLDR superfluous. Uses the following environment variables if set:\n" + " '"ENV_CPM3_SYSFILE"' File to load. Default is '"CONFIG_CPM3_SYSFILE"'.\n" + " '"ENV_CPM3_BANKED_BASE"' Default is '"CONFIG_CPM3_BANKED_BASE_STR"'.\n" + " Sets the following environment variables after loading:\n" + " '"ENV_CPM3_COMMON_BASE"'\n" + " '"ENV_STARTADDRESS"'" +), +CMD_TBL_ITEM( + loadi, 2, 0, do_loadihex, + "load intel hex file over serial line", + "[[-]offset]\n" + " - load Intel-Hex-Record file over serial line with offset 'offset'" +), + +#if defined(CONFIG_CMD_LOADB) +CMD_TBL_ITEM( + loadb, 1, 0, do_load_serial_bin, + "load binary file over serial line (kermit mode)", + " - load binary file over serial line" +), + +CMD_TBL_ITEM( + loadx, 1, 0, do_load_serial_bin, + "load binary file over serial line (xmodem mode)", + " - load binary file over serial line" +), + +CMD_TBL_ITEM( + loady, 1, 0, do_load_serial_bin, + "load binary file over serial line (ymodem mode)", + " - load binary file over serial line" +), +#endif /* CONFIG_CMD_LOADB */ + CMD_TBL_ITEM( go, 2, 0, do_go, "start application at address 'addr'", @@ -115,10 +209,37 @@ CMD_TBL_ITEM( "" ), CMD_TBL_ITEM( - restart, 1, 0, do_restart, + restart, 1, 1, do_restart, "Perform RESET of the CPU", "" ), +CMD_TBL_ITEM( + connect, 1, 0, do_console, + "Connect to CPU console i/o", + "\n" + " - type the escape character followed by Q to close the connection, \n" + " or followed by ? to see other options. The default escape character \n" + " is Ctrl-^ (0x1E). It can be changed by setting env var '"ENV_ESC_CHAR"'." + +), + +CMD_TBL_ITEM( + pin, CONFIG_SYS_MAXARGS, 1, do_gpio, + "Set or query pin state", + "[-s] []\n" + " - print cofiguration and state or frequency of pins\n" + " print all pins, if argument is omitted\n" + "pin h[igh]|l[ow]\n" + " - config pins as output and set to level high or low\n" + "pin ts|i[n]|p[ullup]\n" + " - config pins as input/tristate or input with pullup\n" + "pin value[K|M][Hz]\n" + " - output a clock on pins\n" + " value is system clock divider or frequency, if 'Hz' is appended\n" + " divider is rounded down to next possible value (depends on pin)\n" + "\n" + " is a comma separated list of numbers or ranges, i.e. \"0,9,3-6\"\n" +), CMD_TBL_ITEM( md, 3, 1, do_mem_md, @@ -136,9 +257,12 @@ CMD_TBL_ITEM( "address" ), CMD_TBL_ITEM( - mw, 4, 1, do_mem_mw, + mw, CONFIG_SYS_MAXARGS, 1, do_mem_mw, "memory write (fill)", - "address value [count]" + "[-bwl] address value [count]\n" + " -b write value as byte (8 bit, default)\n" + " -w write value as word (16 bit)\n" + " -l write value as long (32 bit)\n" ), CMD_TBL_ITEM( cp, 4, 1, do_mem_cp, @@ -151,7 +275,7 @@ CMD_TBL_ITEM( "addr1 addr2 count" ), CMD_TBL_ITEM( - base, 2, 1, do_mem_base, + base, 2, 0, do_mem_base, "print or set address offset", "\n" " - print address offset for memory commands\n" @@ -159,23 +283,21 @@ CMD_TBL_ITEM( " - set address offset for memory commands to 'offset'" ), CMD_TBL_ITEM( - loop, 3, 1, do_mem_loop, + mloop, 3, 1, do_mem_loop, "infinite loop on address range", "address number_of_bytes" ), -#ifdef CONFIG_LOOPW CMD_TBL_ITEM( - loopw, 4, 1, do_mem_loopw, + mloopw, 4, 1, do_mem_loopw, "infinite write loop on address range", "address number_of_bytes data_to_write" ), -#endif /* CONFIG_LOOPW */ #ifdef CONFIG_CMD_MEMTEST CMD_TBL_ITEM( - mtest, 5, 1, do_mem_mtest, + mtest, 4, 1, do_mem_mtest, "simple RAM read/write test", - "[start [end [pattern [iterations]]]]" + "[start [end [iterations]]]" ), #endif /* CONFIG_CMD_MEMTEST */ @@ -186,12 +308,64 @@ CMD_TBL_ITEM( "address count delay(ms)" ), CMD_TBL_ITEM( - mwc, 4, 1, do_mem_mwc, + mwc, 4, 1, do_mem_mdc, "memory write cyclic", "address value delay(ms)" ), #endif /* CONFIG_MX_CYCLIC */ +CMD_TBL_ITEM( + sd, CONFIG_SYS_MAXARGS, 1, do_sd, + "SD/MMC card handling commands", + " args ...\n" + "sd help\n" + " - print help on subcommands" +), + +CMD_TBL_ITEM( + fatstat, 2, 1, do_fat_stat, + "Show logical drive status", + "dev" +), +CMD_TBL_ITEM( + fatls, 2, 1, do_fat_ls, + "Directory listing", + "path" +), +CMD_TBL_ITEM( + fatload, 5, 0, do_fat_rw, + "load binary file from a dos filesystem", + " [bytes [pos]]\n" + " - Load binary file 'path/filename' on logical drive 'd'\n" + " to address 'addr' from dos filesystem.\n" + " 'pos' gives the file position to start loading from.\n" + " If 'pos' is omitted, 0 is used. 'pos' requires 'bytes'.\n" + " 'bytes' gives the size to load. If 'bytes' is 0 or omitted,\n" + " the load stops on end of file." +), +CMD_TBL_ITEM( + fatwrite, 4, 0, do_fat_rw, + "write file into a dos filesystem", + " \n" + " - Write file to 'path/filename' on logical drive 'd' from RAM\n" + " starting at address 'addr'.\n" +), +CMD_TBL_ITEM( + attach, CONFIG_SYS_MAXARGS, 1, do_attach, + "attach filesystem image file to CP/M drive", + "[options] [dsk ]\n" + " - attach drive number to diskfile \n" + "attach -d dsk\n" + " - detach drive\n" + "attach\n" + " - without arguments, list current assignments" +), +CMD_TBL_ITEM( + detach, 2, 1, do_attach, + "detach file from CP/M drive", + "dsk]\n" + " - same as attach -d dsk" +), CMD_TBL_ITEM( help, CONFIG_SYS_MAXARGS, 1, do_help,