place thread stack into CCM memory on STM32

Oleg Uzenkov <[email protected]> Thu, 16 Oct 2014 17:00:51 +0300
Newsgroups gmane.os.ecos.general
Message-ID <[email protected]>
Hi Everyone,

STM32 controllers have CCM (Closely Coupled Memory) memory which acts as 
RAM.

At present I do not use it. But I would like to.

I am developing eCos application in C++. I have something like this in 
the header file:

   class A :
   {
   public:
    A ();
    virtual ~A ();
   ..
   protected:

     cyg_thread    _thread;
     char    _thread_stack [CYGNUM_HAL_STACK_SIZE_TYPICAL] 
__attribute__((section(".ccm")));
   ...

As you can see, I want to place thread stack into CCM section (using 
__attribute__((section("<name>"))).

But I do not know how to do it in a correct way. Please help! :-)

The Memory layout file I use has got:

..
SECTIONS
{
     SECTIONS_BEGIN
     USER_SECTION (ccm, ccm, 0x10000000, LMA_EQ_VMA)
..

And cortexm.ld file has got a macro for USER_SECTION:

#define USER_SECTION(_name_, _region_,  _vma_, _lma_) \
     ._name_ _vma_ : _lma_ \
     { __ ## _name_ ## _start = ABSOLUTE (.); \
      *(._name_*) \
     __ ## _name_ ## _end = ABSOLUTE (.); } \
     > _region_


When I compile the project I get an error:
error: section attribute not allowed for '_thread_stack'

Do I specify attribute in the correct place?

My be I cannot do it for class members but only for global variables?

I would appreciate any help on this.

Oleg







     ...




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