Я не уверен, возможно ли загрузить и загрузить 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