I'm sorry, I did not understand that the customer wants to create a boot table. I re-read the thread and see that you had mentioned this earlier.
By default, the hex converter will convert all initialized sections. If you want to convert only some of those sections, you must specify a SECTIONS directive.
The only boot loader formats that armhex understands natively are --gpio16, --gpio8, --spi8, and --i2c8. If you use one of those formats, you do not need to specify a SECTIONS directive. If you don't want to use one of those formats, but you want to create a boot table, then yes, you must use a SECTIONS directive.
You can use the boot keyword in the SECTIONS directive to avoid explicitly assigning addresses to the individual sections, like so:
SECTIONS { .cpu_info : boot .intvec : boot .text : boot .const : boot .cinit : boot }
If the user does wish to explicitly assign addresses, then the hex command file you posted is correct.
In summary, you must use a SECTIONS directive if any of the following are true:
- You wish to create a boot table but exclude some initialized sections
- You wish to create a boot table that is not one of the understood formats
- You wish to create a boot table and control the address for each section