summaryrefslogtreecommitdiffstats
path: root/main/common/msbin.h
blob: 21c6a4f79ebfd695fae7932ecc12d02b7206d9e7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/**************************************************************************
 *
 * Copyright (c) 2013 Alcatel-Lucent
 *
 * Alcatel Lucent licenses this file to You under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License.  A copy of the License is contained the
 * file LICENSE at the top level of this repository.
 * You may also obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 **************************************************************************
 *
 * msbin.h:
 *
 * The following information was retrieved from the MSDN technical
 * support web site...
 *
 * Windows CE Binary Image Data Format (.bin):
 * The binary image file format organizes data by sections.
 * Each section contains a section header that specifies the starting
 * address, length, and checksum for that section. Romimage.exe writes
 * data organized by logical sections, such as an application's text or
 * .data region, to the .bin file. The image terminates with an image
 * record header with the physical address and checksum set to zero.
 * A configuration file formatted as a .bin file is small and fast.
 * A .bin file is about half the size of an .sre file.
 * This smaller size allows a .bin file to download faster than an
 * .sre file when you are using the Windows CE Console Debug Shell
 * tool (Cesh.exe).
 *
 * The following table shows the .bin file format.
 *
 * FIELD                        LENGTH  DESCRIPTION
 *                              (bytes)
 * Sync bytes (optional)          7     Byte 0 is B, indicating a .bin file
 *                                      format. Bytes 1-6 are reserved
 *                                      and set to 0, 0, 0, F, F, \n.
 *                                      Or in hex: 0x4230303046460a
 * Image header, consisting of:
 *  Image address                 4     Start address of image.
 *  Image length                  4     Length, in bytes, of image.
 *  One or more records of:
 *   Record address               4     Starting address of data record.
 *                                      If this value is zero, the record
 *                                      address is the end of the file,
 *                                      and record length contains the
 *                                      starting address of the image.
 *   Record length                4     Length of record data, in bytes.
 *   Record checksum              4     Signed 32-bit sum of record data bytes.
 *   Record data                  N     Record data
 *
 * Original author:     Ed Sutter (ed.sutter@alcatel-lucent.com)
 *
 */
#ifndef _MSBIN_H_
#define _MSBIN_H_

#define MSBIN_SYNC_SIZE     7
#define MSBIN_SYNC_DATA     "B000FF\n"

#define MSBINFHDR   struct msbin_imghdr
#define MSBINSHDR   struct msbin_record

/* File header:
 */
struct msbin_imghdr {
    ulong   imageaddr;
    ulong   imagelen;
};

/* Section header:
 */
struct msbin_record {
    ulong   addr;
    ulong   len;
    ulong   csum;
};

#endif