[Prism54-devel] Prism54 development update

Sebastien sebastien.bourdeauducq at gmail.com
Sun Sep 11 13:21:12 UTC 2005


> So you have a disassembly which you cannot (or don't plan to)
> modify, compile, and load into real hardware. You use it as a
> documentation, right? And want to write your fw from scratch, right?

That's it !

> Heh. Can you translate this into English for us mere i386 humans?

This means that writing firmware for PCI devices and USB devices with a 
NET2280 (aka "version 1 USB devices") will be relatively easy, there are no 
major hardware differences and the fact that a SoftMAC PCI firmware fails on 
an USB version 1 device can be explained by some hacks Conexant did to 
optimize their design, which won't be hard to implement in FreeMAC.

> What toolchain do I need to build? Gcc? binutils? 

I use the toolchain from www.gnuarm.com. It's actually plain GCC and 
Binutils :)

> What versions of those 
> known to work?

I personnaly use GCC 3.4.3 and Binutils 2.14. Any other version should work, 
though.

> What patches to apply, if any? 

No patches :)

> Examples/HOWTOs how to get firmware to load in real or emulated hardware?

Soon, I'll add a "FreeMAC quickstart guide" on the wiki, I think it'll 
*really* be useful !

> What is that FreeMAC/ISLMON?

ISLMON (ISL MONitor) was my first attempt at writing a firmware from scratch :
http://jbnote.free.fr/islsm/doku.php?id=re:islmon
When I started this, it was just by curiosity, and as I found hacking the ISL 
*really* interesting, I said "Why not write a full featured firmware from 
scratch ?". I renamed it to FreeMAC, as Jean Baptiste and I thought it was a 
good name.
The current FreeMAC - that I still need to put online - doesn't do much more 
than the ISLMON 0.2 on the wiki, but the source code's cleaner, uses the 
event system of the ISL chip to handle asynchronous UARTPCI transfers, and 
there is an abstraction layer to access the hardware.

> Can I load it into fullmac? 

In theory, it works with no change. But I haven't tried, since I have no 
FullMAC card.

> IOW, I need something like
> http://www.uclinux.org/pub/uClinux/utilities/armulator/, 
> but s/ucLinux/prism54/

Basically, the emulator is only needed if you want to reverse engineer the 
official SoftMAC firmware. It can be used to get the uncompressed image, or 
to log hardware accesses.

To load into real hardware, I wrote a quick FreeBSD KLD called "ISLLDR" (ISL 
LoaDeR), which works only with USB devices. Moreover, basic FreeMAC support 
will be added in the next p54u version 0.6 
(http://lekernel.lya-fr.com/prism54_freebsd.html), which I'll release in a 
couple of days/weeks once I've fixed a couple of bugs and missing features 
(there was a big code reorganization too, so I need to rewrite some parts of 
the driver).

I can send the ISLLDR or current p54u source to anyone interested. Soon, this 
mess will be avoided as I'll use SVN :)

For PCI devices :
FreeMAC loads exactly the same way as SoftMAC and FullMAC. The UARTPCI 
protocol is the same as on USB devices. There is a Linux GPL implementation 
in the XH8196 source 
(http://www.dse.co.nz/isroot/dse/support/XH8196-linux.zip) ; you can scavenge 
parts from the XH8196 source to implement UARTPCI in your code.
I have never run FreeMAC on a PCI device as I don't have one ; but in theory 
it should work seamlessly.

For USB version 2 devices  (ie. with a 3887 chip) :
FreeMAC doesn't support them for now. The host interface needs reverse 
engineering ; I'm working on this : 
http://jbnote.free.fr/islsm/doku.php?id=re:reverse_engineering_of_the_3887_host_interface

I hope you understood - feel free to ask more questions :)
Regards,
Sebastien


More information about the Prism54-devel mailing list