public inbox for ecos-devel@sourceware.org
 help / color / mirror / Atom feed
* eCos on AT91SAM9 - call to action
@ 2011-03-16 11:16 John Dallaway
  2011-03-16 13:40 ` Grant Edwards
                   ` (4 more replies)
  0 siblings, 5 replies; 23+ messages in thread
From: John Dallaway @ 2011-03-16 11:16 UTC (permalink / raw)
  To: eCos Development List

All

There has been a lot of delay in getting AT91SAM9 support into the eCos
repository. Far too much delay. I think the best way forward now is to
focus on Evgeniy Dushitov's contribution (port for AT91SAM9263) initially:

  http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000819

This seems sensible because:

a) The patches themselves are well abstracted.
b) Some people are already using these patches as a baseline for
   further AT91SAM9 ports.
c) There is support for running this port under QEMU, allowing
   wider testing.

I would like to invite everyone with an interest in AT91SAM9 support for
eCos to add themselves to the CC list for bug 1000819 and contribute to
the review process. Let's make this a community effort.

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-16 11:16 eCos on AT91SAM9 - call to action John Dallaway
@ 2011-03-16 13:40 ` Grant Edwards
  2011-03-16 14:31 ` AW: " Richard Rauch
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 23+ messages in thread
From: Grant Edwards @ 2011-03-16 13:40 UTC (permalink / raw)
  To: ecos-devel

On 2011-03-16, John Dallaway <john@dallaway.org.uk> wrote:
> All
>
> There has been a lot of delay in getting AT91SAM9 support into the eCos
> repository. Far too much delay. I think the best way forward now is to
> focus on Evgeniy Dushitov's contribution (port for AT91SAM9263) initially:
>
>   http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000819
>
> This seems sensible because:
>
> a) The patches themselves are well abstracted.
> b) Some people are already using these patches as a baseline for
>    further AT91SAM9 ports.
> c) There is support for running this port under QEMU, allowing
>    wider testing.
>
> I would like to invite everyone with an interest in AT91SAM9 support
> for eCos to add themselves to the CC list for bug 1000819 and
> contribute to the review process.

I'm in.

> Let's make this a community effort.

We're using a AT91SAM9 running Linux for one project, but I've been
keeping an eye on the eCos port and would be happy to see it move
forward.

-- 
Grant Edwards               grant.b.edwards        Yow! Now I'm concentrating
                                  at               on a specific tank battle
                              gmail.com            toward the end of World
                                                   War II!

^ permalink raw reply	[flat|nested] 23+ messages in thread

* AW: eCos on AT91SAM9 - call to action
  2011-03-16 11:16 eCos on AT91SAM9 - call to action John Dallaway
  2011-03-16 13:40 ` Grant Edwards
@ 2011-03-16 14:31 ` Richard Rauch
  2011-03-16 17:07 ` Martin Laabs
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 23+ messages in thread
From: Richard Rauch @ 2011-03-16 14:31 UTC (permalink / raw)
  To: 'eCos Development List'

Hi,

I will join too.
We are still working on a port for Atmels AT91SAM9G45. We have based our
port on the patches from Evgeniy.
This port we will contribute soon, too.

Richard


Richard Rauch
email: rrauch@itrgmbh.de
 
_______________________________________________

ITR GmbH 
Informationstechnologie Rauch 
Schnepfenreuther Hauptstrasse 27b
D-90425 Nuernberg
 
phone:  +49 (0) 911 3784437
VoIP:    +49 (0) 911 495221739
web:     http://www.itrgmbh.de
email:   info@itrgmbh.de
 
Geschaeftsfuehrer: Richard Rauch
Handelsregister: Nuernberg HR B 21676
USt-Id Nr. : DE228051873
_______________________________________________

-----Ursprüngliche Nachricht-----
Von: ecos-devel-owner@ecos.sourceware.org
[mailto:ecos-devel-owner@ecos.sourceware.org] Im Auftrag von John Dallaway
Gesendet: Mittwoch, 16. März 2011 12:16
An: eCos Development List
Betreff: eCos on AT91SAM9 - call to action

All

There has been a lot of delay in getting AT91SAM9 support into the eCos
repository. Far too much delay. I think the best way forward now is to focus
on Evgeniy Dushitov's contribution (port for AT91SAM9263) initially:

  http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000819

This seems sensible because:

a) The patches themselves are well abstracted.
b) Some people are already using these patches as a baseline for
   further AT91SAM9 ports.
c) There is support for running this port under QEMU, allowing
   wider testing.

I would like to invite everyone with an interest in AT91SAM9 support for
eCos to add themselves to the CC list for bug 1000819 and contribute to the
review process. Let's make this a community effort.

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-16 11:16 eCos on AT91SAM9 - call to action John Dallaway
  2011-03-16 13:40 ` Grant Edwards
  2011-03-16 14:31 ` AW: " Richard Rauch
@ 2011-03-16 17:07 ` Martin Laabs
  2011-03-16 18:18   ` John Dallaway
  2011-03-17 10:14 ` Martin Laabs
  2011-03-17 13:13 ` John Eigelaar
  4 siblings, 1 reply; 23+ messages in thread
From: Martin Laabs @ 2011-03-16 17:07 UTC (permalink / raw)
  To: John Dallaway, ecos-devel

Hello,

my port based on the one of Evgeniy Dushitov at the very beginning. However 
- after some weeks I discovered that it was very hard to support more CPUs 
out of the AT91SAM9 family with that code-base.
So I started from beginning, reusing only some code snipplet from Evgeniy. 
I made the decision to split the port into three packages.

The at91sam9 package contains all the stuff that is common to all at91sam9 
CPUs. The at91sam9260 package contains the CPU specific 
definitions/function and the board package handles all the board specific 
things like pin assignment, linker scripts etc.

I used the atmel register definitions to generate the includes for the 
register that are common to every at91sam9 cpu and the cpu specific parts. 
The names are not equal to the ones in the at91 packages - but its worth 
the price for a (nearly) complete register description that is also equal 
to the ones in the datasheets.

I also changed the pin handling to a somewhat better readable style. I.e.

#define SPI1_NPCS0 
AT91SAM9_PIN(AT91SAM9_PIN_TYPE_PERIPH_A,AT91SAM9_PIN_PORT_B, 3)

Currently we ported the SPI driver in polled and dma mode (including the 
cache coherency handling), the serial driver and ethernet peripheral. I 
also wrote code for the SSI but this is to application specific.

Board support is limited to the AT91SAM9260EK and our specific board. 
However we plan to add the olimex eval board of the AT91SAM9260 soon.

The include files for all other processors are generated as well. So 
porting to other CPUs and/or boards should be no great deal.

Currently we use our own GIT server. But I think we can open it for 
publicly - at least reading access. I will ask for permission to open the 
GIT server and publish the URL if someone want to look on the code base.

Greetings,
  Martin Laabs

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-16 17:07 ` Martin Laabs
@ 2011-03-16 18:18   ` John Dallaway
  2011-03-16 18:35     ` Michael Bergandi
  0 siblings, 1 reply; 23+ messages in thread
