X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/d684c21619905153eff68c43927207248925f6c2..e4c4b148ced1347935dff6200380e90cb3bfcde3:/avr/command_tbl.c diff --git a/avr/command_tbl.c b/avr/command_tbl.c index c0579bc..238f132 100644 --- a/avr/command_tbl.c +++ b/avr/command_tbl.c @@ -1,24 +1,91 @@ +/* + * (C) Copyright 2014 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 []); +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_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_read(cmd_tbl_t *, int, int, char * const []); +//extern command_ret_t do_fat_write(cmd_tbl_t *, int, int, char * const []); +extern command_ret_t do_fat_rw(cmd_tbl_t *, int, int, char * const []); - -extern int do_help(cmd_tbl_t *, int, int, char * const []); -extern int do_echo(cmd_tbl_t *, int, int, char * const []); -extern int do_env_print(cmd_tbl_t *, int, int, char * const []); -extern int do_env_set(cmd_tbl_t *, int, int, char * const []); +#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 date & time", + "[MMDDhhmm[[CC]YY][.ss]]\ndate reset\n" + " - without arguments: print date & time\n" + " - with numeric argument: set the system date & time\n" +), + +#ifdef DEBUG + +CMD_TBL_ITEM( + !mdr, 3, 1, do_dump_mem, + "RAM dump", + "address [count]" +), +CMD_TBL_ITEM( + !mde, 3, 1, do_dump_mem, + "EEPROM dump", + "address [count]" +), +CMD_TBL_ITEM( + !cpe, 4, 0, do_eep_cp, + "EEPROM copy", + "source target count" +), +#endif +CMD_TBL_ITEM( + mstep, 2, 1, do_busreq_pulse, + "execute one M cycle", + "[count]\n" + " - repeat count times" +), CMD_TBL_ITEM( echo, CONFIG_SYS_MAXARGS, 1, do_echo, "echo args to console", "[args..]\n" " - echo args to console; \\c suppresses 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, "run commands in an environment variable", @@ -29,7 +96,8 @@ CMD_TBL_ITEM_COMPLETE( CMD_TBL_ITEM_COMPLETE( printenv, CONFIG_SYS_MAXARGS, 1, do_env_print, "print environment variables", - "\n - print [all] values of all environment variables\n" + "\n" + " - print values of all environment variables\n" "printenv name ...\n" " - print value of environment variable 'name'", var_complete @@ -37,12 +105,192 @@ CMD_TBL_ITEM_COMPLETE( CMD_TBL_ITEM_COMPLETE( setenv, CONFIG_SYS_MAXARGS, 0, do_env_set, "set environment variables", - "[-f] name value ...\n" - " - [forcibly] set environment variable 'name' to 'value ...'\n" - "setenv [-f] name\n" - " - [forcibly] delete environment variable 'name'", + "name value ...\n" + " - set environment variable 'name' to 'value ...'\n" + "setenv name\n" + " - delete environment variable 'name'", var_complete ), +CMD_TBL_ITEM( + saveenv, 1, 0, do_env_save, + "save environment variables to persistent storage", + "" +), +CMD_TBL_ITEM( + defaultenv, 1, 0, do_env_default, + "set all environment variables to their default values", + "" +), + +CMD_TBL_ITEM( + loadf, 1, 0, do_loadf, + "load srec_cat prepared image from controller flash", + "" +), +CMD_TBL_ITEM( + loadcpm3, 3, 0, do_loadcpm3, + "load CPM3.SYS file", + "[offset] [filename]\n" + " - Load CP/M 3 system file from FAT filesystem. This command makes\n" + " CPMLDR superfluous. Default filename is '"CONFIG_PATH_CPM3SYS"', but\n" + " uses environment variable '"ENV_PATH_CPM3SYS"', if set." +), +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'" +), +CMD_TBL_ITEM( + go, 2, 0, do_go, + "start application at address 'addr'", + "addr\n" + " - start application at address 'addr'" +// "\n" +// " passing 'arg' as arguments" +), +CMD_TBL_ITEM( + reset, 1, 0, do_reset, + "Keep CPU in RESET state", + "" +), +CMD_TBL_ITEM( + restart, 1, 1, do_restart, + "Perform RESET of the CPU", + "" +), +CMD_TBL_ITEM( + connect, 1, 0, do_console, + "Connect to CPU console i/o", + "" +), + +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, + "memory display", + "address [# of objects]" +), +CMD_TBL_ITEM( + mm, 2, 1, do_mem_mm, + "memory modify (auto-incrementing address)", + "address" +), +CMD_TBL_ITEM( + nm, 2, 1, do_mem_nm, + "memory modify (constant address)", + "address" +), +CMD_TBL_ITEM( + mw, 4, 1, do_mem_mw, + "memory write (fill)", + "address value [count]" +), +CMD_TBL_ITEM( + cp, 4, 1, do_mem_cp, + "memory copy", + "source target count" +), +CMD_TBL_ITEM( + cmp, 4, 1, do_mem_cmp, + "memory compare", + "addr1 addr2 count" +), +CMD_TBL_ITEM( + base, 2, 0, do_mem_base, + "print or set address offset", + "\n" + " - print address offset for memory commands\n" + "base offset\n" + " - set address offset for memory commands to 'offset'" +), +CMD_TBL_ITEM( + mloop, 3, 1, do_mem_loop, + "infinite loop on address range", + "address number_of_bytes" +), +CMD_TBL_ITEM( + mloopw, 4, 1, do_mem_loopw, + "infinite write loop on address range", + "address number_of_bytes data_to_write" +), + +#ifdef CONFIG_CMD_MEMTEST +CMD_TBL_ITEM( + mtest, 4, 1, do_mem_mtest, + "simple RAM read/write test", + "[start [end [iterations]]]" +), +#endif /* CONFIG_CMD_MEMTEST */ + +#ifdef CONFIG_MX_CYCLIC +CMD_TBL_ITEM( + mdc, 4, 1, do_mem_mdc, + "memory display cyclic", + "address count delay(ms)" +), +CMD_TBL_ITEM( + 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'. 'bytes' gives the size to load.\n" + " If 'bytes' is 0 or omitted, the load stops on end of file." +), + CMD_TBL_ITEM( help, CONFIG_SYS_MAXARGS, 1, do_help, "print command description/usage", @@ -52,7 +300,7 @@ CMD_TBL_ITEM( " - print detailed usage of 'command'" ), -/* This does not use the U_BOOT_CMD macro as ? can't be used in symbol names */ +/* This does not use the CMD_TBL_ITEM macro as ? can't be used in symbol names */ {FSTR("?"), CONFIG_SYS_MAXARGS, 1, do_help, FSTR("alias for 'help'"), #ifdef CONFIG_SYS_LONGHELP @@ -65,12 +313,3 @@ CMD_TBL_ITEM( /* Mark end of table */ { 0 }, }; - - - - - - - - -