public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* RE: [ECOS] malloc vs. new
@ 2002-06-25  4:51 Koeller, T.
  2002-06-25  7:00 ` Tim Drury
                   ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Koeller, T. @ 2002-06-25  4:51 UTC (permalink / raw)
  To: 'Scott Dattalo'; +Cc: ecos-discuss (E-Mail)

Scott,

it may be of interest to you that I did quite a lot of work on the
AT91/EB40. I separated the existing HAL into an AT91-specific variant
HAL and a EB40-specific platform HAL. This is the standard ecos way of
dealing with platforms that are variations of a common underlying
archtecture. You can then create a platform HAL with minimum effort,
and there you can set your platform's parameters to anything you like
without changing the AT91 HAL. This also means that you do not have to
release your source code under the GPL, as would be the case if you just
modify an existing component.

I submitted my changes to the ecos-patches mailing list, but the haven't
been approved yet. There's also a newer, improved version that I did not
submit yet, because such submissions are not currently processed. However,
if anyone is interested, I'd like to share my code with him/her.

tk

> -----Original Message-----
> From: Scott Dattalo [mailto:scott@dattalo.com]
> Sent: Monday, June 24, 2002 9:23 PM
> Cc: ecos-discuss@sources.redhat.com
> Subject: RE: [ECOS] malloc vs. new
> 
> 
> On Mon, 24 Jun 2002, Scott Dattalo wrote:
> 
> <snip>
> 
> I fixed my memory problem.
> 
> It turns out that my application is big. It's too big to fit into the
> memory footprint provided bythe At91EB40 evaluation board. I 
> know in the
> future that I will be putting the application in different 
> hardware, but
> I'm using the eCos configuration that's available for the 
> EB40. To make a
> long story short, the memory foot print is defined for the AT91EB40 in
> here:
> 
> ecos/packages/hal/arm/at91/current/include/pkgconf/
> 
> The RAM size is 0x80000. To work around this, I made a backup 
> of pkgconf/ 
> and changed all references of 0x80000 to 0x200000 and that works!
> 
> I know that one shouldn't go around trampling on the ecos 
> sources in such 
> a way. But, what is the preferred way to change the memory 
> foot print? 
> Should I create a new cdl for my hardware based on (say) the 
> arm/at91/ and 
> edit those hardware-specific changes? It doesn't appear that 
> fundamental 
> configuration such as this can be changed in ecos.ecc. (You 
> *can* change 
> the size of the memalloc heap, but you can't make it bigger than the 
> memory footprint that's defined in pkgconf/, AFAICT).
> 
> Scott
> 
> 
> -- 
> Before posting, please read the FAQ: 
> http://sources.redhat.com/fom/ecos
> and search the list archive: http://sources.redhat.com/ml/ecos-discuss
> 
----------------------------------------------- 
Thomas Koeller, Software Development 

Basler Vision Technologies 
An der Strusbek 60-62 
22926 Ahrensburg 
Germany 

Tel +49 (4102) 463-390 
Fax +49 (4102) 463-46390

mailto:Thomas.Koeller@baslerweb.com 
http://www.baslerweb.com 



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 19+ messages in thread
* RE: [ECOS] malloc vs. new
@ 2002-06-27  1:48 Koeller, T.
  0 siblings, 0 replies; 19+ messages in thread
From: Koeller, T. @ 2002-06-27  1:48 UTC (permalink / raw)
  To: 'Tim Drury'; +Cc: ecos-discuss (E-Mail)

I assume you mean the eb40 platform hal ;-)
How's about a patch?
tk

> -----Original Message-----
> From: Tim Drury [mailto:tdrury@siliconmotorsports.com]
> Sent: Thursday, June 27, 2002 4:31 AM
> To: Koeller, T.
> Subject: Re: [ECOS] malloc vs. new
> 
> hal_diag_led(int mask) was missing from the at91 platform
> hal_diag.c file.  I added it in.
> 
> -tim
>
----------------------------------------------- 
Thomas Koeller, Software Development 

Basler Vision Technologies 
An der Strusbek 60-62 
22926 Ahrensburg 
Germany 

Tel +49 (4102) 463-390 
Fax +49 (4102) 463-46390

mailto:Thomas.Koeller@baslerweb.com 
http://www.baslerweb.com 



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 19+ messages in thread
* RE: [ECOS] malloc vs. new
@ 2002-06-26  9:12 Koeller, T.
  0 siblings, 0 replies; 19+ messages in thread
From: Koeller, T. @ 2002-06-26  9:12 UTC (permalink / raw)
  To: 'Tim Drury'; +Cc: ecos-discuss (E-Mail)

I think this is what hal_diag_led() is for. It takes
an int argument specifiying which LEDs should be on.
Have alook at it!

tk

> -----Original Message-----
> From: Tim Drury [mailto:tdrury@siliconmotorsports.com]
> Sent: Wednesday, June 26, 2002 5:17 PM
> To: ecos-discuss (E-Mail)
> Subject: Re: [ECOS] malloc vs. new
> 
> 
> ...
> I can test the eb40a stuff.  I also added a led_on() and
> led_off() for turning individual LEDs on and off.
> ...

----------------------------------------------- 
Thomas Koeller, Software Development 

Basler Vision Technologies 
An der Strusbek 60-62 
22926 Ahrensburg 
Germany 

Tel +49 (4102) 463-390 
Fax +49 (4102) 463-46390

mailto:Thomas.Koeller@baslerweb.com 
http://www.baslerweb.com 



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 19+ messages in thread
* RE: [ECOS] malloc vs. new
@ 2002-06-26  3:38 Koeller, T.
  2002-06-26  8:57 ` Tim Drury
  0 siblings, 1 reply; 19+ messages in thread
