I had the same thinking as Frank when adding the lm3s family, i.e. create
a new package every time a new LM3S series is added, in the present case,
a new lm3s6xxx layer that covers all 19 devices.
The interrupt mapping in lm3s/var/include/var_intr.h should cover all series
as far as I could see. Few interrupts are currently missing, they shall be
filled as new series are added. The lm3s/var/include/var_io.h can be extended
to include Ethernet, CAN, USB register definitions etc.. I use the
lm3s8xx/include/plf_io.h to refine the set of peripherals included in each
device of the 800 series. Since sub-series of the 6000 series have different
memory sizes, the memory layout must be included in the board specific package.
In addition, current device drivers for the LM3S (I2C, ADC) are only
constrained to use the LM3S HAL and not constrained by series or sub-series.
In practice, this means that using the LM3S ADC driver with the LM3S800 for
instance, will not raise any dependency error during configuration. Since the
LM3S800 does not have an ADC peripheral, the lm3s8xx/include/plf_io.h will not
allow the lm3s/var/include/var_io.h to define the ADC registers, therefore,
the ADC driver will not compile. I believed this to be ok, users most have a
minimal knowledge of the hardware in use.