Subject: Re: What happened to autobuild?
To: Markus Baeurle <emw4maba@gp.fht-esslingen.de>
From: Mark Brinicombe <mark@client.nc.com>
List: port-arm32
Date: 10/18/1997 23:07:33
On Sat, 18 Oct 1997, Markus Baeurle wrote:

> > Do you know whether the output of ecinfo can be used without
> falling foul
> > of any anti-reverse-engineering legislation (in any country)?
> 
> Ecinfo only uses two SWIs to get hold of the information, these are
> Podule_ReadInfo and Podule_SetSpeed.
> If this can be called reverse-engineering, I'm seriously confused.
> To my understanding, all this program does with podules is to find
> out some of their characteristics that can be obtained relatively easily. It
> does not do any reverse-engineering of the podule's firmware.
> I'm not sure if this is enough information though.

I would not consider this reverse engineering etc but I would not expect
that to be able to provide enough information to write a driver.
The ReadInfo SWI just returns information RiscOS provides about a podule
i.e. the base addresses for the podule etc, the ID. The ID can be used to
recognise the card but this is just part of a standard podule header. The
addresses will be the RiscOS base addresses for the podule in the
different address spaces and these will be different anyway. To implement
a driver you need to know the register offsets into this podule space of
things like the controller chip, interrupt enable register, data xfer
registers etc. and this information will not be available outside the
driver itself.
The problem arises when you try and find this information. The obvious way
is to look at the module code and see what it does but this would be
reverse engineering in my book and is a no-no.
An alternative (and I don't know if this would be considered reverse
engineering, I suspect some may) is to use something that displays the
contents of podule space. Various controller chips can often easily be
found, for example various SCSI chips report there ID's in certain
registers after reset (info can be obtained from the chip data sheet).
However a lot of boards will have custom register is programmable logic
e.g. for interrupt / DMA control and the location and behaviour of these
can not normally be deduced from looking the the podule's memory map.

This means that you need the cooperation of the hardware manufacturers in
order to write drivers if the details are not publically available.

Cheers,
				Mark