From: John Dallaway @ 2011-03-16 18:18 UTC (permalink / raw)
  To: uni; +Cc: ecos-devel

Hi Martin

Martin Laabs wrote:

> my port based on the one of Evgeniy Dushitov at the very beginning.
> However - after some weeks I discovered that it was very hard to support
> more CPUs out of the AT91SAM9 family with that code-base.
> So I started from beginning, reusing only some code snipplet from
> Evgeniy. I made the decision to split the port into three packages.

[ snip ]

It sounds like your input will be valuable. Please do track the
discussion in bug 1000819 and comment where appropriate. To be clear, I
still think it makes sense that we focus on Evgeniy's contribution and
modify it where necessary during the review.

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-16 18:18   ` John Dallaway
@ 2011-03-16 18:35     ` Michael Bergandi
  0 siblings, 0 replies; 23+ messages in thread
From: Michael Bergandi @ 2011-03-16 18:35 UTC (permalink / raw)
  To: John Dallaway; +Cc: uni, ecos-devel

> Martin Laabs wrote:
>
>> my port based on the one of Evgeniy Dushitov at the very beginning.
>> However - after some weeks I discovered that it was very hard to support
>> more CPUs out of the AT91SAM9 family with that code-base.
>> So I started from beginning, reusing only some code snipplet from
>> Evgeniy. I made the decision to split the port into three packages.
>
> [ snip ]
>
> It sounds like your input will be valuable. Please do track the
> discussion in bug 1000819 and comment where appropriate. To be clear, I
> still think it makes sense that we focus on Evgeniy's contribution and
> modify it where necessary during the review.
>
> John Dallaway
> eCos maintainer
> http://www.dallaway.org.uk/john
>

I hope that a serious look at what Martin has to offer will be
considered before deciding on which contribution is used as a base.
IMHO, simply because an existing contribution is currently being used
in the community, that should not preclude a new contribution for
replacing it, if it is in fact a 'better' contribution. I haven't seen
or worked with either code base, so I have no vested interest either
way.

-- 
Mike

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-16 11:16 eCos on AT91SAM9 - call to action John Dallaway
                   ` (2 preceding siblings ...)
  2011-03-16 17:07 ` Martin Laabs
@ 2011-03-17 10:14 ` Martin Laabs
  2011-03-17 13:13 ` John Eigelaar
  4 siblings, 0 replies; 23+ messages in thread
From: Martin Laabs @ 2011-03-17 10:14 UTC (permalink / raw)
  To: eCos Development List

Hello,

as I announced I opened our git server for public read. The url is

git@git.assembla.com:SOMP-eCos.3.git

Have a look to packages/hal/arm/at91sam9/

Greetings,
  Martin Laabs

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-16 11:16 eCos on AT91SAM9 - call to action John Dallaway
                   ` (3 preceding siblings ...)
  2011-03-17 10:14 ` Martin Laabs
@ 2011-03-17 13:13 ` John Eigelaar
  2011-06-16 13:38   ` Frank Pagliughi
  4 siblings, 1 reply; 23+ messages in thread
From: John Eigelaar @ 2011-03-17 13:13 UTC (permalink / raw)
  To: John Dallaway; +Cc: eCos Development List

