system page information

Dear Folks,

I am writing a non-BIOS ipl and startup for a particular x86 / pc-104
system (Real Time Devices). Since I do not have recourse to BIOS
calls, as the hardware configuration should not be changing rapidly, and
as I am interested in minimizing time to boot as much as possible, I
have decided to simply enter the system page paratmeters directly into
the variables, at least for now. I find that is it is not always
clear what the those variable names are exactly (looking through the
appropriate header files and such), and I find myself guessing a bit. Does
anyone know if the system page variables are documented anywhere in a clear
and concise fashion? Are there particular pitfalls for which I should be
on guard?

Thank you.

Rich B.
bonomo@sal.wisc.edu

I am writing a non-BIOS ipl and startup for a particular x86 / pc-104
system (Real Time Devices). Since I do not have recourse to BIOS
calls, as the hardware configuration should not be changing rapidly, and
as I am interested in minimizing time to boot as much as possible, I
have decided to simply enter the system page paratmeters directly into
the variables, at least for now. I find that is it is not always
clear what the those variable names are exactly (looking through the
appropriate header files and such), and I find myself guessing a bit. Does
anyone know if the system page variables are documented anywhere in a clear
and concise fashion? Are there particular pitfalls for which I should be
on guard?

What you should do is take a look at a non-x86 startup that doesn’t
rely on any BIOS calls to fill in things like memory size, etc. Probably
the easiest one to look at is one of the ARM based BSPs.

chris


Chris McKillop <cdm@qnx.com> “The faster I go, the behinder I get.”
Software Engineer, QSSL – Lewis Carroll –
http://qnx.wox.org/

Richard Bonomo,6289 Chamberlin,263-4683, <bonomo@sal.wisc.edu> wrote:

Dear Folks,

I am writing a non-BIOS ipl and startup for a particular x86 / pc-104
system (Real Time Devices). Since I do not have recourse to BIOS
calls, as the hardware configuration should not be changing rapidly, and
as I am interested in minimizing time to boot as much as possible, I
have decided to simply enter the system page paratmeters directly into
the variables, at least for now. I find that is it is not always
clear what the those variable names are exactly (looking through the
appropriate header files and such), and I find myself guessing a bit. Does
anyone know if the system page variables are documented anywhere in a clear
and concise fashion? Are there particular pitfalls for which I should be
on guard?

The Customizing Image Startup Programs chapter of Building Embedded Systems
describes the system page. I hope it’s clear and concise enough. :slight_smile:


Steve Reid stever@qnx.com
TechPubs (Technical Publications)
QNX Software Systems

Chris McKillop wrote:

I am writing a non-BIOS ipl and startup for a particular x86 / pc-104
system (Real Time Devices). Since I do not have recourse to BIOS
calls, as the hardware configuration should not be changing rapidly, and
as I am interested in minimizing time to boot as much as possible, I
have decided to simply enter the system page paratmeters directly into
the variables, at least for now. I find that is it is not always
clear what the those variable names are exactly (looking through the
appropriate header files and such), and I find myself guessing a bit.
Does anyone know if the system page variables are documented anywhere in
a clear
and concise fashion? Are there particular pitfalls for which I should be
on guard?


What you should do is take a look at a non-x86 startup that doesn’t
rely on any BIOS calls to fill in things like memory size, etc. Probably
the easiest one to look at is one of the ARM based BSPs.

chris

I have used the sc400 stuff to some extent with the IPL. I using

that to some extent for the startup code as well, at least as a guide.
Rich

Steve Reid wrote:

Richard Bonomo,6289 Chamberlin,263-4683, <> bonomo@sal.wisc.edu> > wrote:
Dear Folks,