From: Koeller, T. @ 2002-06-26  3:38 UTC (permalink / raw)
  To: 'Tim Drury'; +Cc: ecos-discuss (E-Mail)

Hi Tim,

first of all, before doing anything else you should get
the latest version of the patch that I just uploaded to
ecos-patches@sources.redhat.com. Now to your questions:

1) Yes, this is a platform-dependent parameter and
   therefore should go into the platform cdl file.

2) The short answer is that I just took the LED code as
   it were without modifying it. In the latest version I
   implemented the function hal_diag_led() which the
   original code defined in hal_diag.h, but did not
   actually implement. It tries to get setting those
   LEDs right by using a lookup table for the PIO bits,
   but I haven't tested it so far - maybe you can?

3) Yes, I agree. These definitions should go into
   plf_io.h.

4) Generally, everything platform-specific should go
   into that platform's directory and thus become a
   part of the platform hal package.

tk

> -----Original Message-----
> From: Tim Drury [mailto:tdrury@siliconmotorsports.com]
> Sent: Wednesday, June 26, 2002 6:19 AM
> To: Koeller, T.
> Cc: ecos-discuss (E-Mail)
> Subject: Re: [ECOS] malloc vs. new
> 
> 
> 
> Thomas,
> 
> I copied your eb40 directory and created an eb40a directory.  
> I changed
> everything over to match the eb40a eval board, but I have a 
> couple questions:
> 
> 1) in var/current/cdl/hal_arm_at91.cdl the CPU clock speed is 
> defined.  But
> the eb40a runs at 66MHz, not the 32.768MHz of the eb40.  Should I pull
> that constant out and put it in 
> eb40*/var/current/cdl/hal_arm_at91_eb40*.cdl?
> 
> 2) eb40/current/src/eb40_misc.c is confusing.  The eb40 
> schematic shows that
> pulling a PIO pin low turns the LED on, but the code shows 
> setting the SODR
> bit (setting PIO pin high) turning the LED on.  And what in 
> the world does
> _at91_led() really do? It looks like it just strobes the data 
> LED on briefly.
> What is that used for?
> 
> 3) also about eb40_misc.c: both function take an 'int led' 
> argument which is
> supposed to be a correctly bit-mapped value to the LED/PIO 
> pins.  Shouldn't
> we have some #defines for the LEDs so a user can call, for example:
> set_leds(LED2 | LED4);
> Keep in mind the eb40a has 8 LEDs and none are labelled CLOCK and DATA
> like the eb40.  Where would be the appropriate place to put 
> these #defines?
> 
> 4) var/current/include/hal_platform_setup.h.  This file will 
> also change for
> eb40a.  Should it be moved to eb40a/current/include?  Mostly just the
> memory mapping data.  Oddly enough, the wait states for the Flash are
> the same for the eb40a and the eb40.  The eb40a is running at 66MHz,
> but the flash chip (AT49BV1614) is also faster and the numbers work 
> out the same:
> tOE = 90ns -> 90ns/15.2ns = 5.92 ~= 6 WS before
> tDF = 25ns -> 25ns/15.2ns = 1.64 ~= 2 WS after
> 
> The ram wait states (1WS before and 1 WS after) has not been tested.
> I originally calculated this to be correct for the eb40, but 
> Atmel said to
> use 3WS before and 4WS after which I think is overkill.  I'll 
> test this when
> I get this port to compile.
> 
> Thanks,
> 
> -tim
> 
> 
> On Tuesday 25 June 2002 05:33 am, Koeller, T. wrote:
> > Scott,
> >
> > it may be of interest to you that I did quite a lot of work on the
> > AT91/EB40. I separated the existing HAL into an 
> AT91-specific variant
> > HAL and a EB40-specific platform HAL. This is the standard 
> ecos way of
> > dealing with platforms that are variations of a common underlying
> > archtecture. You can then create a platform HAL with minimum effort,
> > and there you can set your platform's parameters to 
> anything you like
> > without changing the AT91 HAL. This also means that you do 
> not have to
> > release your source code under the GPL, as would be the 
> case if you just
> > modify an existing component.
> >
> > I submitted my changes to the ecos-patches mailing list, 
> but the haven't
> > been approved yet. There's also a newer, improved version 
> that I did not
> > submit yet, because such submissions are not currently 
> processed. However,
> > if anyone is interested, I'd like to share my code with him/her.
> >
> > tk
> >
> > > -----Original Message-----
> > > From: Scott Dattalo [mailto:scott@dattalo.com]
> > > Sent: Monday, June 24, 2002 9:23 PM
> > > Cc: ecos-discuss@sources.redhat.com
> > > Subject: RE: [ECOS] malloc vs. new
> > >
> > >
> > > On Mon, 24 Jun 2002, Scott Dattalo wrote:
> > >
> > > <snip>
> > >
> > > I fixed my memory problem.
> > >
> > > It turns out that my application is big. It's too big to 
> fit into the
> > > memory footprint provided bythe At91EB40 evaluation board. I
> > > know in the
> > > future that I will be putting the application in different
> > > hardware, but
> > > I'm using the eCos configuration that's available for the
> > > EB40. To make a
> > > long story short, the memory foot print is defined for 
> the AT91EB40 in
> > > here:
> > >
> > > ecos/packages/hal/arm/at91/current/include/pkgconf/
> > >
> > > The RAM size is 0x80000. To work around this, I made a backup
> > > of pkgconf/
> > > and changed all references of 0x80000 to 0x200000 and that works!
> > >
> > > I know that one shouldn't go around trampling on the ecos
> > > sources in such
> > > a way. But, what is the preferred way to change the memory
> > > foot print?
> > > Should I create a new cdl for my hardware based on (say) the
> > > arm/at91/ and
> > > edit those hardware-specific changes? It doesn't appear that
> > > fundamental
> > > configuration such as this can be changed in ecos.ecc. (You
> > > *can* change
> > > the size of the memalloc heap, but you can't make it 
> bigger than the
> > > memory footprint that's defined in pkgconf/, AFAICT).
> > >
> > > Scott
> > >
> > >
> > > --
> > > Before posting, please read the FAQ:
> > > http://sources.redhat.com/fom/ecos
> > > and search the list archive: 
http://sources.redhat.com/ml/ecos-discuss
>
> -----------------------------------------------
> Thomas Koeller, Software Development
>
> Basler Vision Technologies
> An der Strusbek 60-62
> 22926 Ahrensburg
> Germany
>
> Tel +49 (4102) 463-390
> Fax +49 (4102) 463-46390
>
> mailto:Thomas.Koeller@baslerweb.com
> http://www.baslerweb.com
----------------------------------------------- 
Thomas Koeller, Software Development 

Basler Vision Technologies 
An der Strusbek 60-62 
22926 Ahrensburg 
Germany 

Tel +49 (4102) 463-390 
Fax +49 (4102) 463-46390

mailto:Thomas.Koeller@baslerweb.com 
http://www.baslerweb.com 



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 19+ messages in thread
* RE: [ECOS] malloc vs. new
@ 2002-06-23 14:40 Dan Conti
  2002-06-23 14:56 ` Scott Dattalo
  2002-06-24 13:25 ` Scott Dattalo
  0 siblings, 2 replies; 19+ messages in thread
From: Dan Conti @ 2002-06-23 14:40 UTC (permalink / raw)
  To: ecos-discuss

new shouldn't be broken, since it just calls malloc. does malloc work
when making allocations of the exact same size?

two things to try as workarounds:

1) write your own operator new/new[]/delete/delete[]. tossing the
following into some file should work:

