blob: 923418b1a455a4dc610c4efd4c5f59b5d5da6263 [file] [log] [blame]
wdenkf287a242003-07-01 21:06:45 +00001
2Commands are added to U-Boot by creating a new command structure.
Peter Meerwaldd2f9bcf2012-02-08 05:31:52 +00003This is done by first including command.h, then using the U_BOOT_CMD() macro
4to fill in a cmd_tbl_t struct.
wdenkf287a242003-07-01 21:06:45 +00005
6U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help")
7
8name: is the name of the commad. THIS IS NOT a string.
Peter Meerwaldd2f9bcf2012-02-08 05:31:52 +00009maxargs: the maximum number of arguments this function takes
10repeatable: either 0 or 1 to indicate if autorepeat is allowed
wdenkf287a242003-07-01 21:06:45 +000011command: Function pointer (*cmd)(struct cmd_tbl_s *, int, int, char *[]);
12usage: Short description. This is a string
Peter Meerwaldd2f9bcf2012-02-08 05:31:52 +000013help: Long description. This is a string
wdenkf287a242003-07-01 21:06:45 +000014
15
Peter Meerwaldd2f9bcf2012-02-08 05:31:52 +000016**** Behind the scene ******
wdenkf287a242003-07-01 21:06:45 +000017
Marek Vasut69c5e342012-10-12 10:27:04 +000018The structure created is named with a special prefix (__u_boot_list_cmd_)
wdenkf287a242003-07-01 21:06:45 +000019and placed by the linker in a special section.
20
21This makes it possible for the final link to extract all commands
22compiled into any object code and construct a static array so the
Marek Vasut69c5e342012-10-12 10:27:04 +000023command can be found in an array starting at _u_boot_list_cmd__start.
wdenkf287a242003-07-01 21:06:45 +000024
Tom Rinia50f8062012-09-20 06:02:43 +000025To ensure that the linker does not discard these symbols when linking
26full U-Boot we generate a list of all the commands we have built (based
27on the sections mentioned above) and use that to force the linker to
28first enter the symbol as undefined in the output object so that there
29is then a need for the symbol to be kept (this is the UNDEF_SYM logic in
30the Makefile).
31
wdenkf287a242003-07-01 21:06:45 +000032If a new board is defined do not forget to define the command section
33by writing in u-boot.lds ($(TOPDIR)/board/boardname/u-boot.lds) these
343 lines:
35
Marek Vasut69c5e342012-10-12 10:27:04 +000036 .u_boot_list : {
37 #include "u-boot.lst";
38 }