This is the mail archive of the
mailing list for the eCos project.
Re: Eagle 100 (Stellaris LM3S6918)
- From: Ilija Kocho <ilijak at siva dot com dot mk>
- To: ecos-devel at ecos dot sourceware dot org
- Date: Sun, 10 Jul 2011 22:38:35 +0200
- Subject: Re: Eagle 100 (Stellaris LM3S6918)
- References: <4D809BF2.email@example.com> <4D8208F0.firstname.lastname@example.org> <4DFA071F.email@example.com> <4DFA0DAA.firstname.lastname@example.org> <1308233778.22353.4.camel@hp-study> <4DFA1320.email@example.com> <4DFF64B3.firstname.lastname@example.org> <4E007A9B.email@example.com> <D6050C555CC56940A7AF326522830276041C822F@mail2.STMIRV01.COM> <4E034E19.firstname.lastname@example.org> <4E036E37.email@example.com>
I am solving similar problems in a course of porting eCos to Kinetis so
I would discuss / propose some ways for CDL management of a large
1. Part naming management
Dealing with big number of (similar) parts can be simplified for both
programmer and user, if device selector menu instead being a single
cdl_option, is broken in a number of cdl_options (grouped in
cdl_component). User will select chip features (or name segments) and
build a part.
2. Memory layout and feature management
2.1 Every option from cdl_component described in 1., if needed, can be
used in either CDL or C code as parameters, switches, etc.
2.2 Some of selected features can be further used to resolve memory
- file name segments such as MLT files
- defines for memory size and layout
You can find sources at
( component CYGHWR_HAL_CORTEXM_KINETIS in hal_cortexm_kinetis.cdl ).
3. Further considerations
In present post CYG_HAL_STARTUP is placed in the platform CDL, but I
think for chips without external memory it can be placed in variant CDL
with option (for provision for extension/override by platform). I am
exploring such possibility and am going to propose new attachment soon.
Every comment is welcome.
On 23.06.2011 18:47, Frank Pagliughi wrote:
> On 06/23/2011 10:30 AM, John Dallaway wrote:
>> Hi Christophe and Frank
>> Christophe Coutand wrote:
>>> I had the same thinking as Frank when adding the lm3s family, i.e.
>>> a new package every time a new LM3S series is added, in the present
>>> 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
>>> 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
>>> 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
>>> 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,
>>> the ADC driver will not compile. I believed this to be ok, users
>>> most have a
>>> minimal knowledge of the hardware in use.
>> As long as the refining of definitions performed in the "LM3S series"
>> HAL packages such as lm3s8xx provide information that is truly specific
>> to that series and cannot be inferred simply by testing for the presence
>> of various peripheral driver packages, then I don't see any problem here
>> and it would make sense for Frank to follow this pattern by creating an
>> lm3s6xxx HAL package.
> That makes some sense. But two things:
> (1) I worry a little about the implementation of a lot of code that I
> wouldn't be able to test - like creating the plf_io.h definitions for
> all 19 chips in the lm3s6xxx without the ability to test any but one.
> But I suppose that would shake out in the long run.
> (2) I'm still unsure of how to implement the package when the
> different chips have different memory sizes. A quick look through the
> existing hal and all I find is hard-coded constants in the pkgconfig
> For both those reasons, I started wondering if it wouldn't be better
> to either create separate packages for each of the different
> individual chips. That way each package would be relatively small,
> easy to implement, and fully tested when implemented. But that would
> result in over 180 packages just for Stellaris!
> Then I thought maybe we group the chips by memory sizes, like a
> package called "lm3s256x64" for all the chips with 256k Flash and 64k
> RAM. But that would make it difficult to track chips by part number.
>> John Dallaway
>> eCos maintainer