Как мне загрузить VxWorks по 64-битному адресу с помощью UBOOT? - PullRequest
0 голосов
/ 04 мая 2020

Я не уверен, возможно ли загрузить и загрузить VxWorks с 64-битного адреса. Когда я пытаюсь, чтобы адрес загрузки и входа был усечен до последних 32 бит. Просматривая исходный код u-boot, файл image.h показывает, что адреса входа и загрузки являются 32-битными полями.

Мне интересно, возможно ли даже загрузить VxWorks на 64-битный адрес ...

-image.h in uboot source code-
typedef struct image_header {
      uint32_t    ih_magic;   /* Image Header Magic Number  */
      uint32_t    ih_hcrc;    /* Image Header CRC Checksum  */
      uint32_t    ih_time;    /* Image Creation Timestamp   */
      uint32_t    ih_size;    /* Image Data Size            */
      uint32_t    ih_load;    /* Data     Load  Address          */
      uint32_t    ih_ep;            /* Entry Point Address        */
      uint32_t    ih_dcrc;    /* Image Data CRC Checksum    */
      uint8_t           ih_os;            /* Operating System           */
      uint8_t           ih_arch;    /* CPU architecture           */
      uint8_t           ih_type;    /* Image Type                 */
      uint8_t           ih_comp;    /* Compression Type           */
      uint8_t           ih_name[IH_NMLEN];      /* Image Name           */
} image_header_t;

-output from WorkBench when trying to build with a 64 bit load address. See how only the least significant 32 bits are placed into the address-

[@localhost default]$ mkimage -V
mkimage version 2019.04

[@localhost default]$ mkimage -O vxworks -T kernel -C none -n vxworks -A arm64 -a 1000000301000000 -e 1000000301000000 -d vxWorks.bin uVxWorks
Image Name:   vxworks
Created:      Thu Apr 30 07:50:05 2020
Image Type:   AArch64 VxWorks Kernel Image (uncompressed)
Data Size:    4338480 Bytes = 4236.80 KiB = 4.14 MiB
Load Address: 01000000
Entry Point:  01000000
...