devicetree_regions: Fix fallback on token

Fix the wrong fallback on token and add a new test to catch this kind of
errors early.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
This commit is contained in:
Carlo Caione 2022-03-31 14:27:14 +02:00 committed by Marti Bolivar
commit cd51657ed1
7 changed files with 173 additions and 16 deletions

View file

@ -17,10 +17,8 @@
static void test_linker_regions(void)
{
zassert_true(!strcmp(STRINGIFY(LINKER_DT_NODE_REGION_NAME(TEST_SRAM1)),
"SRAM_REGION"), "");
zassert_true(!strcmp(STRINGIFY(LINKER_DT_NODE_REGION_NAME(TEST_SRAM2)),
"SRAM_REGION_2"), "");
zassert_true(!strcmp(LINKER_DT_NODE_REGION_NAME(TEST_SRAM1), "SRAM_REGION"), "");
zassert_true(!strcmp(LINKER_DT_NODE_REGION_NAME(TEST_SRAM2), "SRAM_REGION_2"), "");
}
void test_main(void)

View file

@ -0,0 +1,9 @@
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(memory_region)
FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})

View file

@ -0,0 +1,16 @@
/*
* Copyright (c) 2022, Carlo Caione <ccaione@baylibre.com>
*/
/ {
test {
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
test_sram: sram@20010000 {
compatible = "zephyr,memory-region", "mmio-sram";
reg = < 0x20010000 0x1000 >;
zephyr,memory-region = "SRAM_REGION";
};
};
};

View file

@ -0,0 +1 @@
CONFIG_ZTEST=y

View file

@ -0,0 +1,44 @@
/*
* Copyright (c) 2022, Carlo Caione <ccaione@baylibre.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <ztest.h>
#include <devicetree.h>
#include <device.h>
#include <linker/devicetree_regions.h>
#define TEST_SRAM_NODE DT_NODELABEL(test_sram)
#define TEST_SRAM_SECT LINKER_DT_NODE_REGION_NAME(TEST_SRAM_NODE)
#define TEST_SRAM_ADDR DT_REG_ADDR(TEST_SRAM_NODE)
#define TEST_SRAM_SIZE DT_REG_SIZE(TEST_SRAM_NODE)
uint8_t var_in_test_sram[TEST_SRAM_SIZE] Z_GENERIC_SECTION(TEST_SRAM_SECT);
extern char __SRAM_REGION_start[];
extern char __SRAM_REGION_end[];
extern char __SRAM_REGION_size[];
extern char __SRAM_REGION_load_start[];
static void test_memory_region(void)
{
zassert_true(!strcmp(LINKER_DT_NODE_REGION_NAME(TEST_SRAM_NODE), "SRAM_REGION"), "");
zassert_equal_ptr(var_in_test_sram, TEST_SRAM_ADDR, "");
zassert_equal_ptr(__SRAM_REGION_start, TEST_SRAM_ADDR, "");
zassert_equal_ptr(__SRAM_REGION_end, TEST_SRAM_ADDR + TEST_SRAM_SIZE, "");
zassert_equal_ptr(__SRAM_REGION_load_start, TEST_SRAM_ADDR, "");
zassert_equal((unsigned long) __SRAM_REGION_size, TEST_SRAM_SIZE, "");
}
void test_main(void)
{
ztest_test_suite(devicetree_memory_region,
ztest_unit_test(test_memory_region)
);
ztest_run_test_suite(devicetree_memory_region);
}

View file

@ -0,0 +1,11 @@
tests:
libraries.devicetree.memory_region:
platform_allow: qemu_cortex_m3
tags: devicetree
libraries.devicetree.memory_region.linker_generator:
platform_allow: qemu_cortex_m3
tags: devicetree
extra_configs:
- CONFIG_CMAKE_LINKER_GENERATOR=y