README.vxworks 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #
  2. # Copyright (C) 2013, Miao Yan <miao.yan@windriver.com>
  3. # Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
  4. #
  5. # SPDX-License-Identifier: GPL-2.0+
  6. #
  7. VxWorks Support
  8. ===============
  9. This document describes the information about U-Boot loading VxWorks kernel.
  10. Status
  11. ------
  12. U-Boot supports loading VxWorks kernels via 'bootvx' and 'bootm' commands.
  13. For booting old kernels (6.9.x) on PowerPC and ARM, and all kernel versions
  14. on other architectures, 'bootvx' shall be used. For booting VxWorks 7 kernels
  15. on PowerPC and ARM, 'bootm' shall be used.
  16. 64-bit x86 kernel cannot be loaded as of today.
  17. VxWork 7 on PowerPC and ARM
  18. ---------------------------
  19. From VxWorks 7, VxWorks starts adopting device tree as its hardware decription
  20. mechansim (for PowerPC and ARM), thus requiring boot interface changes.
  21. This section will describe the new interface.
  22. For PowerPC, the calling convention of the new VxWorks entry point conforms to
  23. the ePAPR standard, which is shown below (see ePAPR for more details):
  24. void (*kernel_entry)(fdt_addr, 0, 0, EPAPR_MAGIC, boot_IMA, 0, 0)
  25. For ARM, the calling convention is show below:
  26. void (*kernel_entry)(void *fdt_addr)
  27. When booting new VxWorks kernel (uImage format), the parameters passed to bootm
  28. is like below:
  29. bootm <kernel image address> - <device tree address>
  30. VxWorks bootline
  31. ----------------
  32. When using 'bootvx', the kernel bootline must be prepared by U-Boot at a
  33. board-specific address before loading VxWorks. U-Boot supplies its address
  34. via "bootaddr" environment variable. To check where the bootline should be
  35. for a specific board, go to the VxWorks BSP for that board, and look for a
  36. parameter called BOOT_LINE_ADRS. Assign its value to "bootaddr". A typical
  37. value for "bootaddr" is 0x101200.
  38. If a "bootargs" variable is defined, its content will be copied to the memory
  39. location pointed by "bootaddr" as the kernel bootline. If "bootargs" is not
  40. there, command 'bootvx' can construct a valid bootline using the following
  41. environments variables: bootdev, bootfile, ipaddr, netmask, serverip,
  42. gatewayip, hostname, othbootargs.
  43. When using 'bootm', just define "bootargs" in the environment and U-Boot will
  44. handle bootline fix up for the kernel dtb automatically.
  45. Serial console
  46. --------------
  47. It's very common that VxWorks BSPs configure a different baud rate for the
  48. serial console from what is being used by U-Boot. For example, VxWorks tends
  49. to use 9600 as the default baud rate on all x86 BSPs while U-Boot uses 115200.
  50. Please configure both U-Boot and VxWorks to use the same baud rate, or it may
  51. look like VxWorks hangs somewhere as nothing outputs on the serial console.
  52. x86-specific information
  53. ------------------------
  54. Before loading an x86 kernel, two additional environment variables need to be
  55. provided. They are "e820data" and "e820info", which represent the address of
  56. E820 table and E820 information (defined by VxWorks) in system memory.
  57. Check VxWorks kernel configuration to look for BIOS_E820_DATA_START and
  58. BIOS_E820_INFO_START, and assign their values to "e820data" and "e820info"
  59. accordingly. If neither of these two are supplied, U-Boot assumes a default
  60. location at 0x4000 for "e820data" and 0x4a00 for "e820info". Typical values
  61. for "e820data" and "e820info" are 0x104000 and 0x104a00. But there is one
  62. exception on Intel Galileo, where "e820data" and "e820info" should be left
  63. unset, which assume the default location for VxWorks.
  64. Note since currently U-Boot does not support ACPI yet, VxWorks kernel must
  65. be configured to use MP table and virtual wire interrupt mode. This requires
  66. INCLUDE_MPTABLE_BOOT_OP and INCLUDE_VIRTUAL_WIRE_MODE to be included in a
  67. VxWorks kernel configuration.