diff options
Diffstat (limited to 'avr/command_tbl.c')
-rw-r--r-- | avr/command_tbl.c | 402 |
1 files changed, 402 insertions, 0 deletions
diff --git a/avr/command_tbl.c b/avr/command_tbl.c new file mode 100644 index 0000000..5a63e76 --- /dev/null +++ b/avr/command_tbl.c @@ -0,0 +1,402 @@ +/* + * (C) Copyright 2014-2016, 2018 Leo C. <erbl259-lmu@yahoo.de> + * + * SPDX-License-Identifier: GPL-2.0 + */ + +#include "common.h" +#include "command.h" +#include "cmd_mem.h" +#include "cmd_boot.h" +#include "cmd_cpu.h" +#include "cmd_misc.h" +#include "cmd_date.h" +#include "cmd_run.h" +#include "cmd_loadcpm3.h" +#include "cmd_loadihex.h" +#include "cmd_gpio.h" +#include "cmd_sd.h" +#include "cmd_fat.h" +#include "cmd_attach.h" +#include "env.h" +#include "debug.h" + + +cmd_tbl_t cmd_tbl[] = { + +CMD_TBL_ITEM_TOP( + xx, CONFIG_SYS_MAXARGS, 0, do_cpu, + "experimental commands", + "<subcommand> args ...\n" + "xx help\n", + cmd_tbl_cpu +), + + +CMD_TBL_ITEM( + time, CONFIG_SYS_MAXARGS, 0, do_time, + "run command and print execution time", + "command [args...]\n" +), +CMD_TBL_ITEM( + date, 2, 1, do_date, + "get/set date & time", + "[MMDDhhmm[[CC]YY][.ss]]\n" + " - without arguments: print date & time\n" + " - with numeric argument: set the system date & time\n" +), + +#ifdef DEBUG + +CMD_TBL_ITEM( + !mdr, 3, CTBL_DBG|CTBL_RPT, do_dump_mem, + "RAM dump", + "address [count]" +), +CMD_TBL_ITEM( + !mde, 3, CTBL_DBG|CTBL_RPT, do_dump_mem, + "EEPROM dump", + "address [count]" +), +CMD_TBL_ITEM( + !mdf, 3, CTBL_DBG|CTBL_RPT, do_dump_mem, + "FLASH dump", + "address [count]" +), +CMD_TBL_ITEM( + !cpe, 4, CTBL_DBG, do_eep_cp, + "EEPROM copy", + "source target count" +), +CMD_TBL_ITEM( + !mm, 2, CTBL_DBG|CTBL_RPT, do_mem_mm_avr, + "avr memory modify (auto-incrementing address)", + "address" +), +CMD_TBL_ITEM( + !nm, 2, CTBL_DBG|CTBL_RPT, do_mem_nm_avr, + "avr memory modify (constant address)", + "address" +), +CMD_TBL_ITEM( + !prfree, 1, CTBL_DBG|CTBL_RPT, do_pr_free_avr, + "print avr heap free list", + "" +), +CMD_TBL_ITEM( + !prheap, 1, CTBL_DBG, do_pr_heap_avr, + "dump avr heap", + "" +), +#endif +CMD_TBL_ITEM( + msize, 1, 1, do_mem_size, + "Detect memory size", + "" +), +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, + "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 hexadecimal N (milli) seconds" +), +CMD_TBL_ITEM_COMPLETE( + run, CONFIG_SYS_MAXARGS, 1, do_run, + "run commands in an environment variable", + "var [...]\n" + " - run the commands in the environment variable(s) 'var'", + var_complete +), +CMD_TBL_ITEM( + boot, 1, 1, do_bootd, + "boot default, i.e., run 'bootcmd'", + "" +), +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_TOP( + env, CONFIG_SYS_MAXARGS, 0, do_env, + "environment handling commands", + "", + cmd_tbl_env +), + +CMD_TBL_ITEM( + loadf, 1, 0, do_loadf, + "load srec_cat prepared image from controller flash", + "" +), +CMD_TBL_ITEM( + bootcf, CONFIG_SYS_MAXARGS, 0, do_bootcf, + "boot from cf card", + "[options]\n" + " Load a number of sectors from the first CP/M partition and jump to\n" + " the load address.\n" + " -a ADDRESS\n" + " Load and start address (default 100 hex)\n" + " -s NUM\n" + " First sector of partition to load (0..255, default 0)\n" + " -c NUM\n" + " Number of sectors to load (1..127, default 7)\n" + " -i NUM\n" + " Partition type to look for (default 52 hex)\n" + " -n\n" + " Load only, do not execute\n" + " -t NUM\n" + " Timeout for IDE commands (1..65535, default 10000)\n" + " -v verbose\n" + " TODO: be verbose" +), +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, CONFIG_SYS_MAXARGS, 0, do_go, + "start application at address 'addr'", + "[-h] addr\n" + " - start application at address 'addr'" +), +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", + "\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] [<pins>]\n" + " - print cofiguration and state or frequency of pins\n" + " print all pins, if argument is omitted\n" + "pin <pins> h[igh]|l[ow]\n" + " - config pins as output and set to level high or low\n" + "pin <pins> ts|i[n]|p[ullup]\n" + " - config pins as input/tristate or input with pullup\n" + "pin <pins> 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" + "<pins> is a comma separated list of numbers or ranges, i.e. \"0,9,3-6\"\n" +), + +CMD_TBL_ITEM( + md, 3, CTBL_RPT, do_mem_md, + "memory display", + "address [# of objects]" +), +CMD_TBL_ITEM( + mm, 2, CTBL_RPT, do_mem_mm, + "memory modify (auto-incrementing address)", + "address" +), +CMD_TBL_ITEM( + nm, 2, CTBL_RPT, do_mem_nm, + "memory modify (constant address)", + "address" +), +CMD_TBL_ITEM( + mw, CONFIG_SYS_MAXARGS, CTBL_RPT, do_mem_mw, + "memory write (fill)", + "[-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)" +), +CMD_TBL_ITEM( + mcp, 4, CTBL_RPT, do_mem_cp, + "memory copy", + "source target count" +), +CMD_TBL_ITEM( + mcmp, 4, CTBL_RPT, 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, CTBL_RPT, do_mem_loop, + "infinite loop on address range", + "address number_of_bytes" +), +CMD_TBL_ITEM( + mloopw, 4, CTBL_RPT, 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, CTBL_RPT, do_mem_mtest, + "simple RAM read/write test", + "[start [end [iterations]]]" +), +#endif /* CONFIG_CMD_MEMTEST */ + +#ifdef CONFIG_MX_CYCLIC +CMD_TBL_ITEM( + mdc, 4, CTBL_RPT, do_mem_mdc, + "memory display cyclic", + "address count delay(ms)" +), +CMD_TBL_ITEM( + mwc, CONFIG_SYS_MAXARGS, CTBL_RPT, do_mem_mdc, + "memory write cyclic", + "[-bwl] address value delay(ms)\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)" +), +#endif /* CONFIG_MX_CYCLIC */ + +CMD_TBL_ITEM_TOP( + sd, CONFIG_SYS_MAXARGS, 0, do_sd, + "SD/MMC card handling commands", + "<subcommand> args ...\n" + "sd help\n" + " - print help on subcommands", + cmd_tbl_sd +), +CMD_TBL_ITEM_TOP( + fat, CONFIG_SYS_MAXARGS, 0, do_fat, + "fat filesystem commands", + "<subcommand> args ...\n" + "fat help\n" + " - print help on subcommands", + cmd_tbl_fat +), + +CMD_TBL_ITEM( + attach, CONFIG_SYS_MAXARGS, CTBL_RPT, do_attach, + "attach filesystem image file to CP/M drive", + "[-rw] [-o options] dsk<n> diskfile\n" + " Attach diskfile to dsk<n>, where n in 0.."CONFIG_CPM_MAX_DRNR_STR"\n" + " -r File is read only (write protected)\n" + " -w File is read/write (default)\n" + " -o options\n" + " Options is a comma-separated list of\n" + " ro, rw, debug, nodebug\n" + "\n" + "attach [-rw] -o reattach[,other options] dsk<n>\n" + " Change options for dsk<n>.\n" + " Options as above.\n" + "\n" + "attach -d -a|dsk<n>\n" + "detach -a|dsk<n>\n" + " Detach diskfile from dsk<n>.\n" + " -a Detach all.\n" + "\n" + "attach\n" + " Without arguments, list current assignments" +), +CMD_TBL_ITEM( + detach, 2, 0, do_attach, + "detach file from CP/M drive", + "dsk<n>]\n" + " - alias for 'attach -d dsk<n>'" +), + +CMD_TBL_ITEM( + help, CONFIG_SYS_MAXARGS, 0, do_help, + "print command description/usage", + "[-a]\n" + " print brief description of all commands\n" + " -a print description of subcommands too\n" + "help -fk keyword ...\n" + " print brief description of commands matching keyword\n" + " -f search keyword in command name\n" + " -k search keyword in command name and description\n" + "help [-a] command ...\n" + " print detailed usage of 'command'" +), + +/* 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 + FSTR(""), +#endif /* CONFIG_SYS_LONGHELP */ + NULL, +#ifdef CONFIG_AUTO_COMPLETE + NULL, +#endif +}, +/* Mark end of table */ +CMD_TBL_END(cmd_tbl) +}; |