Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 159 lines (147 sloc) 6.062 kb
68396ea Robert Mustacchi Initial commit of d32e8d0b8d9e0ef7cf7ab2e74548982972789dfc from qemu-kvm
rmustacc authored
1 /*
2 * (C) Copyright 2000-2005
3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4 *
5 * See file CREDITS for list of people who contributed to this
6 * project.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as
10 * published by the Free Software Foundation; either version 2 of
11 * the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, see <http://www.gnu.org/licenses/>.
20 *
21 ********************************************************************
22 * NOTE: This header file defines an interface to U-Boot. Including
23 * this (unmodified) header file in another file is considered normal
24 * use of U-Boot, and does *not* fall under the heading of "derived
25 * work".
26 ********************************************************************
27 */
28
29 #ifndef __UBOOT_IMAGE_H__
30 #define __UBOOT_IMAGE_H__
31
32 /*
33 * Operating System Codes
34 */
35 #define IH_OS_INVALID 0 /* Invalid OS */
36 #define IH_OS_OPENBSD 1 /* OpenBSD */
37 #define IH_OS_NETBSD 2 /* NetBSD */
38 #define IH_OS_FREEBSD 3 /* FreeBSD */
39 #define IH_OS_4_4BSD 4 /* 4.4BSD */
40 #define IH_OS_LINUX 5 /* Linux */
41 #define IH_OS_SVR4 6 /* SVR4 */
42 #define IH_OS_ESIX 7 /* Esix */
43 #define IH_OS_SOLARIS 8 /* Solaris */
44 #define IH_OS_IRIX 9 /* Irix */
45 #define IH_OS_SCO 10 /* SCO */
46 #define IH_OS_DELL 11 /* Dell */
47 #define IH_OS_NCR 12 /* NCR */
48 #define IH_OS_LYNXOS 13 /* LynxOS */
49 #define IH_OS_VXWORKS 14 /* VxWorks */
50 #define IH_OS_PSOS 15 /* pSOS */
51 #define IH_OS_QNX 16 /* QNX */
52 #define IH_OS_U_BOOT 17 /* Firmware */
53 #define IH_OS_RTEMS 18 /* RTEMS */
54 #define IH_OS_ARTOS 19 /* ARTOS */
55 #define IH_OS_UNITY 20 /* Unity OS */
56
57 /*
58 * CPU Architecture Codes (supported by Linux)
59 */
60 #define IH_CPU_INVALID 0 /* Invalid CPU */
61 #define IH_CPU_ALPHA 1 /* Alpha */
62 #define IH_CPU_ARM 2 /* ARM */
63 #define IH_CPU_I386 3 /* Intel x86 */
64 #define IH_CPU_IA64 4 /* IA64 */
65 #define IH_CPU_MIPS 5 /* MIPS */
66 #define IH_CPU_MIPS64 6 /* MIPS 64 Bit */
67 #define IH_CPU_PPC 7 /* PowerPC */
68 #define IH_CPU_S390 8 /* IBM S390 */
69 #define IH_CPU_SH 9 /* SuperH */
70 #define IH_CPU_SPARC 10 /* Sparc */
71 #define IH_CPU_SPARC64 11 /* Sparc 64 Bit */
72 #define IH_CPU_M68K 12 /* M68K */
73 #define IH_CPU_NIOS 13 /* Nios-32 */
74 #define IH_CPU_MICROBLAZE 14 /* MicroBlaze */
75 #define IH_CPU_NIOS2 15 /* Nios-II */
76 #define IH_CPU_BLACKFIN 16 /* Blackfin */
77 #define IH_CPU_AVR32 17 /* AVR32 */
78
79 /*
80 * Image Types
81 *
82 * "Standalone Programs" are directly runnable in the environment
83 * provided by U-Boot; it is expected that (if they behave
84 * well) you can continue to work in U-Boot after return from
85 * the Standalone Program.
86 * "OS Kernel Images" are usually images of some Embedded OS which
87 * will take over control completely. Usually these programs
88 * will install their own set of exception handlers, device
89 * drivers, set up the MMU, etc. - this means, that you cannot
90 * expect to re-enter U-Boot except by resetting the CPU.
91 * "RAMDisk Images" are more or less just data blocks, and their
92 * parameters (address, size) are passed to an OS kernel that is
93 * being started.
94 * "Multi-File Images" contain several images, typically an OS
95 * (Linux) kernel image and one or more data images like
96 * RAMDisks. This construct is useful for instance when you want
97 * to boot over the network using BOOTP etc., where the boot
98 * server provides just a single image file, but you want to get
99 * for instance an OS kernel and a RAMDisk image.
100 *
101 * "Multi-File Images" start with a list of image sizes, each
102 * image size (in bytes) specified by an "uint32_t" in network
103 * byte order. This list is terminated by an "(uint32_t)0".
104 * Immediately after the terminating 0 follow the images, one by
105 * one, all aligned on "uint32_t" boundaries (size rounded up to
106 * a multiple of 4 bytes - except for the last file).
107 *
108 * "Firmware Images" are binary images containing firmware (like
109 * U-Boot or FPGA images) which usually will be programmed to
110 * flash memory.
111 *
112 * "Script files" are command sequences that will be executed by
113 * U-Boot's command interpreter; this feature is especially
114 * useful when you configure U-Boot to use a real shell (hush)
115 * as command interpreter (=> Shell Scripts).
116 */
117
118 #define IH_TYPE_INVALID 0 /* Invalid Image */
119 #define IH_TYPE_STANDALONE 1 /* Standalone Program */
120 #define IH_TYPE_KERNEL 2 /* OS Kernel Image */
121 #define IH_TYPE_RAMDISK 3 /* RAMDisk Image */
122 #define IH_TYPE_MULTI 4 /* Multi-File Image */
123 #define IH_TYPE_FIRMWARE 5 /* Firmware Image */
124 #define IH_TYPE_SCRIPT 6 /* Script file */
125 #define IH_TYPE_FILESYSTEM 7 /* Filesystem Image (any type) */
126 #define IH_TYPE_FLATDT 8 /* Binary Flat Device Tree Blob */
127
128 /*
129 * Compression Types
130 */
131 #define IH_COMP_NONE 0 /* No Compression Used */
132 #define IH_COMP_GZIP 1 /* gzip Compression Used */
133 #define IH_COMP_BZIP2 2 /* bzip2 Compression Used */
134
135 #define IH_MAGIC 0x27051956 /* Image Magic Number */
136 #define IH_NMLEN 32 /* Image Name Length */
137
138 /*
139 * all data in network byte order (aka natural aka bigendian)
140 */
141
142 typedef struct uboot_image_header {
143 uint32_t ih_magic; /* Image Header Magic Number */
144 uint32_t ih_hcrc; /* Image Header CRC Checksum */
145 uint32_t ih_time; /* Image Creation Timestamp */
146 uint32_t ih_size; /* Image Data Size */
147 uint32_t ih_load; /* Data Load Address */
148 uint32_t ih_ep; /* Entry Point Address */
149 uint32_t ih_dcrc; /* Image Data CRC Checksum */
150 uint8_t ih_os; /* Operating System */
151 uint8_t ih_arch; /* CPU architecture */
152 uint8_t ih_type; /* Image Type */
153 uint8_t ih_comp; /* Compression Type */
154 uint8_t ih_name[IH_NMLEN]; /* Image Name */
155 } uboot_image_header_t;
156
157
158 #endif /* __IMAGE_H__ */
Something went wrong with that request. Please try again.