mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-23 20:46:48 +00:00
Kernel timeouts have always been a 32 bit integer despite the existence of generation macros, and existing code has been inconsistent about using them. Upcoming commits are going to make the timeout arguments opaque, so fix things up to be rigorously correct. Changes include: + Adding a K_TIMEOUT_EQ() macro for code that needs to compare timeout values for equality (e.g. with K_FOREVER or K_NO_WAIT). + Adding a k_msleep() synonym for k_sleep() which can continue to take integral arguments as k_sleep() moves away to timeout arguments. + Pervasively using the K_MSEC(), K_SECONDS(), et. al. macros to generate timeout arguments. + Removing the usage of K_NO_WAIT as the final argument to K_THREAD_DEFINE(). This is just a count of milliseconds and we need to use a zero. This patch include no logic changes and should not affect generated code at all. Signed-off-by: Andy Ross <andrew.j.ross@intel.com> |
||
---|---|---|
.. | ||
src | ||
CMakeLists.txt | ||
prj.conf | ||
README.rst | ||
sample.yaml |
.. _arc_secure_service: ARC Secure Service ################## Overview ******** This sample implements a simple secure service based on ARC SecureShield to demonstrate how a secure zephyr application runs together with a normal Zephyr application. In this sample: * Secure application will be in the secure memory space defined in ``arc_mpu_regions.c``. Half of RAM and ROM is allocated to secure world, the other half is allocated to normal world. * Memory not allocated to the secure application is allocated to the normal application. * By default, all the peripheral space is normal mode accessible, i.e., the peripherals are shared between normal mode and secure mode. If some peripherals are required by secure world, it can be done by adding static mpu entry in ``arc_mpu_regions.c``. * The interrupts of two internal timers are configure as normal interrupts, so the normal zephyr's kernel tick can work correctly. * Secure interrupts priority > secure threads priority > normal interrupts priority > normal threads priority. Requirements ************ To use this sample, ARC processor should be equipped with ARC SecureShield. In Zephyr, the following board configurations are supported: * em_starterkit_em7d * secure application: em_starterkit_em7d_secure * normal application: em_starterkit_em7d_normal * nsim_sem * secure application: nsim_sem * normal application: nsim_sem_normal Building and Running ******************** Building ======== Secure application ^^^^^^^^^^^^^^^^^^ First, you should build the secure application. .. zephyr-app-commands:: :zephyr-app: samples/boards/arc_secure_services :board: em_starterkit_em7d_secure nsim_sem :goals: build :compact: Normal application ^^^^^^^^^^^^^^^^^^ Currently, in normal application, MPU is not accessible, so no user space and mpu-based stack checking. Here,take :ref:'dining-philosophers-sample' as an example for normal application. .. zephyr-app-commands:: :zephyr-app: samples/philosophers :board: em_starterkit_em7d_normal nsim_sem_normal :goals: build :compact: Running ======= * Run using the bootloader The bootloader should load the secure and normal application into the correct place, then jump to the entry of the secure application. The entry of normal application is hardcoded in secure application. Secure application will boot normal application. * Run using the debugger (recommended) Use the gdb debugger to load and run the two applications. For em starter kit, run the following commands .. code-block:: console # load secure application first $ cd samples/boards/arc_secure_services/build $ west debug # load normal application $ monitor load_image ../../../philosophers/build/zepher/zephyr.elf $ c For nsim sem, you need two consoles: one for application output, and one for debugger. In the console for output: .. code-block:: console # open debug server $ cd samples/boards/arc_secure_services/build $ west debugserver In the console for debugger: .. code-block:: console # open debug server $ cd samples/boards/arc_secure_services/build $ arc-elf32-gdb zephyr/zephyr.elf $ target remote :3333 # load normal application $ load ../../../philosophers/build/zepher/zephyr.elf # load secure application $ load $ c