2018-05-10 13:57:27 +00:00
|
|
|
Command definition
|
|
|
|
------------------
|
2003-07-01 21:06:45 +00:00
|
|
|
|
|
|
|
Commands are added to U-Boot by creating a new command structure.
|
2018-05-10 13:57:27 +00:00
|
|
|
This is done by first including command.h, then using the U_BOOT_CMD() or the
|
|
|
|
U_BOOT_CMD_COMPLETE macro to fill in a cmd_tbl_t struct.
|
2003-07-01 21:06:45 +00:00
|
|
|
|
2018-05-10 13:57:27 +00:00
|
|
|
U_BOOT_CMD(name, maxargs, repeatable, command, "usage", "help")
|
|
|
|
U_BOOT_CMD_COMPLETE(name, maxargs, repeatable, command, "usage, "help", comp)
|
2003-07-01 21:06:45 +00:00
|
|
|
|
2018-05-10 13:57:27 +00:00
|
|
|
name: The name of the command. THIS IS NOT a string.
|
2003-07-01 21:06:45 +00:00
|
|
|
|
2018-05-10 13:57:27 +00:00
|
|
|
maxargs: The maximum number of arguments this function takes including
|
|
|
|
the command itself.
|
2003-07-01 21:06:45 +00:00
|
|
|
|
2018-05-10 13:57:27 +00:00
|
|
|
repeatable: Either 0 or 1 to indicate if autorepeat is allowed.
|
|
|
|
|
|
|
|
command: Pointer to the command function. This is the function that is
|
|
|
|
called when the command is issued.
|
|
|
|
|
|
|
|
usage: Short description. This is a string.
|
|
|
|
|
|
|
|
help: Long description. This is a string. The long description is
|
|
|
|
only available if CONFIG_SYS_LONGHELP is defined.
|
|
|
|
|
|
|
|
comp: Pointer to the completion function. May be NULL.
|
|
|
|
This function is called if the user hits the TAB key while
|
|
|
|
entering the command arguments to complete the entry. Command
|
|
|
|
completion is only available if CONFIG_AUTO_COMPLETE is defined.
|
|
|
|
|
|
|
|
Command function
|
|
|
|
----------------
|
|
|
|
|
|
|
|
The commmand function pointer has to be of type
|
|
|
|
int (*cmd)(struct cmd_tbl_s *cmdtp, int flag, int argc, const char *argv[]);
|
|
|
|
|
|
|
|
cmdtp: Table entry describing the command (see above).
|
|
|
|
|
|
|
|
flag: A bitmap which may contain the following bit:
|
|
|
|
CMD_FLAG_REPEAT - The last command is repeated.
|
|
|
|
CMD_FLAG_BOOTD - The command is called by the bootd command.
|
|
|
|
CMD_FLAG_ENV - The command is called by the run command.
|
|
|
|
|
|
|
|
argc: Number of arguments including the command.
|
|
|
|
|
|
|
|
argv: Arguments.
|
|
|
|
|
|
|
|
Allowable return value are:
|
|
|
|
|
|
|
|
CMD_SUCCESS The command was successfully executed.
|
|
|
|
|
|
|
|
CMD_FAILURE The command failed.
|
|
|
|
|
|
|
|
CMD_RET_USAGE The command was called with invalid parameters. This value
|
|
|
|
leads to the display of the usage string.
|
|
|
|
|
|
|
|
Completion function
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
The completion function pointer has to be of type
|
|
|
|
int (*complete)(int argc, char *const argv[], char last_char,
|
|
|
|
int maxv, char *cmdv[]);
|
|
|
|
|
|
|
|
argc: Number of arguments including the command.
|
|
|
|
|
|
|
|
argv: Arguments.
|
|
|
|
|
|
|
|
last_char: The last character in the command line buffer.
|
|
|
|
|
|
|
|
maxv: Maximum number of possible completions that may be returned by
|
|
|
|
the function.
|
|
|
|
|
|
|
|
cmdv: Used to return possible values for the last argument. The last
|
|
|
|
possible completion must be followed by NULL.
|
|
|
|
|
|
|
|
The function returns the number of possible completions (without the terminating
|
|
|
|
NULL value).
|
|
|
|
|
|
|
|
Behind the scene
|
|
|
|
----------------
|
2003-07-01 21:06:45 +00:00
|
|
|
|
2013-02-25 00:59:00 +00:00
|
|
|
The structure created is named with a special prefix and placed by
|
|
|
|
the linker in a special section using the linker lists mechanism
|
|
|
|
(see include/linker_lists.h)
|
2003-07-01 21:06:45 +00:00
|
|
|
|
|
|
|
This makes it possible for the final link to extract all commands
|
|
|
|
compiled into any object code and construct a static array so the
|
2013-02-25 00:59:00 +00:00
|
|
|
command array can be iterated over using the linker lists macros.
|
2003-07-01 21:06:45 +00:00
|
|
|
|
2013-02-25 00:59:00 +00:00
|
|
|
The linker lists feature ensures that the linker does not discard
|
|
|
|
these symbols when linking full U-Boot even though they are not
|
|
|
|
referenced in the source code as such.
|
2012-09-20 06:02:43 +00:00
|
|
|
|
2003-07-01 21:06:45 +00:00
|
|
|
If a new board is defined do not forget to define the command section
|
2014-03-11 02:05:19 +00:00
|
|
|
by writing in u-boot.lds ($(srctree)/board/boardname/u-boot.lds) these
|
2003-07-01 21:06:45 +00:00
|
|
|
3 lines:
|
|
|
|
|
2012-10-12 10:27:04 +00:00
|
|
|
.u_boot_list : {
|
2013-02-25 00:59:00 +00:00
|
|
|
KEEP(*(SORT(.u_boot_list*)));
|
2012-10-12 10:27:04 +00:00
|
|
|
}
|