.. _module-pw_boot_armv7m:

--------------
pw_boot_armv7m
--------------

The ARMv7-M boot module provides a linker script and some early initialization
of static memory regions and C++ constructors. This is enough to get many
ARMv7-M cores booted and ready to run C++ code.

This module is currently designed to support a very minimal device memory layout
configuration:

 - One contiguous region for RAM.
 - One contiguous region for flash.
 - Static, in-flash vector table at the default location expected by the SoC.

Note that this module is not yet particularly suited for projects that utilize
a bootloader, as it's relatively opinionated regarding where code is stored.

.. warning::
  This module is currently NOT stable! Depending on this module may cause
  breakages as this module is updated.

Sequence
========

The high level pw_boot_armv7m boot sequence looks like the following psuedo-code
invocation of the user-implemented functions:

.. code:: cpp

  void pw_boot_Entry() {  // Boot entry point.
    pw_boot_PreStaticMemoryInit();  // User-implemented function.
    // Static memory initialization.
    pw_boot_PreStaticConstructorInit();  // User-implemented function.
    // C++ static constructors are invoked.
    pw_boot_PreMainInit();  // User-implemented function.
    main();  // User-implemented function.
    pw_boot_PostMain();  // User-implemented function.
    PW_UNREACHABLE;
  }

Setup
=====

User-Implemented Functions
--------------------------
This module expects all of these extern "C" functions to be defined outside this
module:

 - ``int main()``: This is where applications reside.
 - ``void pw_boot_PreStaticMemoryInit()``: This function executes just before
   static memory has been zeroed and static data is intialized. This function
   should set up any early initialization that should be done before static
   memory is initialized, such as:

   - Enabling the FPU or other coprocessors.
   - Opting into extra restrictions such as disabling unaligned access to ensure
     the restrictions are active during static RAM initialization.
   - Initial CPU clock, flash, and memory configurations including potentially
     enabling extra memory regions with .bss and .data sections, such as SDRAM
     or backup powered SRAM.
   - Fault handler initialization if required before static memory
     initialization.

   .. warning::
     Code running in this hook is violating the C spec as static values are not
     yet initialized, meaning they have not been loaded (.data) nor
     zero-initialized (.bss).

 - ``void pw_boot_PreStaticConstructorInit()``: This function executes just
   before C++ static constructors are called. At this point, other static memory
   has been zero or data initialized. This function should set up any early
   initialization that should be done before C++ static constructors are run,
   such as:

   - Run time dependencies such as Malloc, and ergo sometimes the RTOS.
   - Persistent memory that survives warm reboots.
   - Enabling the MPU to catch nullptr dereferences during construction.
   - Main stack watermarking.
   - Further fault handling configuration necessary for your platform which
     were not safe before pw_boot_PreStaticRamInit().
   - Boot count and/or boot session UUID management.

 - ``void pw_boot_PreMainInit()``: This function executes just before main, and
   can be used for any device initialization that isn't application specific.
   Depending on your platform, this might be turning on a UART, setting up
   default clocks, etc.

 - ``PW_NO_RETURN void pw_boot_PostMain()``: This function executes after main
   has returned. This could be used for device specific teardown such as an
   infinite loop, soft reset, or QEMU shutdown. In addition, if relevant for
   your application, this would be the place to invoke the global static
   destructors. This function must not return!


If any of these functions are unimplemented, executables will encounter a link
error.

Required Configs
----------------
This module has a number of required configuration options that mold the linker
script to fit to a wide variety of ARMv7-M SoCs. The ``pw_boot_armv7m_config``
GN variable has a ``defines`` member that can be used to modify these linker
script options. See the documentation section on configuration for information
regarding which configuration options are required.

Vector Table
------------
Targets using ``pw_boot_armv7m`` will need to provide an ARMv7-M interrupt
vector table (ARMv7-M Architecture Reference Manual DDI 0403E.b section B1.5.2
and B1.5.3). This is done by storing an array into the ``.vector_table``
section, and properly configuring ``PW_BOOT_VECTOR_TABLE_*`` preprocessor
defines to cover the address region your SoC expects the vector table to be
located at (often the beginning of the flash region). If using a bootloader,
ensure VTOR (Vector Table Offset Register) is configured to point to the vector
table. Otherwise, refer to the hardware vendor's documentation to determine
where the vector table should be located such that it resides where VTOR is
initialized to by default.

Example vector table:

.. code-block:: cpp

  typedef void (*InterruptHandler)();

  PW_KEEP_IN_SECTION(".vector_table")
  const InterruptHandler vector_table[] = {
      // The starting location of the stack pointer.
      // This address is NOT an interrupt handler/function pointer, it is simply
      // the address that the main stack pointer should be initialized to. The
      // value is reinterpret casted because it needs to be in the vector table.
      [0] = reinterpret_cast<InterruptHandler>(&pw_boot_stack_high_addr),

      // Reset handler, dictates how to handle reset interrupt. This is the
      // address that the Program Counter (PC) is initialized to at boot.
      [1] = pw_boot_Entry,

      // NMI handler.
      [2] = DefaultFaultHandler,
      // HardFault handler.
      [3] = DefaultFaultHandler,
      ...
  };

Usage
=====

Publicly exported symbols
-------------------------
The linker script provided by this module exports a number of symbols that
may be used to retrieve the locations of specific memory regions at runtime.
These symbols are declared as ``uint8_t`` variables. The variables themselves
do not contain the addresses, they only reside at the memory location they
reference. To retrieve the memory locations, simply take the reference of the
symbol (e.g. ``&pw_boot_vector_table_addr``).

``pw_boot_heap_[low/high]_addr``: Beginning and end of the memory range of the heap.
These addresses may be identical, indicating a heap with a size of zero bytes.

``pw_boot_stack_[low/high]_addr``: Beginning and end of the memory range of the main
stack. This might not be the only stack in the system.

``pw_boot_vector_table_addr``: Beginning of the ARMv7-M interrupt vector table.

Configuration
=============
These configuration options can be controlled by appending list items to
``pw_boot_armv7m_LINK_CONFIG_DEFINES`` as part of a Pigweed target
configuration.

``PW_BOOT_HEAP_SIZE`` (required):
How much memory (in bytes) to reserve for the heap. This can be zero.

``PW_BOOT_MIN_STACK_SIZE`` (required):
The minimum size reserved for the main stack. If statically allocated memory
begins to cut into the minimum, a link error will be emitted.

``PW_BOOT_FLASH_BEGIN`` (required):
The start address of the MCU's flash region. This region must NOT include the
vector table. (i.e. if the VECTOR_TABLE is in flash, the flash region
should begin *after* the vtable)

``PW_BOOT_FLASH_SIZE`` (required):
Size of the flash region in bytes.

``PW_BOOT_RAM_BEGIN`` (required):
The start address of the MCU's RAM region.

``PW_BOOT_RAM_SIZE`` (required):
Size of the RAM region in bytes.

``PW_BOOT_VECTOR_TABLE_BEGIN`` (required):
Address the target MCU expects the link-time vector table to be located at. This
is typically the beginning of the flash region. While the vector table may be
changed later in the boot process, a minimal vector table MUST be present for
the MCU to operate as expected.

``PW_BOOT_VECTOR_TABLE_SIZE`` (required):
Number of bytes to reserve for the ARMv7-M vector table.

Dependencies
============
  * ``pw_preprocessor`` module