On 16/03/2011 13:16, John Dallaway wrote:
> All
>
> There has been a lot of delay in getting AT91SAM9 support into the eCos
> repository. Far too much delay. I think the best way forward now is to
> focus on Evgeniy Dushitov's contribution (port for AT91SAM9263) initially:
>
>    http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000819
>
> This seems sensible because:
>
> a) The patches themselves are well abstracted.
> b) Some people are already using these patches as a baseline for
>     further AT91SAM9 ports.
> c) There is support for running this port under QEMU, allowing
>     wider testing.
>
> I would like to invite everyone with an interest in AT91SAM9 support for
> eCos to add themselves to the CC list for bug 1000819 and contribute to
> the review process. Let's make this a community effort.
>
> John Dallaway
> eCos maintainer
> http://www.dallaway.org.uk/john
John
We, Keystone Electronic Solutions, have already done a Redboot port for 
the AT91SAM9X512 and AT91SAM9260 devices based on Evgeniy's patches if 
anybody is interested. I have no idea as to how up to date our patch is 
but I will be will to provide our source if anybody is interested.

I have also used the port to build some test applications for these 
devices but nothing enterprise level yet. We use the Redboot port as 
boot loader for our Linux platforms.

I have a personal copyright assignment for eCos, but will probably need 
a blanket company wide in order to contribute this work.

Regards
John Eigelaar

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-03-17 13:13 ` John Eigelaar
@ 2011-06-16 13:38   ` Frank Pagliughi
  2011-06-16 14:05     ` John Dallaway
  0 siblings, 1 reply; 23+ messages in thread
From: Frank Pagliughi @ 2011-06-16 13:38 UTC (permalink / raw)
  To: John Eigelaar; +Cc: John Dallaway, eCos Development List

On 03/17/2011 09:13 AM, John Eigelaar wrote:
> On 16/03/2011 13:16, John Dallaway wrote:
>> All
>>
>> There has been a lot of delay in getting AT91SAM9 support into the eCos
>> repository. Far too much delay. I think the best way forward now is to
>> focus on Evgeniy Dushitov's contribution (port for AT91SAM9263) 
>> initially:
>>
>>    http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000819
>>
>> This seems sensible because:
>>
>> a) The patches themselves are well abstracted.
>> b) Some people are already using these patches as a baseline for
>>     further AT91SAM9 ports.
>> c) There is support for running this port under QEMU, allowing
>>     wider testing.
>>
>> I would like to invite everyone with an interest in AT91SAM9 support for
>> eCos to add themselves to the CC list for bug 1000819 and contribute to
>> the review process. Let's make this a community effort.
>>
>> John Dallaway
>> eCos maintainer
>> http://www.dallaway.org.uk/john
> John
> We, Keystone Electronic Solutions, have already done a Redboot port 
> for the AT91SAM9X512 and AT91SAM9260 devices based on Evgeniy's 
> patches if anybody is interested. I have no idea as to how up to date 
> our patch is but I will be will to provide our source if anybody is 
> interested.
>
> I have also used the port to build some test applications for these 
> devices but nothing enterprise level yet. We use the Redboot port as 
> boot loader for our Linux platforms.
>
> I have a personal copyright assignment for eCos, but will probably 
> need a blanket company wide in order to contribute this work.
>
> Regards
> John Eigelaar
>

Hey All,

What's the latest news on the AT91 chip sets?  From Bugzilla it appears 
that there will be some reshuffling.  I've been away from eCos for a few 
years, but am looking to start a project with a legacy AT91 then 
hopefully move it to a SAM3 in a few months.

Has anyone started work on the SAM3's?
How can I help?

Frank

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-06-16 13:38   ` Frank Pagliughi
@ 2011-06-16 14:05     ` John Dallaway
  2011-06-16 14:16       ` John Eigelaar
  0 siblings, 1 reply; 23+ messages in thread
From: John Dallaway @ 2011-06-16 14:05 UTC (permalink / raw)
  To: Frank Pagliughi; +Cc: John Eigelaar, eCos Development List

Hi Frank

Frank Pagliughi wrote:

> On 03/17/2011 09:13 AM, John Eigelaar wrote:
> 
>> On 16/03/2011 13:16, John Dallaway wrote:
>> 
>>> All
>>>
>>> There has been a lot of delay in getting AT91SAM9 support into the eCos
>>> repository. Far too much delay. I think the best way forward now is to
>>> focus on Evgeniy Dushitov's contribution (port for AT91SAM9263)
>>> initially:
>>>
>>>    http://bugs.ecos.sourceware.org/show_bug.cgi?id=1000819
>>>
>>> This seems sensible because:
>>>
>>> a) The patches themselves are well abstracted.
>>> b) Some people are already using these patches as a baseline for
>>>     further AT91SAM9 ports.
>>> c) There is support for running this port under QEMU, allowing
>>>     wider testing.
>>>
>>> I would like to invite everyone with an interest in AT91SAM9 support for
>>> eCos to add themselves to the CC list for bug 1000819 and contribute to
>>> the review process. Let's make this a community effort.
>>>
>>> John Dallaway
>>> eCos maintainer
>>> http://www.dallaway.org.uk/john
>> 
>> John
>> We, Keystone Electronic Solutions, have already done a Redboot port
>> for the AT91SAM9X512 and AT91SAM9260 devices based on Evgeniy's
>> patches if anybody is interested. I have no idea as to how up to date
>> our patch is but I will be will to provide our source if anybody is
>> interested.
>>
>> I have also used the port to build some test applications for these
>> devices but nothing enterprise level yet. We use the Redboot port as
>> boot loader for our Linux platforms.
>>
>> I have a personal copyright assignment for eCos, but will probably
>> need a blanket company wide in order to contribute this work.
>>
>> Regards
>> John Eigelaar
> 
> Hey All,
> 
> What's the latest news on the AT91 chip sets?  From Bugzilla it appears
> that there will be some reshuffling.  I've been away from eCos for a few
> years, but am looking to start a project with a legacy AT91 then
> hopefully move it to a SAM3 in a few months.

