@Override
	public DataType toDataType() throws DuplicateNameException, IOException {
		Structure structure = new StructureDataType("boot_img_hdr_v0", 0);
		structure.add(UTF8, BootImageConstants.BOOT_MAGIC_SIZE, "magic", null);
		structure.add(DWORD, "kernel_size", null);
		structure.add(DWORD, "kernel_addr", null);
		structure.add(DWORD, "ramdisk_size", null);
		structure.add(DWORD, "ramdisk_addr", null);
		structure.add(DWORD, "second_size", null);
		structure.add(DWORD, "second_addr", null);
		structure.add(DWORD, "tags_addr", null);
		structure.add(DWORD, "page_size", null);
		structure.add(DWORD, "header_version", null);
		structure.add(DWORD, "os_version", BootImageUtil.getOSVersionString(os_version));
		structure.add(UTF8, BootImageConstants.BOOT_NAME_SIZE, "name", null);
		structure.add(UTF8, BootImageConstants.BOOT_ARGS_SIZE, "cmdline", null);
		ArrayDataType array =
			new ArrayDataType(DWORD, BootImageConstants.ID_SIZE, DWORD.getLength());
		structure.add(array, "id", null);
		structure.add(UTF8, BootImageConstants.BOOT_EXTRA_ARGS_SIZE, "extra_cmdline", null);
		return structure;
	}
Operating system version and security patch level.
For version "A.B.C" and patch level "Y-M-D":
(7 bits for each of A, B, C; 7 bits for (Y-2000), 4 bits for M)
os_version = A[31:25] B[24:18] C[17:11] (Y-2000)[10:4] M[3:0]
@return OS version
Ghidra/Features/FileFormats/src/main/java/ghidra/file/formats/android/bootimg/BootImageHeaderV0.java