This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Virtual vectors initialization changed


Hi

Just a quick note to make people aware of some changes in the way the
virtual vectors get initialized.

Previously, the entire table of virtual vectors would get initialized
in configurations containing the GDB stubs code, or if configured for
ROM startup.  That is, ROM monitors (or equivalent RAM startup
configs) were forced to initialize the table, and regular RAM startup
configurations were forced to use the table as already initialized.

That was unfortunate, most of all because it made it unclear what the
virtual vectors are there for. To set the record straight:

 virtual vectors: are a _mechanism_ for allowing services in the table
                  to be implemented in a different "address space"
                  than the callers. Primarily to allow RAM
                  applications to use services provided by a ROM
                  monitor.

When and how to initialize the table is a _policy_ which is now
controlled with much higher granularity. Specifically, the new code
checked in (which will be available via public CVS on Friday, giving
me a day to sort out any unforseen quirks), will allow better control
of:

 o  When the virtual vector table gets initialized. Regular RAM
    configuration can now to do so if desired - allowing for testing
    of new implementations of the various services.

 o  Which services to provide in a RAM configuration - e.g., only
    override the reset vector to test new implementation while relying
    on IO services provided by the ROM monitor.

Also the defaults are to initialize as much of this table as makes
sense (everything but IO since those might already be in use by
debugger connection). This means that the bulk of the code gets tested
in normal builds, and not just once in a blue moon when building new
stubs or a ROM configuration.


The CDL comes with comments, of course. But I will also be updating
the virtual vectors overview/introduction in the porting guide to
match.

The changes are pretty much contained to the common HAL, but I have
also removed the IMPLEMENT_IF_SERVICES option which was used in
platform HALs before to control compilation of IO code. Again, this is
to ensure continual (compile) testing of code.


I have some related changes pending for controlling when/how to update
the communication channels, but this needs a little more work. This is
what will allow proper control of GDB O-packet mangling and allow diag
output over ethernet. But I'll post a separate notice when that goes
in.

Cheers,
Jesper

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]