Welcome back!

The information you quote above is still current and I will try to find
some time to push forward with the review of Evgeniy Dushitov's
contribution soon.

> Has anyone started work on the SAM3's?
> How can I help?

I am not aware of anyone working with eCos on AT91SAM3 hardware. There
are existing Cortex-M variant ports for eCos on LM3S8xx, LPC17xx and
STM32 processor families so I would expect variant support for AT91SAM3
to be fairly straightforward. Hopefully some of the existing AT91
drivers can be reused for AT91SAM3.

I am sure that others within the eCos community will be interested in
variant support for AT91SAM3. Be sure to let us all know if/when you
start work on this.

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-06-16 14:05     ` John Dallaway
@ 2011-06-16 14:16       ` John Eigelaar
  2011-06-16 14:27         ` eCos on AT91SAM3 [ was Re: eCos on AT91SAM9 - call to action ] John Dallaway
  2011-06-16 14:29         ` eCos on AT91SAM9 - call to action Frank Pagliughi
  0 siblings, 2 replies; 23+ messages in thread
From: John Eigelaar @ 2011-06-16 14:16 UTC (permalink / raw)
  To: John Dallaway; +Cc: Frank Pagliughi, eCos Development List

> > Has anyone started work on the SAM3's?
> > How can I help?
> 
> I am not aware of anyone working with eCos on AT91SAM3 hardware. There
> are existing Cortex-M variant ports for eCos on LM3S8xx, LPC17xx and
> STM32 processor families so I would expect variant support for AT91SAM3
> to be fairly straightforward. Hopefully some of the existing AT91
> drivers can be reused for AT91SAM3.
> 
> I am sure that others within the eCos community will be interested in
> variant support for AT91SAM3. Be sure to let us all know if/when you
> start work on this.


We, Keystone Electronic Solutions, did a port for the AT91SAM3U. The
port was completed and was using most of the AT91 drivers from the SAM7
family. We have, however, decided to use an STM32 part instead of the
SAM3. The port is still available if anybody is interested

> John Dallaway
> eCos maintainer
> http://www.dallaway.org.uk/john


^ permalink raw reply	[flat|nested] 23+ messages in thread

* eCos on AT91SAM3 [ was Re: eCos on AT91SAM9 - call to action ]
  2011-06-16 14:16       ` John Eigelaar
@ 2011-06-16 14:27         ` John Dallaway
  2011-06-16 14:29         ` eCos on AT91SAM9 - call to action Frank Pagliughi
  1 sibling, 0 replies; 23+ messages in thread
From: John Dallaway @ 2011-06-16 14:27 UTC (permalink / raw)
  To: John Eigelaar; +Cc: Frank Pagliughi, eCos Development List

Hi John

John Eigelaar wrote:

>>> Has anyone started work on the SAM3's?
>>> How can I help?
>> 
>> I am not aware of anyone working with eCos on AT91SAM3 hardware. There
>> are existing Cortex-M variant ports for eCos on LM3S8xx, LPC17xx and
>> STM32 processor families so I would expect variant support for AT91SAM3
>> to be fairly straightforward. Hopefully some of the existing AT91
>> drivers can be reused for AT91SAM3.
>>
>> I am sure that others within the eCos community will be interested in
>> variant support for AT91SAM3. Be sure to let us all know if/when you
>> start work on this.
> 
> We, Keystone Electronic Solutions, did a port for the AT91SAM3U. The
> port was completed and was using most of the AT91 drivers from the SAM7
> family. We have, however, decided to use an STM32 part instead of the
> SAM3. The port is still available if anybody is interested

Very interesting. Are you able to contribute the port to the eCos
project? This would involve assignment of copyright. Details at:

   http://ecos.sourceware.org/contrib.html

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: eCos on AT91SAM9 - call to action
  2011-06-16 14:16       ` John Eigelaar
  2011-06-16 14:27         ` eCos on AT91SAM3 [ was Re: eCos on AT91SAM9 - call to action ] John Dallaway
@ 2011-06-16 14:29         ` Frank Pagliughi
  2011-06-20 15:18           ` Eagle 100 (Stellaris LM3S6918) Frank Pagliughi
  1 sibling, 1 reply; 23+ messages in thread
From: Frank Pagliughi @ 2011-06-16 14:29 UTC (permalink / raw)
  To: John Eigelaar; +Cc: John Dallaway, eCos Development List

On 06/16/2011 10:16 AM, John Eigelaar wrote:
>>> Has anyone started work on the SAM3's?
>>> How can I help?
>> I am not aware of anyone working with eCos on AT91SAM3 hardware. There
>> are existing Cortex-M variant ports for eCos on LM3S8xx, LPC17xx and
>> STM32 processor families so I would expect variant support for AT91SAM3
>> to be fairly straightforward. Hopefully some of the existing AT91
>> drivers can be reused for AT91SAM3.
>>
>> I am sure that others within the eCos community will be interested in
>> variant support for AT91SAM3. Be sure to let us all know if/when you
>> start work on this.
>
> We, Keystone Electronic Solutions, did a port for the AT91SAM3U. The
> port was completed and was using most of the AT91 drivers from the SAM7
> family. We have, however, decided to use an STM32 part instead of the
> SAM3. The port is still available if anybody is interested
>

Errr. Yeah. I guess you could send it to me. But maybe it would be 
better to formally submit it to eCos, and I can jump on it to test, 
validate, and patch if necessary. Plus I'm looking more to the SAM3S for 
this project, so could use your port to expand the offerings to a couple 
different SAM3 chip sets.

But I suppose the sooner the better. I'm also considering the STM32 for 
the upgrade, so better to get this done before I change my mind, like 
you did!

Thanks,
Frank

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Eagle 100 (Stellaris LM3S6918)
  2011-06-16 14:29         ` eCos on AT91SAM9 - call to action Frank Pagliughi
