Y334275 opened a new pull request, #18350:
URL: https://github.com/apache/nuttx/pull/18350
## Summary
PSRAM buffers require explicit cache management when used with DMA, as DMA
accesses physical memory directly, bypassing the CPU cache.
Before starting DMA transfer:
- For an **OUTGOING** transfer (PSRAM -> Device): Call
`cache_writeback_addr()` to flush dirty data from cache to PSRAM.
- For an **INCOMING** transfer (Device -> PSRAM): Call
`cache_invalidate_addr()` to invalidate cache lines, ensuring DMA can write to
PSRAM.
This ensures cache coherence and correct data transmission in burst mode.
## Impact
- esp32s3 dma and dma-capable peripherals
## Testing
### Environment
- **OS/Framework**: px4 with nuttx 12.12.0
- **Hardware**: esp32s3 with icm42688p connected via spi
### Test method
Added temporary debug logs in `esp32s3_spi_dma_exchange` to monitor transfer
behavior.
Here is the code:
```c
static void esp32s3_spi_dma_exchange(struct esp32s3_spi_priv_s *priv,
const void *txbuffer,
void *rxbuffer,
uint32_t nwords)
{
// ... existing code
infodumpbuffer("transferred buffer", priv->dma_txdesc[0].pbuf,
priv->dma_txdesc[0].ctrl & 0xfff);
infodumpbuffer("received buffer", priv->dma_rxdesc[0].pbuf,
priv->dma_rxdesc[0].ctrl & 0xfff);
esp32s3_spi_clr_regbits(SPI_DMA_INT_ENA_REG(priv->config->id),
SPI_TRANS_DONE_INT_ENA_M);
}
```
<details>
<summary>Logs before fix</summary>
```
ESP-ROM:esp32s3-20210327
Build:Mar 27 202�ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0xb (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fc94eb0,len:0x22d0
load:0x40374000,len:0x8dac
load:0x50000000,len:0x20
SHA-256 comparison failed:
Calculated: 2e1352ca0449987b8cafdad9ab8bc6dc5b3724a77b06fdca48188b9d9771be73
Expected: 00000000204f0000000000000000000000000000000000000000000000000000
Attempting to boot anyway...
entry 0x40374a38
*** Booting NuttX ***
I (70) boot: chip revision: v0.2
I (70) boot: efuse block revision: v1.3
I (70) boot.esp32s3: Boot SPI Speed : 40MHz
I (71) boot.esp32s3: SPI Mode : DIO
I (75) boot.esp32s3: SPI Flash Size : 4MB
I (78) boot: Enabling RNG early entropy source...
dram: lma 0x00000020 vma 0x3fc94eb0 len 0x22d0 (8912)
iram: lma 0x000022f8 vma 0x40374000 len 0x8dac (36268)
rtc: lma 0x0000b0ac vma 0x50000000 len 0x20 (32)
padd: lma 0x0000b0d8 vma 0x00000000 len 0x4f20 (20256)
imap: lma 0x00010000 vma 0x42010000 len 0x14fd54 (1375572)
padd: lma 0x0015fd5c vma 0x00000000 len 0x29c (668)
dmap: lma 0x00160000 vma 0x3c170000 len 0x59c64 (367716)
total segments stored 7
ABI (799) app_init: Application information:
I (799) app_init: Compile time: Feb 4 2026 17:24:39
I (804) app_init: ELF file SHA256: 000000000...
I (804) app_init: ESP-IDF:
I (805) sleep_gpio: Configure to isolate all GPIO pins in sleep state
I (812) sleep_gpio: Enable automatic switching of GPIO sleep configuration
esp32s3_spi_setfrequency: frequency=400000, actual=400000
esp32s3_spi_setbits: nbits=8
esp32s3_spi_setmode: mode=0
esp32s3_spi_setfrequency: frequency=400000, actual=400000
esp32s3_spi_setbits: nbits=8
esp32s3_spi_setmode: mode=0
esp32s3_spi_setmode: mode=0
esp32s3_spi_setbits: nbits=8
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x40 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x95 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x48 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x1 and recv=0xff
esp32s3_spi_poll_send: send=0xaa and recv=0xff
esp32s3_spi_poll_send: send=0x87 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xaa
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x77 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x69 and recv=0xff
esp32s3_spi_poll_send: send=0x40 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x77 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x69 and recv=0xff
esp32s3_spi_poll_send: send=0x40 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x7a and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xc0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x80
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x49 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xfe
esp32s3_spi_poll_send: send=0xff and recv=0x40
esp32s3_spi_poll_send: send=0xff and recv=0xe
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x32
esp32s3_spi_poll_send: send=0xff and recv=0x5b
esp32s3_spi_poll_send: send=0xff and recv=0x59
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x74
esp32s3_spi_poll_send: send=0xff and recv=0x7b
esp32s3_spi_poll_send: send=0xff and recv=0x7f
esp32s3_spi_poll_send: send=0xff and recv=0x80
esp32s3_spi_poll_send: send=0xff and recv=0xa
esp32s3_spi_poll_send: send=0xff and recv=0x40
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x9d
esp32s3_spi_poll_send: send=0xff and recv=0xa6
esp32s3_spi_poll_send: send=0xff and recv=0x66
esp32s3_spi_setfrequency: frequency=20000000, actual=20000000
esp32s3_spi_poll_send: send=0xff and recv=0xff
NuttShell (NSH) NuttX-11.0.0
nsh> icm42688p start -s
esp32s3_spi_setfrequency: frequency=24000000, actual=26666666
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 f5 00 ..
received buffer (0x3c1d53a0):
0000 f5 00 a0 41 d0 53 1d 3c 80 58 1d 3c 48 7b 17 3c ...A.S.<.X.<H{.<
icm42688p unexpected WHO_AM_I 0x00
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 f6 00 ..
received buffer (0x3c1d53a0):
0000 f6 00 a0 41 d0 53 1d 3c 80 58 1d 3c 48 7b 17 3c ...A.S.<.X.<H{.<
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 f5 00 ..
received buffer (0x3c1d53a0):
0000 f5 00 a0 41 d0 53 1d 3c 80 58 1d 3c 48 7b 17 3c ...A.S.<.X.<H{.<
icm42688p unexpected WHO_AM_I 0x00
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 f6 00 ..
received buffer (0x3c1d53a0):
0000 f6 00 a0 41 d0 53 1d 3c 80 58 1d 3c 48 7b 17 3c ...A.S.<.X.<H{.<
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 f5 00 ..
received buffer (0x3c1d53a0):
0000 f5 00 a0 41 d0 53 1d 3c 80 58 1d 3c 48 7b 17 3c ...A.S.<.X.<H{.<
icm42688p unexpected WHO_AM_I 0x00
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 f6 00 ..
received buffer (0x3c1d53a0):
0000 f6 00 a0 41 d0 53 1d 3c 80 58 1d 3c 48 7b 17 3c ...A.S.<.X.<H{.<
icm42688p probe failed
icm42688p SPI::init failed (-1)
ERROR [SPI_I2C] icm42688p: no instance started (no device on bus?)
nsh>
```
</details>
<details>
<summary>Logs after fix</summary>
```
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0xb (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fc94eb0,len:0x22d0
load:0x40374000,len:0x8dac
load:0x50000000,len:0x20
SHA-256 comparison failed:
Calculated: ee29b22b9d8744b1bf5168fc0818892967f8c1a94ea69183a22d6aa00d2b0674
Expected: 00000000204f0000000000000000000000000000000000000000000000000000
Attempting to boot anyway...
entry 0x40374a38
*** Booting NuttX ***
I (70) boot: chip revision: v0.2
I (70) boot: efuse block revision: v1.3
I (70) boot.esp32s3: Boot SPI Speed : 40MHz
I (71) boot.esp32s3: SPI Mode : DIO
I (75) boot.esp32s3: SPI Flash Size : 4MB
I (78) boot: Enabling RNG early entropy source...
dram: lma 0x00000020 vma 0x3fc94eb0 len 0x22d0 (8912)
iram: lma 0x000022f8 vma 0x40374000 len 0x8dac (36268)
rtc: lma 0x0000b0ac vma 0x50000000 len 0x20 (32)
padd: lma 0x0000b0d8 vma 0x00000000 len 0x4f20 (20256)
imap: lma 0x00010000 vma 0x42010000 len 0x14fd88 (1375624)
padd: lma 0x0015fd90 vma 0x00000000 len 0x268 (616)
dmap: lma 0x00160000 vma 0x3c170000 len 0x59c64 (367716)
total segments stored 7
ABI (799) app_init: Application information:
I (799) app_init: Compile time: Feb 4 2026 17:29:18
I (804) app_init: ELF file SHA256: 000000000...
I (804) app_init: ESP-IDF:
I (805) sleep_gpio: Configure to isolate all GPIO pins in sleep state
I (812) sleep_gpio: Enable automatic switching of GPIO sleep configuration
esp32s3_spi_setfrequency: frequency=400000, actual=400000
esp32s3_spi_setbits: nbits=8
esp32s3_spi_setmode: mode=0
esp32s3_spi_setfrequency: frequency=400000, actual=400000
esp32s3_spi_setbits: nbits=8
esp32s3_spi_setmode: mode=0
esp32s3_spi_setmode: mode=0
esp32s3_spi_setbits: nbits=8
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x40 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x95 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x48 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x1 and recv=0xff
esp32s3_spi_poll_send: send=0xaa and recv=0xff
esp32s3_spi_poll_send: send=0x87 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xaa
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x77 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x69 and recv=0xff
esp32s3_spi_poll_send: send=0x40 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x77 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x1
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x69 and recv=0xff
esp32s3_spi_poll_send: send=0x40 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x7a and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xc0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x80
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0x49 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0x0 and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0xff
esp32s3_spi_poll_send: send=0xff and recv=0xfe
esp32s3_spi_poll_send: send=0xff and recv=0x40
esp32s3_spi_poll_send: send=0xff and recv=0xe
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x32
esp32s3_spi_poll_send: send=0xff and recv=0x5b
esp32s3_spi_poll_send: send=0xff and recv=0x59
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x74
esp32s3_spi_poll_send: send=0xff and recv=0x7b
esp32s3_spi_poll_send: send=0xff and recv=0x7f
esp32s3_spi_poll_send: send=0xff and recv=0x80
esp32s3_spi_poll_send: send=0xff and recv=0xa
esp32s3_spi_poll_send: send=0xff and recv=0x40
esp32s3_spi_poll_send: send=0xff and recv=0x0
esp32s3_spi_poll_send: send=0xff and recv=0x9d
esp32s3_spi_poll_send: send=0xff and recv=0xa6
esp32s3_spi_poll_send: send=0xff and recv=0x66
esp32s3_spi_setfrequency: frequency=20000000, actual=20000000
esp32s3_spi_poll_send: send=0xff and recv=0xff
NuttShell (NSH) NuttX-11.0.0
nsh> icm42688p start -s
esp32s3_spi_setfrequency: frequency=24000000, actual=26666666
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 00 00 ..
received buffer (0x3c1d53a0):
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
icm42688p unexpected WHO_AM_I 0x00
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 00 00 ..
received buffer (0x3c1d53a0):
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d53a0):
0000 00 47 .G
received buffer (0x3c1d53a0):
0000 00 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .G..............
icm42688p on SPI bus 2 at 38 (24000 KHz)
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d5418):
0000 00 00 ..
received buffer (0x3c1d5418):
0000 00 00 00 00 00 00 00 00 dd d0 14 82 50 54 1d 3c ............PT.<
icm42688p #0 on SPI bus 2
esp32s3_spi_setmode: mode=3
esp32s3_spi_setbits: nbits=8
esp32s3_spi_dma_exchange: nwords=2
transferred buffer (0x3c1d5410):
0000 00 07 ..
received buffer (0x3c1d5410):
0000 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
nsh> esp32s3_spi_setmode: mode=3
```
</details>
Log comparison shows the fix is working:
- **Before fix**: The buffer content remains unchanged (`0xf5 0x00` and
`0xf6 0x00`), indicating DMA failed to write data to the buffer (or read from
it).
- **After fix**: The buffer content is overwritten with new data, confirming
that DMA successfully transferred data to/from the buffer.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]