93 lines
4.7 KiB
ReStructuredText
93 lines
4.7 KiB
ReStructuredText
Zephyr eRPC tests
|
|
#################
|
|
|
|
This folder contains all the necessary files to test eRPC with Zephyr.
|
|
The folder contains two folders for dual core testing - `rpmsglite/` and PC-Board testing via UART - `uart/`.
|
|
|
|
To build images for the primary and secondary core, Zephyr requires the use of `sysbuild`. The primary `CMakeLists.txt` is
|
|
located in the unit test folder, while the `CMakeLists.txt` for the secondary core is
|
|
located in the nested `remote` folder. The `sysbuild.cmake` directs the Zephyr build system to
|
|
first build the secondary core and then link it to the primary image.
|
|
|
|
Directory structure
|
|
*******************
|
|
|
|
* **cmake/** CMake files used for building tests
|
|
* **rpmsglite/cmake/** CMake files for sysbuild and tests
|
|
* **uart/cmake/** CMake files for tests
|
|
* **rpmsglite/config/** Configuration files for both cores
|
|
* **uart/config/** Configuration files for UART tests
|
|
* **rpmsglite/test\_xxx/** Directories with tests. Contains primary and remote CMakeLists.txt, sysbuild.cmake and testcase.yaml
|
|
* **uart/test\_xxx/** Directories with tests. Contains CMakeLists.txt and testcase.yaml
|
|
|
|
Running tests
|
|
*************
|
|
|
|
Note: To generate eRPC code, CMake requires `erpcgen` executable to be in Path.
|
|
If you have already builded `erpcgen`, add it to the path. Windows:
|
|
|
|
.. code-block:: console
|
|
|
|
$env:PATH = $env:PATH + ';C:\path\to\erpc\erpcgen\' # Windows
|
|
|
|
All tests (RPMSG-Lite and UART) can be executed with Zephyr's Twister:
|
|
|
|
.. code-block:: console
|
|
|
|
west twister --device-testing --device-serial COM8 -T .\erpc\test\zephyr -p mimxrt1160_evk_cm7 --west-flash --west-runner=jlink
|
|
|
|
For executing tests on one core boards (mimxrt1060_evk):
|
|
|
|
.. code-block:: console
|
|
|
|
west twister --device-testing --device-serial COM8 -T .\erpc\test\zephyr\uart -p mimxrt1060_evkb
|
|
|
|
* `--device-testing` Run tests on device
|
|
* `--device-serial` Select port where is the device connected
|
|
* `-T` Path where Twister looks for test cases (testcase.yaml)
|
|
* `-p` Name of the device
|
|
* `--west-flash` is required to be able build sysbuild tests.
|
|
* `--west-runner` Runner used to flash board
|
|
|
|
Test's structure notes
|
|
######################
|
|
|
|
Each test suite has it's own `cmake/unit_test.cmake`. Each test has its own folder with a CMakeLists files that include `cmake/unit_test.cmake`, which includes
|
|
Zephyr and all necessary variables. These variables can be overridden in the test's CMakeLists file. Finally, the `zephyr/cmake/test.cmake`` file is included.
|
|
Ensure that all sources and includes are added to the test when included. If the client is involved, add the gtest as well.
|
|
|
|
`cmake/unit_test.cmake` has to define `ERPC_ROOT_DIR`, `ZEPHYR_TEST_CMAKE_DIR` and `ERPC_ROOT_DIR`.
|
|
Additionally `TRANSPORT` and `APP_TYPE` has to be specified in test's `CMakeLists.txt` or in `unit_test.cmake` before including `zephyr/cmake/variables.cmake`.
|
|
|
|
Variable
|
|
********
|
|
|
|
* **RPMSG_LITE_REMOTE_BOARD** Remote board selected based on build board
|
|
* **APP_TYPE** CLIENT/SERVER, specified in projects's CMakeLists
|
|
* **TRANSPORT** In this case always `zephyr_uart` or `zephyr_rpmsg_lite`
|
|
* **TEST_NAME** Name of the test - test_binary, ...
|
|
* **TEST_SOURCE_DIR** Source dir of the test implementation
|
|
* **TEST_COMMON_DIR** Common dir of the erpc test (`erpc/test/common``)
|
|
* **ERPC_NAME** Default `test`, can be overridden
|
|
* **ERPC_NAME_APP** Default ERPC_NAME, overridden
|
|
* **TEST_OUT_DIR** The binary directory where the test is builded
|
|
* **ERPC_OUT_ROOT_DIR** The root directory for the erpc shim code is generation
|
|
* **ERPC_OUT_DIR** Name of the directory where shim code is generated (Default: erpc_outputs)
|
|
* **TEST_ERPC_OUT_DIR** The directory where the erpc shim code is generated
|
|
* **GENERATE_ERPC_IDL_FILES** If FALSE, test.cmake file will not generate the shim code
|
|
* **IDL_FILE** IDL file that is used for generating
|
|
* **TEST_EXT_SOURCES** External sources that are added to the app
|
|
* **TEST_EXT_INCLUDES** External includes that are added to the app
|
|
|
|
Files
|
|
*****
|
|
|
|
* **cmake/test.cmake** Generate shim code, add sources and includes to the target, link Configuration files to erpc and rpmsg_lite
|
|
* **cmake/variables.cmake** Set default variables
|
|
* **{rpmsglite,uart}/cmake/unit_test.cmake** Main cmake for server and client, includes Zephyr package and variables.cmake
|
|
* **rpmsglite/cmake/sysbuild.cmake** Common sysbuild for all test. Has to be included from test's folder in file named **sysbuild.cmake**
|
|
* **rpmsglite/cmake/rpmsg_lite.cmake** Used in sysbuild.cmake to determinate remote board
|
|
* **{rpmsglite,uart}/test_xxx/testcase.yaml** Define test, so it can be discoverd by Twister
|
|
* **{rpmsglite,uart}/test_xxx/CMakeLists.cmake** CMake for the test
|
|
* **rpmsglite/test_xxx/sysbuild.cmake** Includes cmake/sysbuild.cmake. Used by Zephyr's sysbuild system
|
|
* **rpmsglite/test_xxx/remote/CMakeLists.cmake** CMake for the server |