79e6b0e0f6
As of today <zephyr/zephyr.h> is 100% equivalent to <zephyr/kernel.h>. This patch proposes to then include <zephyr/kernel.h> instead of <zephyr/zephyr.h> since it is more clear that you are including the Kernel APIs and (probably) nothing else. <zephyr/zephyr.h> sounds like a catch-all header that may be confusing. Most applications need to include a bunch of other things to compile, e.g. driver headers or subsystem headers like BT, logging, etc. The idea of a catch-all header in Zephyr is probably not feasible anyway. Reason is that Zephyr is not a library, like it could be for example `libpython`. Zephyr provides many utilities nowadays: a kernel, drivers, subsystems, etc and things will likely grow. A catch-all header would be massive, difficult to keep up-to-date. It is also likely that an application will only build a small subset. Note that subsystem-level headers may use a catch-all approach to make things easier, though. NOTE: This patch is **NOT** removing the header, just removing its usage in-tree. I'd advocate for its deprecation (add a #warning on it), but I understand many people will have concerns. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no> |
||
---|---|---|
.. | ||
src | ||
CMakeLists.txt | ||
prj.conf | ||
prj_single.conf | ||
README.rst | ||
sample.yaml |
.. _mpu_test: Memory Protection Unit (MPU) Sample ################################### Overview ******** This application provides a set options to check the correct MPU configuration against the following security issues: * Read at an address that is reserved in the memory map. * Write into the boot Flash/ROM. * Run code located in SRAM. If the MPU configuration is correct each option selected ends up in an MPU fault. Building and Running ******************** This project can be built and executed as follows: .. zephyr-app-commands:: :zephyr-app: samples/mpu/mpu_test :board: v2m_beetle :goals: build flash :compact: To build the single thread version, use the supplied configuration file for single thread: :file:`prj_single.conf`: .. zephyr-app-commands:: :zephyr-app: samples/mpu/mpu_test :board: v2m_beetle :conf: prj_single.conf :goals: run :compact: To build a version that allows writes to the flash device, edit ``prj.conf``, and follow the directions in the comments to enable the proper configs. Sample Output ============= .. code-block:: console uart:~$ mpu read <err> os: ***** BUS FAULT ***** <err> os: Precise data bus error <err> os: BFAR Address: 0x24000000 <err> os: r0/a1: 0x00009a5c r1/a2: 0x00000008 r2/a3: 0x20001aa8 <err> os: r3/a4: 0x24000000 r12/ip: 0x00000000 r14/lr: 0x000029b7 <err> os: xpsr: 0x21000000 <err> os: Faulting instruction address (r15/pc): 0x000003c8 <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 <err> os: Current thread: 0x20000708 (shell_uart) <err> os: Halting system .. code-block:: console uart:~$ mpu write write address: 0x4000 <err> os: ***** MPU FAULT ***** <err> os: Data Access Violation <err> os: MMFAR Address: 0x4000 <err> os: r0/a1: 0x00000000 r1/a2: 0x0000000e r2/a3: 0x0badc0de <err> os: r3/a4: 0x00004000 r12/ip: 0x00000004 r14/lr: 0x000003ab <err> os: xpsr: 0x61000000 <err> os: Faulting instruction address (r15/pc): 0x000003b2 <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 <err> os: Current thread: 0x20000708 (shell_uart) <err> os: Halting system .. code-block:: console uart:~$ mpu run <err> os: ***** MPU FAULT ***** <err> os: Instruction Access Violation <err> os: r0/a1: 0x00009a5c r1/a2: 0x00000001 r2/a3: 0x20001aa8 <err> os: r3/a4: 0x20000000 r12/ip: 0x00000000 r14/lr: 0x00006673 <err> os: xpsr: 0x60000000 <err> os: Faulting instruction address (r15/pc): 0x20000000 <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0 <err> os: Current thread: 0x20000708 (shell_uart) <err> os: Halting system