On Sunday 17 May 2009, Duane Ellis wrote:
> david> Hmm, I noticed that chip/atmel/at91/at91sam7x128.tcl (for example)
> david>defines a global AT91C_ID ... which strongly presumes that there's
> david> only one at91 family chip, since those IDs vary between chips.
> 
> In general, atmel has a single set of IP that defines a peripherals, and 
> they re-use it over and over again across all of the AT91 series parts, 
> sort of like a "we have a uart in our chip library". Other chip 
> companies do the same thing. All atmel uarts have the same flavor - they 
> have one uart design - and it has evolved over the years.

Right, but AT91C_ID is a good example of how Atmel changes things
between parts.  Those IDs are used in two controller-specific ways:
defining IRQ lines, and gating clocks (for clocks that can be gated).

So when one part may have four UARTs, another may have just two
but will add a CAN controller; those IDs will then mean different
things.  Compare that sam7 part with any of the sam9 parts, for
example, or an rm9200.

You're correct that those individual controllers haven't tended to
vary  much.  (The AVR32 parts use pretty much the same designs.)
That's software-friendly, but not all hardware houses work like that.

And in newer designs, Atmel has had to evolve some of their more
fundamental things ... running out of pinmux options and module
IDs for more complex chips will do that.


> david> What I had started to do with some DaVinci stuff is define a
> david> dictionary with various chip-specific symbols, then have the
> david> utilities use the relevant dictionary.
> 
> Good idea! The real trick is to understand how the family goes together.

And accept that what seems constant for now may well change soon,
for most vendors.  The next chip iteration is likely to differ
in more than just the amount of memory or clock speed.

That understanding develops over time, and is encapsulated in
code that handles more and more of the family.

A dictionary does OK for handling "this controller is at a
different address" differences, and can help address other
types of differences.   Mostly I see it as a way to structure
things ... there may be better ones.  Globals won't work.

- Dave

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to