Цитата(zltigo @ Aug 18 2006, 11:48)

Может все проще? И нужно пользоваться, например, xQueueSendFromISR в том конкретном случае или
какая-то другая "промашка"?
Вы издеваетесь?

это я про xQueueSendFromISR/xQueueSend.
Почему именно malloc ? а как тогда обяснить что при при heap_3.c (тоесть malloc из libc) проглюкавыет, а с heap_2.c работает как часики.
Я имел ввиду под ручным все то что не heap_3.c, тоесть не использует malloc из libc и соответственно секцию .heap . Заработало стабильно как раз после heap_2.c + немного напильником.
А как вы автоматом размер ручной кучи(остаток озу) в исходнике берете?
2_RRaptor
А это ИДЕЯ!! Ведь и вправду если хоть гдето в объектниках сохраняется константа-указатель на начало кучи то перекомпиляция другого модуля автоматом все двигает по озу, и получается каша, но с другой стороны этого вроде как не бывает - все абсолютные адреса после компиляния в линкере вычислюется и подставляются . Есть вариант что CW проглюкивает при генерации линковочного скрипта (относительно кучи) опятьже при не полной соборке. Поскольку при "ручном" выделении куча в понимании линкера уэже не секция кучи а просто данные-массив байт, то и глюков нет/другие
Еще вопрос до кучи.
Как правильно сказать компиллеру/линкеру GCC в CW засунуть функцию в ОЗУ.
... *Foo(...) __attribute__ ((section(".data_run"))) ;
... *Foo(...)
{....}
помогает, она размещается в ОЗУ, но код в ней кривой как коленвал.
И еще, допустим я засунул функцию в ОЗУ, но она дергает вызовы счета float, как указать чтоб из не моей библы конкретные только конкретные вызовы тоже в ОЗУ положить?
Сообщение отредактировал klen - Aug 18 2006, 08:48