@ 2011-06-20 15:18           ` Frank Pagliughi
  2011-06-20 16:17             ` Stanislav Meduna
  2011-06-21 11:05             ` John Dallaway
  0 siblings, 2 replies; 23+ messages in thread
From: Frank Pagliughi @ 2011-06-20 15:18 UTC (permalink / raw)
  To: John Dallaway; +Cc: eCos Development List

Hi, I was going to grab my SAM3 eval boards from the closet, but to make 
space for them on my desk I had to put away the Micromint Eagle 100 
board that was sitting there. Then got to thinking the Eagle 100 would 
be a really good board for eCos. It's a COTS board around a Stellaris 
LM3S6918 with a decent amount of I/O. I'm not an Ethernet guy, so I 
probably couldn't get networking going on the board, but could probably 
manage the rest of the port pretty quickly.

I looked at the existing Stellaris eCos port for the lm3s8xx, and 
thought to make a corresponding lm3s6xxx. But on closer inspection, I 
found 19 processors in the 6000 series, all with different memory sizes 
and I/O. The only thing they share in common is that they have Ethernet 
but not CAN. The 8000 series has Ethernet and CAN. The 5000 series has 
CAN and USB. And so on...

So the breakdown of the Stellaris series doesn't exactly mesh with eCos 
directory structure, since the chip internals may have more in common 
with chips across the different series than within it.

So I'm at a loss on how to proceed. Any advice?

Thanks,
Frank

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Eagle 100 (Stellaris LM3S6918)
  2011-06-20 15:18           ` Eagle 100 (Stellaris LM3S6918) Frank Pagliughi
@ 2011-06-20 16:17             ` Stanislav Meduna
  2011-06-21 11:05             ` John Dallaway
  1 sibling, 0 replies; 23+ messages in thread
From: Stanislav Meduna @ 2011-06-20 16:17 UTC (permalink / raw)
  To: ecos-devel

On 20.06.2011 17:18, Frank Pagliughi wrote:

> I'm not an Ethernet guy, so I probably couldn't get networking
> going on the board, but could probably manage the rest of the
> port pretty quickly.

Stellaris processors come with a StellarisWare driver library
(opensource, but only allowed to be used with their processor),
some of them even do have it in the processor's ROM. I don't know
the LM3S6918, but I worked with LM3S9B96 and getting an usable
Ethernet driver was a half day's job.

However, its license is 'You may not combine this software
with "viral" open-source software in order to form a larger
program' - i.e. if one intends to write something that can
be copyright-assigned and can become part of the 'official'
eCos, it can't be used.

> So the breakdown of the Stellaris series doesn't exactly mesh with eCos
> directory structure, since the chip internals may have more in common
> with chips across the different series than within it.
> 
> So I'm at a loss on how to proceed. Any advice?

Forget that the peripherals are part of the chip and treat
them as devs/eth/... etc with dependencies on the
HAL/variant/whatever.

There are more gotchas, the chips come in quite a few
revisions that can differ significantly in what is in ROM,
what bugs are present (sometime grave ones) etc.

-- 
                                  Stano

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Eagle 100 (Stellaris LM3S6918)
  2011-06-20 15:18           ` Eagle 100 (Stellaris LM3S6918) Frank Pagliughi
  2011-06-20 16:17             ` Stanislav Meduna
@ 2011-06-21 11:05             ` John Dallaway
  2011-06-21 16:34               ` Christophe Coutand
  1 sibling, 1 reply; 23+ messages in thread
From: John Dallaway @ 2011-06-21 11:05 UTC (permalink / raw)
  To: Frank Pagliughi, Christophe Coutand; +Cc: eCos Development List

Hi Frank and Christophe

Frank Pagliughi wrote:

