IPL for QNX 4.25 on embedded system

Hi,

in order to extend the functionality of an existing controller, we
needed to upgrade the version of QNX from 4.22 to 4.25. My
problem now is that the controller won’t boot anymore.

The existing initial program loader (IPL) looks at the boot
image header struct at the start of the boot image. For 4.22 it
found there a reference to some startup code, and some data,
which it copied both to RAM. After transfering control to the
startup code the controller booted just fine.

If I look at the BIH struct now, the length of the startup code
is zero. Additionally, the pointer to the data, which is supposed
to be in the ROM, is pointing somewhere far off.

Can anybody tell me if the boot image header struct has changed,
and where I can find the new definition ? Additionally I am desperately
looking for some example code for an IPL for QNX 4.25, for a
diskless system with an Intel 80386 processor and more than one
megabyte of RAM and ROM…

Thanks in advance for any help
Heiko

Hi Heiko,

Did you create you own IPL? or are you referring to the
OS image? What type of embedded device do you have? Details :slight_smile:

Thanks

E.


Heiko Petzsch <hpetzsch@websytec.de> wrote:

Hi,

in order to extend the functionality of an existing controller, we
needed to upgrade the version of QNX from 4.22 to 4.25. My
problem now is that the controller won’t boot anymore.

The existing initial program loader (IPL) looks at the boot
image header struct at the start of the boot image. For 4.22 it
found there a reference to some startup code, and some data,
which it copied both to RAM. After transfering control to the
startup code the controller booted just fine.

If I look at the BIH struct now, the length of the startup code
is zero. Additionally, the pointer to the data, which is supposed
to be in the ROM, is pointing somewhere far off.

Can anybody tell me if the boot image header struct has changed,
and where I can find the new definition ? Additionally I am desperately
looking for some example code for an IPL for QNX 4.25, for a
diskless system with an Intel 80386 processor and more than one
megabyte of RAM and ROM…

Thanks in advance for any help
Heiko

Hi again,

Did you create you own IPL? or are you referring to the
OS image? What type of embedded device do you have? Details > :slight_smile:

The IPL I am talking about is a combined monitor program, BIOS and
boot loader: as a monitor, it waits after the device has been reset for
commands via the serial line, and allows to download new firmware into
the flash RAM for example. It implements a couple of BIOS functions
in order to allow the QNX kernel to get basic information about the device.
And if it doesn’t receive any commands within a second or so, it starts the
QNX kernel: it decompresses the data part from the flash image, extracts
the startup code to RAM and transfers control to it.

Some copying of code is necessary in order to start QNX: after a reset a
part of the flash memory is mapped at address 0x80000 (that part of the
flash has a size of 512 KB), so that the monitor can take over control in
protected mode. Before passing control over to QNX, this flash is remapped
though to address 0x3f80000, where it will be accessed once QNX has
switched to real mode.

This IPL has not been written by me - everybody who originally worked
on this controller has left the manufacturers company (our customer) by now.
The device uses an Intel 80386 embedded microprocessor and and has
2 MB flash memory, 2 MB RAM, a serial line and some I/Os.

I have found out in the meantime that an example of what had to be done
to start QNX was included in the Embedded Kit for ONX 4.22. But as I
wrote in my last posting, things have changed: there is no startup code in
the
image of QNX 4.25, and the data pointer doesn’t refer anymore to the
flash memory (maybe its a pointer relative to the boot image header now?).

I guess that I need to take a look at the corresponding example from the
Embedded Kit belonging to QNX 4.25. Do we have to buy this from QNX,
or can it be found for free somewhere ?

Best regards

Heiko

Hi Heiko,

You can get the embedded kit from us. I can send it to you. However,
it is not a released product, or will it ever be. We will not provide
any support for the Ekits as I mentioned that they are not a released
product. Just so you know :slight_smile:

On that note, what type of embedded board do you have? Is there a name
for it? Is it a PC on a stick?

Thanks

Erick.


Heiko Petzsch <hpetzsch@websytec.de> wrote:

Hi again,

Did you create you own IPL? or are you referring to the
OS image? What type of embedded device do you have? Details > :slight_smile:

The IPL I am talking about is a combined monitor program, BIOS and
boot loader: as a monitor, it waits after the device has been reset for
commands via the serial line, and allows to download new firmware into
the flash RAM for example. It implements a couple of BIOS functions
in order to allow the QNX kernel to get basic information about the device.
And if it doesn’t receive any commands within a second or so, it starts the
QNX kernel: it decompresses the data part from the flash image, extracts
the startup code to RAM and transfers control to it.

Some copying of code is necessary in order to start QNX: after a reset a
part of the flash memory is mapped at address 0x80000 (that part of the
flash has a size of 512 KB), so that the monitor can take over control in
protected mode. Before passing control over to QNX, this flash is remapped
though to address 0x3f80000, where it will be accessed once QNX has
switched to real mode.

This IPL has not been written by me - everybody who originally worked
on this controller has left the manufacturers company (our customer) by now.
The device uses an Intel 80386 embedded microprocessor and and has
2 MB flash memory, 2 MB RAM, a serial line and some I/Os.

I have found out in the meantime that an example of what had to be done
to start QNX was included in the Embedded Kit for ONX 4.22. But as I
wrote in my last posting, things have changed: there is no startup code in
the
image of QNX 4.25, and the data pointer doesn’t refer anymore to the
flash memory (maybe its a pointer relative to the boot image header now?).

I guess that I need to take a look at the corresponding example from the
Embedded Kit belonging to QNX 4.25. Do we have to buy this from QNX,
or can it be found for free somewhere ?

Best regards

Heiko

Hi Erick,

You can get the embedded kit from us. I can send it to you. However,
it is not a released product, or will it ever be. We will not provide
any support for the Ekits as I mentioned that they are not a released
product. Just so you know > :slight_smile:

I would appreciate it very much if you would send me the Ekit (to my
mail adress, alternatively I could grab it from a web or ftp site). And I
understand that I can’t expect any support from QNX.

On that note, what type of embedded board do you have? Is there a name
for it? Is it a PC on a stick?

It is a box of about 20 x 10 x 7 cm… with an external power supply unit
and
extendable by additional I/O modules. Its name is modUS-m16.

Best regards

Heiko