Hi Tomek, I can barely tell the difference in performance. I am fully utilizing the SDIO and USB stuff, pushing them to their limits. I think it might be a few milliseconds slower, but there are so many variables that it could be caused by anything. I am honestly more happy that it works right now.
I'm not sure if the constant should be configurable. Maybe it is constant for a reason. Extra info in Kconfig can help, but not when the problem appears later when the program becomes bigger. That's where a syslog warning or something could come in handy. Or debug assert even? Op vr 25 jul 2025 om 16:45 schreef Tomek CEDRO <to...@cedro.info>: > Hi Kevin, nice catch :-) Does that (disabling DMA) has impact on > efficiency? Maybe this variable should be kconfig configurable with > detailed explanation on what it does? :-) > > -- > CeDeROM, SQ7MHZ, http://www.tomek.cedro.info > > On Fri, Jul 25, 2025, 16:31 Kevin Witteveen <kevinwit1...@gmail.com> > wrote: > > > Hi NuttX, > > > > *Days of debugging, out of memory problems when opening files.* > > Last couple days I've struggled with an annoying problem where opening > > files were throwing out-of-memory errors even when I have way more than > > enough memory left. > > > > After changing the config, changing code and uploading atleast 100 times, > > trying new things, I have discovered that I could specifically only open > 8 > > files before the ENOMEM error. > > > > So I started digging and found out that a couple boards such as > > STMF429ZI have a source file called {arch here}_dma_alloc.c with a > #define > > called "BOARD_DMA_ALLOC_POOL_SIZE". > > This is a constant set to 8 * 512. > > Interesting... This is used for the granule allocator and is enabled by > > configuring CONFIG_GRAN and CONFIG_FAT_DMAMEMORY. > > > > After disabling these, it worked. I can make many files now without > errors. > > > > *TLDR* > > opening multiple files returns *unexplained* -ENOMEM (out of memory) when > > there is plenty of memory left. > > Caused by constant CONFIG_FAT_DMAMEMORY (8*512) in multiple board's > > {arch}_dma_alloc.c granular allocator. > > Fixed by disabling CONFIG_FAT_DMAMEMORY > > > > *My hardware* > > STM32H743 custom board > > SD card with 4 wide SDIO > > USB MSC master > > > > > > *Solution?*I'm sure there is a brilliant reason why > > BOARD_DMA_ALLOC_POOL_SIZE is specifically set to 8*512, but I think it is > > very important to document this. > > Another great addition would be to throw a specific error message when > this > > out of memory problem happens. Something hinting towards > > BOARD_DMA_ALLOC_POOL_SIZE, FAT_DMAMEMORY or similar. > > > > What do we think? > > > > Best, > > > > Kevin (Keever50 or Martinimarter at github) > > >