> Hi, I was going to grab my SAM3 eval boards from the closet, but to make
> space for them on my desk I had to put away the Micromint Eagle 100
> board that was sitting there. Then got to thinking the Eagle 100 would
> be a really good board for eCos. It's a COTS board around a Stellaris
> LM3S6918 with a decent amount of I/O. I'm not an Ethernet guy, so I
> probably couldn't get networking going on the board, but could probably
> manage the rest of the port pretty quickly.
> 
> I looked at the existing Stellaris eCos port for the lm3s8xx, and
> thought to make a corresponding lm3s6xxx. But on closer inspection, I
> found 19 processors in the 6000 series, all with different memory sizes
> and I/O. The only thing they share in common is that they have Ethernet
> but not CAN. The 8000 series has Ethernet and CAN. The 5000 series has
> CAN and USB. And so on...
> 
> So the breakdown of the Stellaris series doesn't exactly mesh with eCos
> directory structure, since the chip internals may have more in common
> with chips across the different series than within it.
> 
> So I'm at a loss on how to proceed. Any advice?

A quick glance of the parametric search table suggests that the various
sub-families of LM3S parts do indeed offer different permutations of
on-chip peripherals. I expect that all these parts can be accommodated
by extending the existing eCos LM3S8xx variant HAL package.

Christophe, do you concur?

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* RE: Eagle 100 (Stellaris LM3S6918)
  2011-06-21 11:05             ` John Dallaway
@ 2011-06-21 16:34               ` Christophe Coutand
  2011-06-23 14:31                 ` John Dallaway
  0 siblings, 1 reply; 23+ messages in thread
From: Christophe Coutand @ 2011-06-21 16:34 UTC (permalink / raw)
  To: John Dallaway, Frank Pagliughi; +Cc: eCos Development List

Hi John and Frank

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.

John, is that way off?

Christophe


-----Original Message-----
From: ecos-devel-owner@ecos.sourceware.org [mailto:ecos-devel-owner@ecos.sourceware.org] On Behalf Of John Dallaway
Sent: 21. juni 2011 13:04
To: Frank Pagliughi; Christophe Coutand
Cc: eCos Development List
Subject: Re: Eagle 100 (Stellaris LM3S6918)

Hi Frank and Christophe

Frank Pagliughi wrote:

> Hi, I was going to grab my SAM3 eval boards from the closet, but to make
> space for them on my desk I had to put away the Micromint Eagle 100
> board that was sitting there. Then got to thinking the Eagle 100 would
> be a really good board for eCos. It's a COTS board around a Stellaris
> LM3S6918 with a decent amount of I/O. I'm not an Ethernet guy, so I
> probably couldn't get networking going on the board, but could probably
> manage the rest of the port pretty quickly.
> 
> I looked at the existing Stellaris eCos port for the lm3s8xx, and
> thought to make a corresponding lm3s6xxx. But on closer inspection, I
> found 19 processors in the 6000 series, all with different memory sizes
> and I/O. The only thing they share in common is that they have Ethernet
> but not CAN. The 8000 series has Ethernet and CAN. The 5000 series has
> CAN and USB. And so on...
> 
> So the breakdown of the Stellaris series doesn't exactly mesh with eCos
> directory structure, since the chip internals may have more in common
> with chips across the different series than within it.
> 
> So I'm at a loss on how to proceed. Any advice?

A quick glance of the parametric search table suggests that the various
sub-families of LM3S parts do indeed offer different permutations of
on-chip peripherals. I expect that all these parts can be accommodated
by extending the existing eCos LM3S8xx variant HAL package.

Christophe, do you concur?

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Eagle 100 (Stellaris LM3S6918)
  2011-06-21 16:34               ` Christophe Coutand
@ 2011-06-23 14:31                 ` John Dallaway
  2011-06-23 16:48                   ` Frank Pagliughi
  0 siblings, 1 reply; 23+ messages in thread
From: John Dallaway @ 2011-06-23 14:31 UTC (permalink / raw)
  To: Christophe Coutand, Frank Pagliughi; +Cc: eCos Development List

Hi Christophe and Frank

Christophe Coutand wrote:

> 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.

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.

Regards

John Dallaway
eCos maintainer
http://www.dallaway.org.uk/john

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Eagle 100 (Stellaris LM3S6918)
  2011-06-23 14:31                 ` John Dallaway
@ 2011-06-23 16:48                   ` Frank Pagliughi
  2011-06-23 17:57                     ` Christophe Coutand
  2011-07-10 20:38                     ` Ilija Kocho
  0 siblings, 2 replies; 23+ messages in thread
From: Frank Pagliughi @ 2011-06-23 16:48 UTC (permalink / raw)
  To: John Dallaway; +Cc: Christophe Coutand, eCos Development List

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. 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.
> 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 files.

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.