void* operator new(size_t size) {
	return malloc(size_t);
}
void operator delete(void* ptr) {
	if( ptr )
		free(ptr);
}

make versions for new[] and delete[] also, which are the same function
with different names.

2) use placement new, which is what you were getting at below. be wary
of alignment considerations for the buffer you use. also at clean up you
have to manually call the destructor IIRC. C++ is not my forte.

#include <new.h>

char buffer[1024] __attribute__((align(4));

CObject* pObj = new(buffer) CObject();

...
pObj->~CObject();

Good luck.

-----Original Message-----
From: Scott Dattalo [mailto:scott@dattalo.com]
Sent: Friday, June 21, 2002 7:18 PM
To: ecos-discuss@sources.redhat.com
Subject: [ECOS] malloc vs. new



In a project I'm porting to eCos there is some C++ code. Consequently, 
there are several new() calls for creating new objects. Unfortunately, 
calls to new() hang. Specifically, the kernel is unable to allocate
memory 
and throws an exception. This switches control to the exception thread
and 
control is never released...

Calls to malloc, OTOH, work just fine.

I've sifted through the documentation and the best I could come up with
is 
this snippet:

#define MEMORY_BUFFER  0x1000
char StaticMemoryBuffer[MEMORY_BUFFER];

...


  cyg_handle_t mempool;
  cyg_mempool_var mempool_obj;
  cyg_mempool_var_create(StaticMemoryBuffer, MEMORY_BUFFER, &mempool, 
&mempool_obj);

This still fails. How does one provide a memory allocation buffer for 
new()?

Scott




-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

^ permalink raw reply	[flat|nested] 19+ messages in thread
* [ECOS] malloc vs. new
@ 2002-06-21 20:02 Scott Dattalo
  0 siblings, 0 replies; 19+ messages in thread
From: Scott Dattalo @ 2002-06-21 20:02 UTC (permalink / raw)
  To: ecos-discuss


In a project I'm porting to eCos there is some C++ code. Consequently, 
there are several new() calls for creating new objects. Unfortunately, 
calls to new() hang. Specifically, the kernel is unable to allocate memory 
and throws an exception. This switches control to the exception thread and 
control is never released...

Calls to malloc, OTOH, work just fine.

I've sifted through the documentation and the best I could come up with is 
this snippet:

#define MEMORY_BUFFER  0x1000
char StaticMemoryBuffer[MEMORY_BUFFER];

...


  cyg_handle_t mempool;
  cyg_mempool_var mempool_obj;
  cyg_mempool_var_create(StaticMemoryBuffer, MEMORY_BUFFER, &mempool, 
&mempool_obj);

This still fails. How does one provide a memory allocation buffer for 
new()?

Scott




-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss

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

end of thread, other threads:[~2002-06-27  8:41 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-06-25  4:51 [ECOS] malloc vs. new Koeller, T.
2002-06-25  7:00 ` Tim Drury
2002-06-25 11:20 ` Daniel Leu
2002-06-25 23:38 ` Tim Drury
  -- strict thread matches above, loose matches on Subject: below --
2002-06-27  1:48 Koeller, T.
2002-06-26  9:12 Koeller, T.
2002-06-26  3:38 Koeller, T.
2002-06-26  8:57 ` Tim Drury
2002-06-23 14:40 Dan Conti
2002-06-23 14:56 ` Scott Dattalo
2002-06-24  4:27   ` Pierre Merlin
2002-06-24 13:25 ` Scott Dattalo
2002-06-24 13:27   ` Scott Dattalo
2002-06-24 15:07     ` Gary Thomas
2002-06-24 19:05       ` Scott Dattalo
2002-06-25  2:32         ` Tim Drury
2002-06-25  6:45     ` Kjell Svensson
     [not found]       ` <200206250843.51339.tdrury@siliconmotorsports.com>
2002-06-25 11:12         ` Kjell Svensson
2002-06-21 20:02 Scott Dattalo

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