From 612b905d7dc704fb34fd9856aa3b3eedcf73c7d2 Mon Sep 17 00:00:00 2001 From: Marek Matej Date: Wed, 14 May 2025 12:54:46 +0200 Subject: [PATCH] samples: boards: espressif: extend SPIRAM test Add byte, word, and dword test patterns to SPIRAM test. Signed-off-by: Marek Matej --- .../boards/espressif/spiram_test/src/main.c | 63 ++++++++++++++++++- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/samples/boards/espressif/spiram_test/src/main.c b/samples/boards/espressif/spiram_test/src/main.c index dcd3bad8983..2638c6d36d8 100644 --- a/samples/boards/espressif/spiram_test/src/main.c +++ b/samples/boards/espressif/spiram_test/src/main.c @@ -9,13 +9,70 @@ #include #include +#define BUF_SIZE (4096*8) +#define BYTE_PAT 0xa5 +#define WORD_PAT 0xaa55 +#define DWORD_PAT 0xaaaa5555 + int main(void) { - int *m_ext, *m_int; + uint32_t *m_ext, *m_int; + uint16_t *m_ext_w; + uint8_t *m_ext_b; + int err_b, err_w, err_dw; + int i; - m_ext = shared_multi_heap_aligned_alloc(SMH_REG_ATTR_EXTERNAL, 32, 4096); + m_ext = shared_multi_heap_aligned_alloc(SMH_REG_ATTR_EXTERNAL, 32, BUF_SIZE); + m_ext_b = (uint8_t *) m_ext; + m_ext_w = (uint16_t *) m_ext; + err_b = err_w = err_dw = 0; - if (!esp_ptr_external_ram(m_ext)) { + /* Byte access */ + for (i = 0; i < BUF_SIZE; i++) { + m_ext_b[i] = BYTE_PAT; + } + + for (i = 0; i < BUF_SIZE; i++) { + if (m_ext_b[i] != BYTE_PAT) { + err_b++; + } + } + + if (err_b) { + printk("Byte access errors: %d\n", err_b); + } + + /* Word access */ + for (i = 0; i < BUF_SIZE / 2; i++) { + m_ext_w[i] = WORD_PAT; + } + + for (i = 0; i < BUF_SIZE / 2; i++) { + if (m_ext_w[i] != WORD_PAT) { + err_w++; + } + } + + if (err_w) { + printk("Word access errors: %d\n", err_w); + } + + /* DWord access */ + for (i = 0; i < BUF_SIZE / 4; i++) { + m_ext[i] = DWORD_PAT; + } + + for (i = 0; i < BUF_SIZE / 4; i++) { + if (m_ext[i] != DWORD_PAT) { + err_dw++; + } + } + + if (err_dw) { + printk("DWord access errors: %d\n", err_dw); + } + + if (!esp_ptr_external_ram(m_ext) && !err_b && !err_w && !err_dw) { printk("SPIRAM mem test failed\n"); } else { printk("SPIRAM mem test pass\n");