> Regards
>
> John Dallaway
> eCos maintainer
> http://www.dallaway.org.uk/john
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* RE: Eagle 100 (Stellaris LM3S6918)
  2011-06-23 16:48                   ` Frank Pagliughi
@ 2011-06-23 17:57                     ` Christophe Coutand
  2011-07-10 20:38                     ` Ilija Kocho
  1 sibling, 0 replies; 23+ messages in thread
From: Christophe Coutand @ 2011-06-23 17:57 UTC (permalink / raw)
  To: Frank Pagliughi, John Dallaway; +Cc: eCos Development List

Hi Frank,

> -----Original Message-----
> From: Frank Pagliughi [mailto:fpagliughi@mindspring.com]
> Sent: 23. juni 2011 18:48
> To: John Dallaway
> Cc: Christophe Coutand; eCos Development List
> Subject: Re: Eagle 100 (Stellaris LM3S6918)
> 
> 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.
> 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.
> > 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.

The same dilemma applies to the lm3s8xx package that covers 9 chips. It's not possible to guarantee that the package will work on all devices without any bug fixing but I think the priority is to avoid duplicating code. 

> (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 files.

One way to workaround that is to keep the memory layout in the board specific package. You can have something like:

lm3s\lm3s6xxx                      -> code common to all 19 chips
lm3s\ek_eagle100\                  -> board specific code
lm3s\ek_eagle100\include\pkgconf\  -> memory layout
 
> 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.
> 
> > Regards
> >
> > John Dallaway
> > eCos maintainer
> > http://www.dallaway.org.uk/john
> >


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Eagle 100 (Stellaris LM3S6918)
  2011-06-23 16:48                   ` Frank Pagliughi
  2011-06-23 17:57                     ` Christophe Coutand
@ 2011-07-10 20:38                     ` Ilija Kocho
  2011-07-12  8:57                       ` Christophe Coutand
  1 sibling, 1 reply; 23+ messages in thread
From: Ilija Kocho @ 2011-07-10 20:38 UTC (permalink / raw)
  To: ecos-devel

Hi  all

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
controller family.

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
layout issues.
      - file name segments such as MLT files
      - defines for memory size and layout

You can find sources at
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001187
( 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.

Regards
Ilija



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.
>>> 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.
>> 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
> files.
>
> 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.
>
>> Regards
>>
>> John Dallaway
>> eCos maintainer
>> http://www.dallaway.org.uk/john
>>
>
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* RE: Eagle 100 (Stellaris LM3S6918)
  2011-07-10 20:38                     ` Ilija Kocho
@ 2011-07-12  8:57                       ` Christophe Coutand
  2011-07-13 14:52                         ` Ilija Kocho
  0 siblings, 1 reply; 23+ messages in thread
From: Christophe Coutand @ 2011-07-12  8:57 UTC (permalink / raw)
  To: Ilija Kocho, ecos-devel

Hi Ilija,

1. Ideally as a user I prefer to select the device from a menu and get all the characteristics propagated from the selection. The CDL could have a component 
"Device characteristics" that lists all the peripherals included for the selected device, with internal memory size etc..). For a family with large number 
of sub-variants it can be a tedious work to write the CDL. To mitigate it in the lm3s HAL, some of the work is done in .h file (to select the peripherals for instance). 
The drawback is that it is no longer available from the configuration GUI therefore not visible to the users and also developers at first glance. If a common solution should be approved, I hope it will not add too much extra effort when developing a new port.

3. If none of the device can have external memory it makes sense to have the layout included in the variant HAL otherwise I am not sure it is worth the effort.

Regards,
Christophe

> -----Original Message-----
> From: ecos-devel-owner@ecos.sourceware.org [mailto:ecos-devel-
> owner@ecos.sourceware.org] On Behalf Of Ilija Kocho
> Sent: 10. juli 2011 22:39
> To: ecos-devel@ecos.sourceware.org
> Subject: Re: Eagle 100 (Stellaris LM3S6918)
> 
> Hi  all
> 
> 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
> controller family.
> 
> 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
> layout issues.
>       - file name segments such as MLT files
>       - defines for memory size and layout
> 
> You can find sources at
> http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001187
> ( 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.
> 
> Regards
> Ilija
> 
> 
> 
> 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.
> >>> 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.
> >> 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
> > files.
> >
> > 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.
> >
> >> Regards
> >>
> >> John Dallaway
> >> eCos maintainer
> >> http://www.dallaway.org.uk/john
> >>
> >
> >


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Eagle 100 (Stellaris LM3S6918)
  2011-07-12  8:57                       ` Christophe Coutand
@ 2011-07-13 14:52                         ` Ilija Kocho
  0 siblings, 0 replies; 23+ messages in thread
From: Ilija Kocho @ 2011-07-13 14:52 UTC (permalink / raw)
  To: ecos-devel

HI Christophe

Thank you for comments.

On 12.07.2011 10:53, Christophe Coutand wrote:
> Hi Ilija,
>
> 1. Ideally as a user I prefer to select the device from a menu and get all the characteristics propagated from the selection.

Menu may get veery big if you have hundreds (or even tens) of devices.
But if there's a system in naming you can use it in order to break the
menu in several small menus. But I saw Stellaris device portfolio and
now I think I understand you better...

>  The CDL could have a component 
> "Device characteristics" that lists all the peripherals included for the selected device, with internal memory size etc..). For a family with large number 
> of sub-variants it can be a tedious work to write the CDL.

Indeed, it can be challenging, but usually they all have a subset of a
same set of peripherals.
However there may be other reason to break them in several variants. For
instance memory size. Tiny devices (RAM <= 16KiB) like one you have
contributed recently may need different set-up than ones with larger
memory (RAM >= 32KiB). Also address different users.

>  To mitigate it in the lm3s HAL, some of the work is done in .h file (to select the peripherals for instance). 
> The drawback is that it is no longer available from the configuration GUI therefore not visible to the users and also developers at first glance. If a common solution should be approved, I hope it will not add too much extra effort when developing a new port.
> 3. If none of the device can have external memory it makes sense to have the layout included in the variant HAL otherwise I am not sure it is worth the effort.

I would say the variant CDL should be _preferred_ place for start-up
type and memory layout for "entirely single chip families". I wish I
would have done it in my previous ports.

