1 2Commands are added to U-Boot by creating a new command structure. 3This is done by first including command.h, then using the U_BOOT_CMD() macro 4to fill in a cmd_tbl_t struct. 5 6U_BOOT_CMD(name,maxargs,repeatable,command,"usage","help") 7 8name: is the name of the commad. THIS IS NOT a string. 9maxargs: the maximum number of arguments this function takes 10repeatable: either 0 or 1 to indicate if autorepeat is allowed 11command: Function pointer (*cmd)(struct cmd_tbl_s *, int, int, char *[]); 12usage: Short description. This is a string 13help: Long description. This is a string 14 15 16**** Behind the scene ****** 17 18The structure created is named with a special prefix and placed by 19the linker in a special section using the linker lists mechanism 20(see include/linker_lists.h) 21 22This makes it possible for the final link to extract all commands 23compiled into any object code and construct a static array so the 24command array can be iterated over using the linker lists macros. 25 26The linker lists feature ensures that the linker does not discard 27these symbols when linking full U-Boot even though they are not 28referenced in the source code as such. 29 30If a new board is defined do not forget to define the command section 31by writing in u-boot.lds ($(srctree)/board/boardname/u-boot.lds) these 323 lines: 33 34 .u_boot_list : { 35 KEEP(*(SORT(.u_boot_list*))); 36 } 37