Home
Support

Knowledge Base

BSPs and drivers
Community resources
Product documentation
Questions?
Contact us

Difference between Raw and Binary image
 
________________________________________________________________________

Applicable Environment
________________________________________________________________________
  • Topic: Difference between Raw and Binary image
  • SDP: 6.5.0, 6.4.1, 6.4.0
  • Target: Any supported target
________________________________________________________________________

Recommendation
________________________________________________________________________

The raw image and the binary image are nearly identical, except the raw image format involves a 'jump' instruction placed at the beginning.

Our mkifs tool places the startup header (which is our own, internal creation) right at the beginning of the IFS (it goes startup header, then startup itself, then IFS). The address which is the entry point of the startup code (which the IPL or ROM Monitor code needs to jump to) is found within the startup header, but it"s not right at the beginning. Our own IPL code knows where to look within the startup header to find this address, so when we"re booting from a QNX IPL, we can use a plain binary format image. On the other hand, when we"re booting from a bootloader or ROM Monitor, those loaders don"t have an "understanding" of the QNX startup header, so we need to explicitly tell the loader what exact address to go to. This information can be extracted by running "dumpifs" on an IFS image, or by running mkifs with –vvv; however, if the startup code changes, this address may also change. It makes it a bit of a pain during development of startup code, to have to keep fishing out the startup entry point address, when booting with a ROM monitor.

When we request a "raw" format image, the mkifs tool simply extracts the entry point address from the startup header, and then puts some additional code right before the startup header, which is just a "jump" instruction to the actual entry point.

For example, if in your build file, you specified [image=0x100000], and then create a binary image, you"ll find that the entry point into startup might be something like 0x1036e0. If instead, you create a "raw" format image, there will be an instruction equal to "jump to 0x1036e0" placed right at the beginning of the IFS, so you can tell your ROM monitor to ”go 0x100000” each time you boot, regardless of whether you change the startup code.

________________________________________________________________________
NOTE: This entry has been validated against the SDP version listed above. Use caution when considering this advice for any other SDP version. For supported releases, please reach out to QNX Technical Support if you have any questions/concerns.
________________________________________________________________________


Related Attachments
 None Found





Please contact us with your questions or concerns.