And in order to illustrate it's usage for families that include external
memory I am presenting the CDL snippets below.

The variant CDL contains the familiar CYG_HAL_STARTUP, only promoted in
cdl_component. It contains CYG_HAL_STARTUP_VAR optiob that manages
on-chip memory resources and allows to be overriden by
CYG_HAL_STARTUP_PLF. For single chip members there will be no
CYG_HAL_STARTUP_PLF, and for members with external memory there will be
something like one in "Platform CDL" below. It contains entry ByVariant
that, when selected, enables CYG_HAL_STARTUP_VAR. Startups are
accompannies by respective memory layout options (not presented).

The result is a single, variant-wide copy of CDL components/options for
management of on-chip memory, and incremental CDL components/options for
board specific (external) memory resources where needed.

--- Variant CDL
--------------------------------------------------------------

    cdl_component CYG_HAL_STARTUP {
        display       "Startup type"
        flavor        data
        calculated  {
            (CYG_HAL_STARTUP_PLF && (CYG_HAL_STARTUP_PLF!="ByVariant")) ?
                                CYG_HAL_STARTUP_PLF : CYG_HAL_STARTUP_VAR
        }
        no_define
        define -file system.h CYG_HAL_STARTUP
        description   "
        Startup type defines what type of application shall be built.
        Startup type  can be defined by variant (CYG_HAL_STARTUP_VAR) or
        platform (CYG_HAL_STARTUP_PLF). If CYG_HAL_STARTUP_PLF
        is defined and not equal to 'ByVariant' then it shall
        override CYG_HAL_STARTUP_VAR."
   
        cdl_option CYG_HAL_STARTUP_VAR {
            display       "By variant"
            flavor        data
            default_value {"ROM"}
            legal_values  {"ROM" "SRAM"}
            no_define
            active_if ((!CYG_HAL_STARTUP_PLF) || \
                        (CYG_HAL_STARTUP_PLF=="ByVariant"))
            description   "Note: Variant startup type can be overriden
by Platform Startup Type."
        }
    }

--- Platform with external memory CDL
----------------------------------------

    cdl_option CYG_HAL_STARTUP_PLF {
        display       "By platform"
        flavor        data
        parent        CYG_HAL_STARTUP
        default_value {"RAM"}
        legal_values  {"ByVariant" "RAM" "JTAG"}
        no_define       
        description   "
        Startup tupes provided by the platform, in addition to variant
startup types.
        If 'ByVariant' is selected, then
        startup type shall be selected from the variant
(CYG_HAL_STARTUP_VAR).
        'JTAG' startup builds application similar to 'SRAM' but will use
external RAM.
        'RAM' startup builds application
        intended for loading by RedBoot into external RAM."
    }


Regards
Ilija


> Regards,
> Christophe
>
>> -----Original Message-----
>> From: ecos-devel-owner@ecos.sourceware.org [mailto:ecos-devel-
>> owner@ecos.sourceware.org] On Behalf Of Ilija Kocho
>> Sent: 10. juli 2011 22:39
>> To: ecos-devel@ecos.sourceware.org
>> Subject: Re: Eagle 100 (Stellaris LM3S6918)
>>
>> Hi  all
>>
>> 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
>> controller family.
>>
>> 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
>> layout issues.
>>       - file name segments such as MLT files
>>       - defines for memory size and layout
>>
>> You can find sources at
>> http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001187
>> ( 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.
>>
>> Regards
>> Ilija
>>
>>
>>
>> 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.
>>>>> 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.
>>>> 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
>>> files.
>>>
>>> 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.
>>>
>>>> Regards
>>>>
>>>> John Dallaway
>>>> eCos maintainer
>>>> http://www.dallaway.org.uk/john
>>>>
>>>

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2011-07-13 14:52 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-16 11:16 eCos on AT91SAM9 - call to action John Dallaway
2011-03-16 13:40 ` Grant Edwards
2011-03-16 14:31 ` AW: " Richard Rauch
2011-03-16 17:07 ` Martin Laabs
2011-03-16 18:18   ` John Dallaway
2011-03-16 18:35     ` Michael Bergandi
2011-03-17 10:14 ` Martin Laabs
2011-03-17 13:13 ` John Eigelaar
2011-06-16 13:38   ` Frank Pagliughi
2011-06-16 14:05     ` John Dallaway
2011-06-16 14:16       ` John Eigelaar
2011-06-16 14:27         ` eCos on AT91SAM3 [ was Re: eCos on AT91SAM9 - call to action ] John Dallaway
2011-06-16 14:29         ` eCos on AT91SAM9 - call to action Frank Pagliughi
2011-06-20 15:18           ` Eagle 100 (Stellaris LM3S6918) Frank Pagliughi
2011-06-20 16:17             ` Stanislav Meduna
2011-06-21 11:05             ` John Dallaway
2011-06-21 16:34               ` Christophe Coutand
2011-06-23 14:31                 ` John Dallaway
2011-06-23 16:48                   ` Frank Pagliughi
2011-06-23 17:57                     ` Christophe Coutand
2011-07-10 20:38                     ` Ilija Kocho
2011-07-12  8:57                       ` Christophe Coutand
2011-07-13 14:52                         ` Ilija Kocho

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).