GCC newlib-nano a multitasking - vyreseno

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Sobota Prosinec 13 08:27:10 CET 2014


Tak uz to mam GCC a google je mocny, klicove slovo je wrap function a 
nejak takto (zatim bez lock) + option pro linker:

extern void *__real__malloc_r(
   struct _reent *r,
   size_t         size
);

void *__wrap__malloc_r(
   struct _reent *r,
   size_t         size
)
{
     return __real__malloc_r(r, size);
}

extern void __real__free_r(
   struct _reent *r,
   void *ptr
);
void __wrap__free_r(
   struct _reent *r,
   void *ptr
)
{
     __real__free_r(r, ptr);
}

Dne 13. 12. 2014 8:02, Jaroslav Buchta napsal(a):
> Narazil jsem na problém u CM0 a FreeRTOS
> Tyto redukovane knihovny nepodporují zřejmě u funkcí malloc a free 
> callback funkce při vstupu a výstupu a nelze tedy locknout systém? 
> Nějak takto to normálně dělám:
>
> void __malloc_lock ( struct _reent *_r )
> {
>     vPortEnterCritical();
> }
>
> void __malloc_unlock ( struct _reent *_r )
> {
>     vPortExitCritical();
> }
>
> Existuje nějaké jiné řešení, než upravit a zkompilovat celé knihovny 
> (netuším, jak moc je to práce)
> Případně dá se implementovat vlasní funkce pro správu paměti a 
> příslušné části knihovny linkeru zakázat (pokud napíšu vlastní malloc 
> např., tak linker vyhodí error )
> Nebo nějaký další nápad?
> Normálně používám plnohodnotné knihovny ale tady je průšvih, že 
> alokuje haldu po blocích 4kB asi natvrdo a zase s 8kB RAM jsem jaksi v 
> .... To zas ta nano verze vola sbrk pro kazdy malloc presne na miru.
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> http://www.avast.com
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com



Další informace o konferenci Hw-list