Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDIO DMA of STM32H743 needs buffer to be in AXI SRAM #18

Open
chep opened this issue Jun 26, 2024 · 0 comments
Open

SDIO DMA of STM32H743 needs buffer to be in AXI SRAM #18

chep opened this issue Jun 26, 2024 · 0 comments

Comments

@chep
Copy link

chep commented Jun 26, 2024

Description:

cyhal_sdio_bulk_transfer function uses a temp buffer declared static. This buffer is located in .bss section and, by default, this section is located in DTCMRAM. On STM32H743 the SDIO DMA cannot access this memory so the buffer is never filled (but no error is reported).

This can be fixed by modifying the linker script :

  /* Uninitialized data section */
  . = ALIGN(4);
  .bss :
  {
    /* This is used by the startup in order to initialize the .bss secion */
    _sbss = .;         /* define a global symbol at bss start */
    __bss_start__ = _sbss;
    *(.bss)
    *(.bss*)
    *(COMMON)

    . = ALIGN(4);
    _ebss = .;         /* define a global symbol at bss end */
    __bss_end__ = _ebss;
  } >RAM_D1

But it will be overwritten when re-generating code.

Steps to Reproduce:

  1. Generate a project for STM32H743 (or maybe other H7xx)

Expected Result:
wifi scan

Actual Result:
Chip id is 0 because DMA buffer is not filled

Frequency (1/1, 1/50, 1/100):
1/1

Build/Commit:

1.6.0

Target:

STM32H743 and CYW55573

Host OS and Version:

Arch Linux

Compiler:

Using built-in specs.
COLLECT_GCC=arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-none-eabi/14.1.0/lto-wrapper
Target: arm-none-eabi
Configured with: /build/arm-none-eabi-gcc/src/gcc-14.1.0/configure --target=arm-none-eabi --prefix=/usr --with-sysroot=/usr/arm-none-eabi --with-native-system-header-dir=/include --libexecdir=/usr/lib --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-system-zlib --with-newlib --with-headers=/usr/arm-none-eabi/include --with-python-dir=share/gcc-arm-none-eabi --with-gmp --with-mpfr --with-mpc --with-isl --with-libelf --enable-gnu-indirect-function --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='Arch Repository' --with-bugurl=https://gitlab.archlinux.org/archlinux/packaging/packages/arm-none-eabi-gcc/-/issues --with-multilib-list=rmprofile
Thread model: single
Supported LTO compression algorithms: zlib zstd
gcc version 14.1.0 (Arch Repository) 

Environment

FreeRTOS, Nucleo H743ZI2, chip connected on SDMMC1 with Murata hat.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant