Re: STM32F4 SPI DMA buffer size issue

2020-11-25 Thread Oleg Evseev
David,

I have BOARD_DMA_ALLOC_POOL_SIZE 5120 - as on other boards including
STM32F405RG based omnibus f4sd.

By the way f4sd doesn't set SPI2_DMA_BUFFER on SD card SPI2, but has
CONFIG_STM32_SPI2_DMA=y
https://github.com/PX4/PX4-Autopilot/blob/5e855c67477fe08517297a38e718ed1102536cf6/boards/omnibus/f4sd/nuttx-config/nsh/defconfig#L161

As I understand in this case NuttX SPI driver will if it is possible to do
DMA from the selected addres (CONFIG_STM32_DMACAPABLE) and probably does
not use DMA at all, right?

ср, 25 нояб. 2020 г. в 14:03, David Sidrane :

> Oleg,
>
> You are most welcome,
>
> Did you adjust the size of the board dma allocator?
>
>
> https://github.com/PX4/PX4-Autopilot/blob/1dd6b6a5058199ea6bbf1e2321010abe88a656ee/platforms/nuttx/src/px4/common/board_dma_alloc.c#L57
> ?
>
> -Original Message-
> From: Oleg Evseev [mailto:ev.m...@gmail.com]
> Sent: Wednesday, November 25, 2020 12:46 AM
> To: dev@nuttx.apache.org
> Subject: Re: STM32F4 SPI DMA buffer size issue
>
> Thanks for the enhanced feedback, David!
>
> When I reduced the slew rate control from 50MHz to 2MHz it fixes issues
> with a SD card when DMA is not enabled. But when DMA is enabled, MTD and SD
> still are attached and mounted, but are empty, as I see on block reads -
> px4 successfully reads mtd_params files, but it is empty. SD content also
> empty, ls shows only created empty log dir on boot, but can't store
> anything (for example on echo - "No such file or directory").
> I turned off all uart DMA just in case, but it didn't help.
>
> вт, 24 нояб. 2020 г. в 21:45, David Sidrane :
>
> > Hi Oleg,
> >
> > See inline [DBS]
> >
> > David
> > -Original Message-
> > From: Oleg Evseev [mailto:ev.m...@gmail.com]
> > Sent: Tuesday, November 24, 2020 9:46 AM
> > To: dev@nuttx.apache.org
> > Subject: Re: STM32F4 SPI DMA buffer size issue
> >
> > > Have you scoped the interface?
> >
> > You mean a bus by analyzer? No, I don't have such ability for now.
> >
> > [DBS]  Use an oscilloscope, but with a high speed FET probe. You may see
> > incredible overshoot, when DMA is on.
> >
> >
> > For SD card I tried to reduce the SPI frequency from 24MHz to 10MHz, but
> > it
> > didn't help when DMA is enabled. In fact it get failed to find a valid
> > boot
> > record, while fat_hwread of sector zero is returned without errors.
> >
> >
> > [DBS] By drive strength I mean the slew rate control not frequency
> >
> > See
> >
> >
> https://github.com/PX4/PX4-Autopilot/blob/master/boards/px4/fmu-v6x/nuttx-config/include/board.h#L411-L431
> > For an eample.
> >
> > The other strange thing I found out, is that when *DMA is not used*, SD
> > can't be used after mounting on boot. If I go through breakpoints in
> stm32
> > spi_setfrequency for example it get mounted ok and ls shows SD content.
> > It's hard to understand what is going on because it seems that debug
> > influence on the result. While debugging I saw the case when SD get
> > mounted
> > but than on mkdir of log folder reading mmcsd_geometry get failed in
> > mmcsd_getcsd or mkdir success, but log dir is the only one thing on SD
> > while it is not empty.
> >
> > In this case (without DMA) reducing SPI frequency from 24MHz to 20MHz
> > seems
> > to fix the problem (but maybe it depends on delays and may appear again
> > once there will be more commands on boot for instance, I don't know).
> >
> > Quite a strange behaviour for now.
> >
> > вт, 24 нояб. 2020 г. в 17:12, David Sidrane :
> >
> > > Oleg,
> > >
> > > Have you scoped the interface?
> > >
> > > For gins and giggles try reducing the SPI clock drive strength. Step it
> > > down
> > > and retest.
> > >
> > > David
> > >
> > > -Original Message-
> > > From: Oleg Evseev [mailto:ev.m...@gmail.com]
> > > Sent: Tuesday, November 24, 2020 4:57 AM
> > > To: dev@nuttx.apache.org
> > > Subject: STM32F4 SPI DMA buffer size issue
> > >
> > > Hi all,
> > >
> > > STM32f405rg custom board - MTD on SPI1 and SD card on SPI2.
> > >
> > > MTD on SPI1 works without DMA and with if defined
> > > CONFIG_STM32_SPI1_DMA=y
> > >
> > > but if also
> > > CONFIG_STM32_SPI1_DMA_BUFFER=1024
> > > is set, partitions get created, there are mtdblockX in /dev, geometry
> > > can
> > > be read correctly, but reading or writing hangs up.
> > > As I see in map g_spi1_rxbuf, g_spi1_txbuf are in SRAM, not in CCM.
> > >
> > > Same with SD card. If defined CONFIG_STM32_SPI2_DMA_BUFFER=1024 there
> is
> > > still /dev/mmcsd device, it gets mounted, but ls /fs/microsd shows no
> SD
> > > content.
> > >
> > > CONFIG_STM32_SPI_DMATHRESHOLD=8
> > >
> > > What can be a problem? Thanks in advance for help!
> > >
> > > ---
> > > With regards, Oleg.
> > >
> >
>


RE: STM32F4 SPI DMA buffer size issue

2020-11-25 Thread David Sidrane
Oleg,

You are most welcome,

Did you adjust the size of the board dma allocator?

https://github.com/PX4/PX4-Autopilot/blob/1dd6b6a5058199ea6bbf1e2321010abe88a656ee/platforms/nuttx/src/px4/common/board_dma_alloc.c#L57?

-Original Message-
From: Oleg Evseev [mailto:ev.m...@gmail.com]
Sent: Wednesday, November 25, 2020 12:46 AM
To: dev@nuttx.apache.org
Subject: Re: STM32F4 SPI DMA buffer size issue

Thanks for the enhanced feedback, David!

When I reduced the slew rate control from 50MHz to 2MHz it fixes issues
with a SD card when DMA is not enabled. But when DMA is enabled, MTD and SD
still are attached and mounted, but are empty, as I see on block reads -
px4 successfully reads mtd_params files, but it is empty. SD content also
empty, ls shows only created empty log dir on boot, but can't store
anything (for example on echo - "No such file or directory").
I turned off all uart DMA just in case, but it didn't help.

вт, 24 нояб. 2020 г. в 21:45, David Sidrane :

> Hi Oleg,
>
> See inline [DBS]
>
> David
> -Original Message-
> From: Oleg Evseev [mailto:ev.m...@gmail.com]
> Sent: Tuesday, November 24, 2020 9:46 AM
> To: dev@nuttx.apache.org
> Subject: Re: STM32F4 SPI DMA buffer size issue
>
> > Have you scoped the interface?
>
> You mean a bus by analyzer? No, I don't have such ability for now.
>
> [DBS]  Use an oscilloscope, but with a high speed FET probe. You may see
> incredible overshoot, when DMA is on.
>
>
> For SD card I tried to reduce the SPI frequency from 24MHz to 10MHz, but
> it
> didn't help when DMA is enabled. In fact it get failed to find a valid
> boot
> record, while fat_hwread of sector zero is returned without errors.
>
>
> [DBS] By drive strength I mean the slew rate control not frequency
>
> See
>
> https://github.com/PX4/PX4-Autopilot/blob/master/boards/px4/fmu-v6x/nuttx-config/include/board.h#L411-L431
> For an eample.
>
> The other strange thing I found out, is that when *DMA is not used*, SD
> can't be used after mounting on boot. If I go through breakpoints in stm32
> spi_setfrequency for example it get mounted ok and ls shows SD content.
> It's hard to understand what is going on because it seems that debug
> influence on the result. While debugging I saw the case when SD get
> mounted
> but than on mkdir of log folder reading mmcsd_geometry get failed in
> mmcsd_getcsd or mkdir success, but log dir is the only one thing on SD
> while it is not empty.
>
> In this case (without DMA) reducing SPI frequency from 24MHz to 20MHz
> seems
> to fix the problem (but maybe it depends on delays and may appear again
> once there will be more commands on boot for instance, I don't know).
>
> Quite a strange behaviour for now.
>
> вт, 24 нояб. 2020 г. в 17:12, David Sidrane :
>
> > Oleg,
> >
> > Have you scoped the interface?
> >
> > For gins and giggles try reducing the SPI clock drive strength. Step it
> > down
> > and retest.
> >
> > David
> >
> > -Original Message-
> > From: Oleg Evseev [mailto:ev.m...@gmail.com]
> > Sent: Tuesday, November 24, 2020 4:57 AM
> > To: dev@nuttx.apache.org
> > Subject: STM32F4 SPI DMA buffer size issue
> >
> > Hi all,
> >
> > STM32f405rg custom board - MTD on SPI1 and SD card on SPI2.
> >
> > MTD on SPI1 works without DMA and with if defined
> > CONFIG_STM32_SPI1_DMA=y
> >
> > but if also
> > CONFIG_STM32_SPI1_DMA_BUFFER=1024
> > is set, partitions get created, there are mtdblockX in /dev, geometry
> > can
> > be read correctly, but reading or writing hangs up.
> > As I see in map g_spi1_rxbuf, g_spi1_txbuf are in SRAM, not in CCM.
> >
> > Same with SD card. If defined CONFIG_STM32_SPI2_DMA_BUFFER=1024 there is
> > still /dev/mmcsd device, it gets mounted, but ls /fs/microsd shows no SD
> > content.
> >
> > CONFIG_STM32_SPI_DMATHRESHOLD=8
> >
> > What can be a problem? Thanks in advance for help!
> >
> > ---
> > With regards, Oleg.
> >
>


Re: STM32F4 SPI DMA buffer size issue

2020-11-25 Thread Oleg Evseev
Thanks for the enhanced feedback, David!

When I reduced the slew rate control from 50MHz to 2MHz it fixes issues
with a SD card when DMA is not enabled. But when DMA is enabled, MTD and SD
still are attached and mounted, but are empty, as I see on block reads -
px4 successfully reads mtd_params files, but it is empty. SD content also
empty, ls shows only created empty log dir on boot, but can't store
anything (for example on echo - "No such file or directory").
I turned off all uart DMA just in case, but it didn't help.

вт, 24 нояб. 2020 г. в 21:45, David Sidrane :

> Hi Oleg,
>
> See inline [DBS]
>
> David
> -Original Message-
> From: Oleg Evseev [mailto:ev.m...@gmail.com]
> Sent: Tuesday, November 24, 2020 9:46 AM
> To: dev@nuttx.apache.org
> Subject: Re: STM32F4 SPI DMA buffer size issue
>
> > Have you scoped the interface?
>
> You mean a bus by analyzer? No, I don't have such ability for now.
>
> [DBS]  Use an oscilloscope, but with a high speed FET probe. You may see
> incredible overshoot, when DMA is on.
>
>
> For SD card I tried to reduce the SPI frequency from 24MHz to 10MHz, but it
> didn't help when DMA is enabled. In fact it get failed to find a valid boot
> record, while fat_hwread of sector zero is returned without errors.
>
>
> [DBS] By drive strength I mean the slew rate control not frequency
>
> See
>
> https://github.com/PX4/PX4-Autopilot/blob/master/boards/px4/fmu-v6x/nuttx-config/include/board.h#L411-L431
> For an eample.
>
> The other strange thing I found out, is that when *DMA is not used*, SD
> can't be used after mounting on boot. If I go through breakpoints in stm32
> spi_setfrequency for example it get mounted ok and ls shows SD content.
> It's hard to understand what is going on because it seems that debug
> influence on the result. While debugging I saw the case when SD get mounted
> but than on mkdir of log folder reading mmcsd_geometry get failed in
> mmcsd_getcsd or mkdir success, but log dir is the only one thing on SD
> while it is not empty.
>
> In this case (without DMA) reducing SPI frequency from 24MHz to 20MHz seems
> to fix the problem (but maybe it depends on delays and may appear again
> once there will be more commands on boot for instance, I don't know).
>
> Quite a strange behaviour for now.
>
> вт, 24 нояб. 2020 г. в 17:12, David Sidrane :
>
> > Oleg,
> >
> > Have you scoped the interface?
> >
> > For gins and giggles try reducing the SPI clock drive strength. Step it
> > down
> > and retest.
> >
> > David
> >
> > -Original Message-
> > From: Oleg Evseev [mailto:ev.m...@gmail.com]
> > Sent: Tuesday, November 24, 2020 4:57 AM
> > To: dev@nuttx.apache.org
> > Subject: STM32F4 SPI DMA buffer size issue
> >
> > Hi all,
> >
> > STM32f405rg custom board - MTD on SPI1 and SD card on SPI2.
> >
> > MTD on SPI1 works without DMA and with if defined CONFIG_STM32_SPI1_DMA=y
> >
> > but if also
> > CONFIG_STM32_SPI1_DMA_BUFFER=1024
> > is set, partitions get created, there are mtdblockX in /dev, geometry can
> > be read correctly, but reading or writing hangs up.
> > As I see in map g_spi1_rxbuf, g_spi1_txbuf are in SRAM, not in CCM.
> >
> > Same with SD card. If defined CONFIG_STM32_SPI2_DMA_BUFFER=1024 there is
> > still /dev/mmcsd device, it gets mounted, but ls /fs/microsd shows no SD
> > content.
> >
> > CONFIG_STM32_SPI_DMATHRESHOLD=8
> >
> > What can be a problem? Thanks in advance for help!
> >
> > ---
> > With regards, Oleg.
> >
>