From 84908f2dc4caf4709b6b60df4075ef526d70c460 Mon Sep 17 00:00:00 2001 From: Mathieu Choplain Date: Mon, 15 Jul 2024 12:29:50 +0200 Subject: [PATCH 1/2] tests: dma/chan_blen_transfer: relocate TX and RX buffers This commit places the chan_blen_transfer DMA test's TX and RX buffers in a separate file that gets entirely relocated. This ensures that the buffers reside in the correct memory, without breaking other things due to relocation of test data/code. Fixes #75676. Signed-off-by: Mathieu Choplain (cherry picked from commit 3099491f3eccd8e16e69400890ae63562282574e) --- tests/drivers/dma/chan_blen_transfer/CMakeLists.txt | 4 +++- .../dma/chan_blen_transfer/src/test_buffers.c | 12 ++++++++++++ .../dma/chan_blen_transfer/src/test_buffers.h | 12 ++++++++++++ tests/drivers/dma/chan_blen_transfer/src/test_dma.c | 5 +---- 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 tests/drivers/dma/chan_blen_transfer/src/test_buffers.c create mode 100644 tests/drivers/dma/chan_blen_transfer/src/test_buffers.h diff --git a/tests/drivers/dma/chan_blen_transfer/CMakeLists.txt b/tests/drivers/dma/chan_blen_transfer/CMakeLists.txt index 7683c4ebce258..bc85cc0f830f4 100644 --- a/tests/drivers/dma/chan_blen_transfer/CMakeLists.txt +++ b/tests/drivers/dma/chan_blen_transfer/CMakeLists.txt @@ -7,4 +7,6 @@ project(chan_blen_transfer) FILE(GLOB app_sources src/*.c) target_sources(app PRIVATE ${app_sources}) -zephyr_code_relocate(FILES src/test_dma.c LOCATION ${CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION}_RODATA_BSS) +if (CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION) + zephyr_code_relocate(FILES src/test_buffers.c LOCATION ${CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION}) +endif() diff --git a/tests/drivers/dma/chan_blen_transfer/src/test_buffers.c b/tests/drivers/dma/chan_blen_transfer/src/test_buffers.c new file mode 100644 index 0000000000000..3ec893f15c3a7 --- /dev/null +++ b/tests/drivers/dma/chan_blen_transfer/src/test_buffers.c @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#include "test_buffers.h" + +__aligned(32) char tx_data[TEST_BUF_SIZE] = "It is harder to be kind than to be wise........"; +__aligned(32) char rx_data[TEST_BUF_SIZE] = { 0 }; diff --git a/tests/drivers/dma/chan_blen_transfer/src/test_buffers.h b/tests/drivers/dma/chan_blen_transfer/src/test_buffers.h new file mode 100644 index 0000000000000..d69bf914fdc84 --- /dev/null +++ b/tests/drivers/dma/chan_blen_transfer/src/test_buffers.h @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#define TEST_BUF_SIZE (48) + +extern char tx_data[TEST_BUF_SIZE]; +extern char rx_data[TEST_BUF_SIZE]; diff --git a/tests/drivers/dma/chan_blen_transfer/src/test_dma.c b/tests/drivers/dma/chan_blen_transfer/src/test_dma.c index 054bb6b89b9e9..d5b2b7f7ad89b 100644 --- a/tests/drivers/dma/chan_blen_transfer/src/test_dma.c +++ b/tests/drivers/dma/chan_blen_transfer/src/test_dma.c @@ -20,10 +20,7 @@ #include #include -#define RX_BUFF_SIZE (48) - -static __aligned(32) char tx_data[] = "It is harder to be kind than to be wise........"; -static __aligned(32) char rx_data[RX_BUFF_SIZE] = { 0 }; +#include "test_buffers.h" static void test_done(const struct device *dma_dev, void *arg, uint32_t id, int status) From f27881b3b7c5f853eb5e9286e4fb2b5fc135198e Mon Sep 17 00:00:00 2001 From: Mathieu Choplain Date: Wed, 21 Aug 2024 14:09:18 +0200 Subject: [PATCH 2/2] tests: dma/chan_blen_transfer: move buffer to DMA-accessible memory This commit moves the test buffer from ITCM (not accessible by DMA) to DTCM on several NXP boards, to make the test successful. Signed-off-by: Mathieu Choplain (cherry picked from commit eaa799a9b5f0c6033c877b6d37644dd03d552aef) --- tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.conf | 2 +- .../dma/chan_blen_transfer/boards/mimxrt1024_evk.overlay | 2 +- tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.conf | 2 +- .../dma/chan_blen_transfer/boards/mimxrt1050_evk.overlay | 2 +- .../drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.conf | 2 +- .../dma/chan_blen_transfer/boards/mimxrt1060_evkb.overlay | 2 +- tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.conf | 2 +- .../dma/chan_blen_transfer/boards/mimxrt1064_evk.overlay | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.conf b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.conf index 8aa11602c69fd..433a67585be57 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.conf +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.conf @@ -1,3 +1,3 @@ CONFIG_CODE_DATA_RELOCATION=y CONFIG_MEM_ATTR_HEAP=y -CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="ITCM" +CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="DTCM" diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.overlay b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.overlay index 43b7fc3782656..82f0bbe94e899 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.overlay +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1024_evk.overlay @@ -7,7 +7,7 @@ #include -&itcm { +&dtcm { zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>; }; diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.conf b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.conf index 8aa11602c69fd..433a67585be57 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.conf +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.conf @@ -1,3 +1,3 @@ CONFIG_CODE_DATA_RELOCATION=y CONFIG_MEM_ATTR_HEAP=y -CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="ITCM" +CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="DTCM" diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.overlay b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.overlay index 43b7fc3782656..82f0bbe94e899 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.overlay +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1050_evk.overlay @@ -7,7 +7,7 @@ #include -&itcm { +&dtcm { zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>; }; diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.conf b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.conf index 8aa11602c69fd..433a67585be57 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.conf +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.conf @@ -1,3 +1,3 @@ CONFIG_CODE_DATA_RELOCATION=y CONFIG_MEM_ATTR_HEAP=y -CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="ITCM" +CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="DTCM" diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.overlay b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.overlay index 43b7fc3782656..82f0bbe94e899 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.overlay +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1060_evkb.overlay @@ -7,7 +7,7 @@ #include -&itcm { +&dtcm { zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>; }; diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.conf b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.conf index 8aa11602c69fd..433a67585be57 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.conf +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.conf @@ -1,3 +1,3 @@ CONFIG_CODE_DATA_RELOCATION=y CONFIG_MEM_ATTR_HEAP=y -CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="ITCM" +CONFIG_DMA_LOOP_TRANSFER_RELOCATE_SECTION="DTCM" diff --git a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.overlay b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.overlay index 43b7fc3782656..82f0bbe94e899 100644 --- a/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.overlay +++ b/tests/drivers/dma/chan_blen_transfer/boards/mimxrt1064_evk.overlay @@ -7,7 +7,7 @@ #include -&itcm { +&dtcm { zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>; };