I am writing a non-BIOS ipl and startup for a particular x86 / pc-104
system (Real Time Devices). Since I do not have recourse to BIOS
calls, as the hardware configuration should not be changing rapidly, and
as I am interested in minimizing time to boot as much as possible, I
have decided to simply enter the system page paratmeters directly into
the variables, at least for now. I find that is it is not always
clear what the those variable names are exactly (looking through the
appropriate header files and such), and I find myself guessing a bit.
Does anyone know if the system page variables are documented anywhere in
a clear
and concise fashion? Are there particular pitfalls for which I should be
on guard?

The Customizing Image Startup Programs chapter of Building Embedded
Systems describes the system page. I hope it’s clear and concise enough.
:slight_smile:


Steve Reid > stever@qnx.com
TechPubs (Technical Publications)
QNX Software Systems

Dear Steve,

As you might imagine, I have been quite dependent on the documentation I
reference. Some of my desire for an even more detailed and concise (seems
almost contracdictory) description probably stems in part from my not being
intimately familiar with the code and the techniques used. I do not
consider myself a “proficient” C-programmer.

I printed out the system page from the system I am using while booted under
a “BIOS” startup. I am attempting to enter the BIOS-dependent items
directly into the appropriate variables. I find that the documentation
provides substantial description of the structures and functions used, but
going from those descriptions to actual variable names requires quite a bit
of digging and going “back and forth.” Here is a snipped of almost
certainly incorrect C-code to illustrate what I am attempting to do:

// The following routines have hardware or system dependancies which
//
// may need to be changed on a non-PC compatible system. The default
//
// routines assume a BIOS is present. If you do not have a bios you
//
// will need to replace these routines with ones of your own.
//
//
//
init_intrinfo();
init_qtime();
init_cacheattr();
init_cpuinfo();
init_hwinfo();
add_string("/cfg/bus/pci=bios");
add_typed_string(_CS_MACHINE, “AMDSC400”);
//
//
//
---------------------------------------------------------------------//
Insert the appropriate system page entries here: */

/* instead of init_intrinfo (offset = 0x0798, size = 0x0140) /
lsp.intrinfo.offset = 0x0798;
lsp.intrinfo.size = 0x0140;
lsp.intrinfo.0.vector_base = 0x0;
lsp.intrinfo.0.num_vectors = 0x7;
lsp.intrinfo.0.cascade_vector = 0x7fffffff;
lsp.intrinfo.0.cpu_intr_base = 0x30;
lsp.intrinfo.0.cpu_intr_stride = 0x1;
lsp.intrinfo.0.flags = 0x0;
lsp.intrinfo.0.id.genflags = 0x800;
lsp.intrinfo.0.id.size = 0x0;
lsp.intrinfo.0.id.rtn = 0xff5128d8;
lsp.intrinfo.0.eoi.genflags = 0x0;
lsp.intrinfo.0.eoi.size = 0x4;
lsp.intrinfo.0.eoi.rtn = 0xff5128d8;
lsp.intrinfo.0.mask = ff5128dc;
lsp.intrinfo.0.unmask = ff5128ed;
lsp.intrinfo.0.config = 0x0;
/
*/
lsp.intrinfo.1.vector_base = 0x7;
lsp.intrinfo.1.num_vectors = 0x1;
lsp.intrinfo.1.cascade_vector = 0x7fffffff;
lsp.intrinfo.1.cpu_intr_base = 0x37;
lsp.intrinfo.1.cpu_intr_stride = 0x1;
lsp.intrinfo.1.flags = 0x0;
lsp.intrinfo.1.id.genflags = 0x0;
</IFFY CODE>
and so forth.
I am concerned that I may not be employing the correct variables, or
technique (I have not used pointers here). I am also concerned about
how the variable size of some of the system page entities is to
be handled.

So, is there a straight-forward variable list which to which one may refer?

Rich B.
bonomo@sal.wisc.edu

Richard Bonomo,6289 Chamberlin,263-4683, <bonomo@sal.wisc.edu> wrote:

So, is there a straight-forward variable list which to which one may refer?

I don’t know of one. Perhaps one of the developers can help you.


Steve Reid stever@qnx.com
TechPubs (Technical Publications)
QNX Software Systems