I think a stack of 16 kB should be enough, but watch out for certain objects that might do large stack allocations, e.g. [sigmund~]. A modern OS usually has a stack size of at least 1 MB...
Regarding heap memory, you could get a rough idea by writing a small libpd test program on your Desktop with Pd's memory debug option or some external memory debugging tool like valgrind.
Also don't forget that the code itself also has to be loaded into memory. Then there are of course the actual Pd patches, which also need memory.
Finally, note that depending on the actual memory allocator, memory usage might not be deterministic. There are things like heap fragmentation to look out for. Pd might do heap allocations repeatedly during run time, e.g. [vline~] or any list larger than 100 atoms, and with such a small heap, fragmentation is very likely. One bigger allocation and boom - you're basically out of memory.
I don't know whether it's much fun to use Pd in such a constrained environment. Sound very brittle to me... You might be better of with an actual signal processing library, where you can control every aspect of your program.
Is there anyone who has actually used or tried to use libpd under such extreme memory constraints and can share their experience?
Christof
On 24.03.2020 11:49, Boštjan Jerko wrote:
Do you know what are the minimum values for the stack and heap? At least rough estimation.
B.
On 24 Mar 2020, at 11:30, Christof Ressi info@christofressi.com wrote:
Check how much memory Pd is using. I mean, a 16 kB stack and 130 kB heap is still pretty small... (if those hex numbers mean bytes). Pd hasn't really been designed to run on microcontrollers ;-). Anyway, have a look at m_memory.c, there are some heap memory debug options, in case your developer tools don't provide this.
Christof
On 24.03.2020 09:25, Boštjan Jerko wrote:
I don’t use PDINSTANCE, but after checking some online stuff I thought maybe the size of the stack is the problem so I’ve changed it from 0x400 to 0x4000 and heap size from 0x200 to 0x2000, but no success. Still - I guess there is something going on with the memory so I’ll be checking this some more.
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev