README.commands 1.3 KB

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