tools: dynamically allocate imx_header in imximage
Change to dynamically allocate the imx_header to correctly
allocate the IVT, Boot Data and DCD at correct locations
depending on the boot media.
Also check that the Image Vector Table Offset + IVT +
Boot Data + DCD <= Initial Load Region Size.
Previously struct imx_header was always 4096 bytes and was
not dealing correctly with the Image Vector Table Offset.
Now, the memory allocation looks for e.g. SD boot like this
 Storage   u-boot.imx                             RAM
 Device
 
00000000                                         177ff000 <--------------
                                                                         |
 
00000400  00000000  d1 00 20 40 IVT.header       
177ff400 <-------      |
 
00000404  00000004  00 00 80 17 IVT.entry        
177ff404 -----------   |
 
00000408  00000008  00 00 00 00 IVT.reserved1    
177ff408        |  |   |
 
0000040C  0000000C  2c f4 7f 17 IVT.dcd          
177ff40C ------ |  |   |
 
00000410  00000010  20 f4 7f 17 IVT.boot         
177ff410 ---- | |  |   |
 
00000414  00000014  00 f4 7f 17 IVT.self         
177ff414 --------  |   |
 
00000418  00000018  00 00 00 00 IVT.csf          
177ff418    | |    |   |
 
0000041C  0000001C  00 00 00 00 IVT.reserved2    
177ff41C    | |    |   |
 
00000420  00000020  00 f0 7f 17 BootData.start   
177ff420 <--- |    | ---
 
00000424  00000024  00 60 03 00 BootData.length  
177ff424      |    |
 
00000428  00000028  00 00 00 00 BootData.plugin  
177ff428      |    |
 
0000042C  0000002C  d2 03 30 40 DCD.header       
177ff42C <-----    |
 ...                                                                 |
 
00001000  00000c00  13 00 00 ea U-Boot Start     
17800000 <----------
While at it also remove the unused #define HEADER_OFFSET.
Signed-off-by: Stefano Babic <sbabic@denx.de>