# System and memory

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

**Parent Topic:** [Framework and programming model](https://docs.qualcomm.com/doc/80-58740-1/topic/framework_and_programming_model.html)

## System architecture

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

The chip adopts 32-bit RISC-V CPU, equipped with 32KB I-Cache and16 KB D-Cache, CPU
      frequency up to 325 MHz, suitable for high-performance applications such as Internet of
      Things, embedded and artificial intelligence.

The main system consists of the following parts:

- Bus interface
    - CPU accesses memory through the AXI bus
    - CPU accesses peripherals through the AHB bus
    - With low power consumption, high performance and other characteristics
- Memory
    - 484KB SRAM for data storage
    - 128KB ROM
    - Support embedded high-speed pSRAM, expandable RAM capacity
- Peripherals
    - A total of 30 peripheral modules, including advanced peripherals such as
            SDH/SDU/EMAC/CAM/Display

The Wi-Fi 6 + BT/BLE + 802.15.4 wireless subsystem is integrated on-chip, which can
      support a variety of wireless connections and data transmission, and provide various
      connection and transmission experiences.

The system architectures of the chip is shown in the following figure.

Figure : QCC74x system architecture

![](data:image/png;base64,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)

## CPU

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

### Features

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

The chip has a built-in 32‑bit RISC-V CPU, uses a 5-stage pipeline: fetch, decode,
      execute, memory access, and write back. This high-performance embedded microprocessor has the
      following features:

- 32‑bit RISC-V processor
- Supports RISC-V RV32IMAFCP instruction set
- Supports RISC-V 32‑bit/16‑bit mixed instruction set
- Supports RISC-V machine mode and user mode
- Thirty-two 32‑bit integer general-purpose registers (GPR) and thirty-two
        32‑bit/64‑bit floating-point GPRs
- Integer (5-stage)/floating-point (7-stage), single-issue, sequentially executed
        pipeline
- Supports AXI 4.0 main device interface and AHB 5.0 peripheral
interface
- 32KB instruction cache, two-way set associative structure
- 16KB data cache, two-way set associative structure
- Unaligned memory access
- Double-cycle hardware multiplier and Radix-4 hardware divider
- Supports BHT (8K) and BTB
- Supports extended enhanced instruction set
- Supports MCU feature extension technique, including interrupt
processing acceleration technique and MCU extension feature
- Compatible with RISC-V CLIC interrupt standard and interrupt nesting; 96 external
        interrupt sources, 4 bits for configuring interrupt priority
- Compatible with RISC-V PMP, 8 configurable areas
- Supports hardware performance monitor (HPM) units
- Supports <cite class="cite">RISC-V Debug Specification</cite>

### Extended functions

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

- Bit operation instruction, arithmetic operation instruction,
and enhanced memory access instruction
- Cache operation instruction and synchronization instruction, making programming
        easy for software programmers
- Interrupt speculative push technique and vector interrupt tail-biting technique,
        accelerated interrupt response, with interrupt response delay of 20 processor clock
        cycles
- Common application requirements in MCU fields like NMI, low-power mode for
        deep/light sleep, low-power wake-up events, and locking
- Supports unaligned memory access, which can be enabled/disabled
by software, making programming and debugging easy for software
programmers

### Implemented standards

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

The processor is compatible with the RISC-V standard and the specific versions
      are:

- <cite class="cite">The RISC-V Instruction Set Manual, Volume I: RISC-V User Level ISA, Version
          2.2</cite>
- <cite class="cite">The RISC-V Instruction Set Manual, Volume II: RISC-V Privileged
          Architecture, Version1.10</cite>
- <cite class="cite">RISC-V Core-Local Interrupt Controller (CLIC) Version 0.8</cite>
- <cite class="cite">RISC-V External Debug Support Version 0.13.2</cite>
- <cite class="cite">RISC-V "P" Extension Proposal Version 0.9</cite>

## Boot process

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

This section introduces the steps involved in the start-up process of the chip, from
      power-on to the execution of the main function.

Figure : Start-up flow diagram

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export Startup_flow_diagram.svg bl616_startup_flow -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.20833in" height="3.66667in" viewbox="0 0 303 264" xml:space="preserve" color-interpolation-filters="sRGB" class="st10 svg-1"><v:documentproperties v:langid="1033" v:viewmarkup="false"></v:documentproperties>
<style>.svg-1 .st1 { fill: none; stroke: #000000; stroke-linecap: butt; stroke-width: 1 }
.svg-1 .st2 { fill: none; stroke: none; stroke-linecap: butt; stroke-width: 0.75 }
.svg-1 .st3 { fill: #ffffff; font-family: Calibri; font-size: 0.75em }
.svg-1 .st4 { fill: none }
.svg-1 .st5 { stroke: #000000; stroke-linecap: butt; stroke-width: 0.75 }
.svg-1 .st6 { fill: none; stroke: #000000; stroke-linecap: butt; stroke-width: 0.75 }
.svg-1 .st7 { fill: #000000; font-family: Calibri; font-size: 0.75em }
.svg-1 .st8 { font-family: Microsoft YaHei; font-size: 1em }
.svg-1 .st9 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.22935779816514 }
.svg-1 .st10 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="1-mrkr13-48" class="st9" v:arrowtype="13" v:arrowsize="2" v:setback="13.08" refx="-13.08" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-4.36,-4.36) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>bl616_startup_flow</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape3-1" v:mid="3" v:groupcontext="shape" transform="translate(1.125,-8.625)">		<title>Sheet.3</title>		<rect x="0" y="204" width="300" height="60" class="st1"></rect>	</g>	<g id="shape4-3" v:mid="4" v:groupcontext="shape" transform="translate(138.35,-34.425)">		<title>Sheet.4</title>		<desc>...</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.525" cy="258.6" width="27.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="27.05" height="10.8" class="st2"></rect>		<text x="10.12" y="261.3" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>...</text>		</g>	<g id="shape5-6" v:mid="5" v:groupcontext="shape" transform="translate(1.125,-68.625)">		<title>Sheet.5</title>		<rect x="0" y="204" width="300" height="60" class="st1"></rect>	</g>	<g id="shape6-8" v:mid="6" v:groupcontext="shape" transform="translate(138.35,-94.425)">		<title>Sheet.6</title>		<desc>...</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.525" cy="258.6" width="27.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="27.05" height="10.8" class="st2"></rect>		<text x="10.12" y="261.3" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>...</text>		</g>	<g id="shape7-11" v:mid="7" v:groupcontext="shape" transform="translate(1.125,-128.625)">		<title>Sheet.7</title>		<rect x="0" y="136.5" width="300" height="127.5" class="st1"></rect>	</g>	<g id="shape8-13" v:mid="8" v:groupcontext="shape" transform="translate(138.35,-188.175)">		<title>Sheet.8</title>		<desc>...</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.525" cy="258.6" width="27.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="27.05" height="10.8" class="st2"></rect>		<text x="10.12" y="261.3" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>...</text>		</g>	<g id="shape9-16" v:mid="9" v:groupcontext="shape" transform="translate(91.125,-200.903)">		<title>Sheet.9</title>		<path d="M0 238.78 L0 264 L0 238.78 Z" class="st4"></path>		<path d="M0 238.78 L0 264" class="st5"></path>	</g>	<g id="shape10-19" v:mid="10" v:groupcontext="shape" transform="translate(88.5,-196.965)">		<title>Sheet.10</title>		<path d="M2.62 264 L0 258.75 L2.62 260.06 L5.25 258.75 L2.62 264 Z" class="st6"></path>	</g>	<g id="shape11-21" v:mid="11" v:groupcontext="shape" transform="translate(46.125,-226.125)">		<title>Sheet.11</title>		<path d="M0 259.5 A4.5001 4.5001 -180 0 0 4.5 264 L85.5 264 A4.5001 4.5001 -180 0 0 90 259.5 L90 238.5 A4.5001 4.5001					 -180 0 0 85.5 234 L4.5 234 A4.5001 4.5001 -180 0 0 0 238.5 L0 259.5 Z" class="st6"></path>	</g>	<g id="shape12-23" v:mid="12" v:groupcontext="shape" transform="translate(69.35,-236.925)">		<title>Sheet.12</title>		<desc>Start</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="22.525" cy="258.6" width="45.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="45.05" height="10.8" class="st2"></rect>		<text x="13.72" y="261.3" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Start</text>		</g>	<g id="shape13-26" v:mid="13" v:groupcontext="shape" transform="translate(91.125,-110.903)">		<title>Sheet.13</title>		<path d="M0 238.78 L0 264 L0 238.78 Z" class="st4"></path>		<path d="M0 238.78 L0 264" class="st5"></path>	</g>	<g id="shape14-29" v:mid="14" v:groupcontext="shape" transform="translate(88.5,-106.965)">		<title>Sheet.14</title>		<path d="M2.62 264 L0 258.75 L2.62 260.06 L5.25 258.75 L2.62 264 Z" class="st6"></path>	</g>	<g id="shape15-31" v:mid="15" v:groupcontext="shape" transform="translate(166.125,-166.125)">		<title>Sheet.15</title>		<path d="M0 264 L25.22 264 L0 264 Z" class="st4"></path>		<path d="M0 264 L25.22 264" class="st5"></path>	</g>	<g id="shape16-34" v:mid="16" v:groupcontext="shape" transform="translate(190.035,-163.5)">		<title>Sheet.16</title>		<path d="M5.25 261.37 L0 264 L1.31 261.37 L0 258.75 L5.25 261.37 Z" class="st6"></path>	</g>	<g id="shape17-36" v:mid="17" v:groupcontext="shape" transform="translate(16.125,-136.125)">		<title>Sheet.17</title>		<path d="M75 204 L150 234 L75 264 L0 234 L75 204 Z" class="st6"></path>	</g>	<g id="shape18-38" v:mid="18" v:groupcontext="shape" transform="translate(-2.65,-161.925)">		<title>Sheet.18</title>		<desc>Boot Pin Status High/Low</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="94.525" cy="258.6" width="189.06" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="189.05" height="10.8" class="st2"></rect>		<text x="43.65" y="261.33" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Boot Pin Status High/Low<tspan class="st8">？</tspan></text>		</g>	<g id="shape19-42" v:mid="19" v:groupcontext="shape" transform="translate(91.125,-50.9025)">		<title>Sheet.19</title>		<path d="M0 238.78 L0 264 L0 238.78 Z" class="st4"></path>		<path d="M0 238.78 L0 264" class="st5"></path>	</g>	<g id="shape20-45" v:mid="20" v:groupcontext="shape" transform="translate(88.5,-46.965)">		<title>Sheet.20</title>		<path d="M2.62 264 L0 258.75 L2.62 260.06 L5.25 258.75 L2.62 264 Z" class="st6"></path>	</g>	<g id="shape21-49" v:mid="21" v:groupcontext="shape" transform="translate(46.125,-76.125)">		<title>Sheet.21</title>		<path d="M0 259.5 A4.5001 4.5001 -180 0 0 4.5 264 L85.5 264 A4.5001 4.5001 -180 0 0 90 259.5 L90 238.5 A4.5001 4.5001					 -180 0 0 85.5 234 L4.5 234 A4.5001 4.5001 -180 0 0 0 238.5 L0 259.5 Z" class="st6"></path>	</g>	<g id="shape22-51" v:mid="22" v:groupcontext="shape" transform="translate(46.85,-86.925)">		<title>Sheet.22</title>		<desc>Bootloader</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="45.025" cy="258.6" width="90.06" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="90.05" height="10.8" class="st2"></rect>		<text x="24.59" y="261.3" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Bootloader</text>		</g>	<g id="shape23-54" v:mid="23" v:groupcontext="shape" transform="translate(196.125,-151.125)">		<title>Sheet.23</title>		<path d="M0 259.5 A4.5001 4.5001 -180 0 0 4.5 264 L93 264 A4.5001 4.5001 -180 0 0 97.5 259.5 L97.5 238.5 A4.5001 4.5001					 -180 0 0 93 234 L4.5 234 A4.5001 4.5001 -180 0 0 -0 238.5 L0 259.5 Z" class="st6"></path>	</g>	<g id="shape24-56" v:mid="24" v:groupcontext="shape" transform="translate(164.6,-161.925)">		<title>Sheet.24</title>		<desc>UART/SDIO Boot</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="81.025" cy="258.6" width="162.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="162.05" height="10.8" class="st2"></rect>		<text x="50.49" y="261.3" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>UART/SDIO Boot</text>		</g>	<g id="shape25-59" v:mid="25" v:groupcontext="shape" transform="translate(46.125,-16.125)">		<title>Sheet.25</title>		<path d="M0 259.5 A4.5001 4.5001 -180 0 0 4.5 264 L85.5 264 A4.5001 4.5001 -180 0 0 90 259.5 L90 238.5 A4.5001 4.5001					 -180 0 0 85.5 234 L4.5 234 A4.5001 4.5001 -180 0 0 -0 238.5 L0 259.5 Z" class="st6"></path>	</g>	<g id="shape26-61" v:mid="26" v:groupcontext="shape" transform="translate(78.35,-26.925)">		<title>Sheet.26</title>		<desc>APP</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.525" cy="258.6" width="27.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="27.05" height="10.8" class="st2"></rect>		<text x="6.27" y="261.3" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>APP</text>		</g>	<g id="shape27-64" v:mid="27" v:groupcontext="shape" transform="translate(83.625,-109.875)">		<title>Sheet.27</title>		<rect x="0" y="241.5" width="45" height="22.5" class="st2"></rect>	</g>	<g id="shape28-66" v:mid="28" v:groupcontext="shape" transform="translate(93.35,-112.5)">		<title>Sheet.28</title>		<desc>Low</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="13.525" cy="258.6" width="27.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="27.05" height="10.8" class="st2"></rect>		<text x="6.04" y="261.3" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>Low</text>		</g>	<g id="shape29-69" v:mid="29" v:groupcontext="shape" transform="translate(158.625,-166.125)">		<title>Sheet.29</title>		<rect x="0" y="241.5" width="45" height="22.5" class="st2"></rect>	</g>	<g id="shape30-71" v:mid="30" v:groupcontext="shape" transform="translate(163.85,-173.175)">		<title>Sheet.30</title>		<desc>High</desc>		<v:textblock v:margins="rect(0,0,0,0)"></v:textblock>		<v:textrect cx="18.025" cy="258.6" width="36.05" height="10.8"></v:textrect>		<rect x="0" y="253.2" width="36.05" height="10.8" class="st2"></rect>		<text x="9.71" y="261.3" class="st7" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>High</text>		</g></g>
</svg>

The chip boot process falls into two categories:

- Boot from flash
- Boot from UART/SDIO

Taking booting from flash as an example, the following describes the complete boot
      process of the chip in detail, which is divided into three steps:

1. The primary bootloader is embedded in the internal ROM of the chip. It reads the
        firmware header from the flash 0x0 offset address, completes chip-related configuration and
        checks based on the header parameters. After configuration, starts the secondary bootloader
        from the 0x2000 address.
2. The secondary bootloader reads the partition table from the flash and boots the
        latest main program firmware according to the partition table.
3. The application starts running, sets chip-related clocks, pins, and other
        configurations as needed by the user, and finally starts the RTOS scheduler.

### Primary bootloader

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

After the chip is reset or repowered, the CPU immediately starts running, performing
      a series of initialization operations to restore the chip to an initial state. The
      initialization reset code is fixed in the mask ROM of the chip and cannot be changed.

During the boot process, the primary bootloader determines the boot mode of the chip
      based on the level state of the HBN\_RSV0 register and GPIO2, where the HBN\_RSV0 register holds
      the flag for chip wake-up, with the specific execution process as follows:

1. Reset from deep sleep mode: Check the HBN\_RSV0 register to determine if a wake-up
        from deep sleep mode is requested. If so, wake up from deep sleep mode and enter the fast
        boot process. After verifying the flag in the HBN\_RSV0 register, the program uses the boot
        parameters stored at the OCRAM starting address, and immediately jump to that address to
        run. If the flag in the verified HBN\_RSV0 register is not valid, or if there is a boot
        anomaly, then it continues to boot as in a normal power-on reset process.
2. Power-on reset, software PWRON reset: Check the GPIO2 pin level to determine if
        boot from a flash image. If the GPIO2 pin level is 1 (High), it enters the UART/SDIO boot
        mode, which is mainly for flash writing or downloading images to RAM for execution (wireless
        pass-through scenario). If the GPIO2 pin level is 0 (Low), it enters the flash boot mode.
        After entering this mode, the secondary bootloader is generally run.
3. Secure boot: According to the configuration in eFuse, start the secure boot
        process, which checks the integrity and legality of the secondary bootloader's signature,
        and decides whether to enable flash decryption.

### Secondary bootloader

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

The image stored from the flash's 0x0 offset address (including firmware header) is
      the secondary bootloader. The source code of the secondary bootloader can be found in the
        boot2\_isp directory of the released SDK. The secondary bootloader can
      easily plan flash partition information through the partition table, and it supports secure
      boot, encrypted boot, signature verification, and Over-The-Air (OTA) update functions for user
      applications.

After the primary bootloader starts, it reads the firmware header from the beginning
      of the image, completes the related chip configuration and checks according to the firmware
      header, such as checking for encrypted boot, and so on. After configuration, it jumps to run
      the secondary bootloader.

After the secondary bootloader starts, it reads the partition table from the flash's
      0xE000 offset address by default (configurable). The default design uses A/B dual partition
      tables. The application firmware entity location will also be in two separate A/B partitions,
      which facilitate OTA. The secondary bootloader determines which partition to boot based on the
      active\_index and age information in the partition table. See the partition table instructions
      for specific reference.

For the partition that will be booted, the secondary bootloader reads the firmware
      header from the flash, checks the integrity and legality of the application's signature, and
      decides whether to enable flash decryption. Finally, it jumps to execute the application.

### Application boot stage

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

The application boot includes all processes from the start of the application's
      execution to before the user's APP `main` function. Divided into two
      stages:

- Power, clock, and basic C language run-time environment initialization
- Run the `main` function and call `main`

#### Hardware and system run-time environment initialization

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

The application entry starts executing from the `_start` within the
        `start.S` file. This initialization function establishes a basic C Runtime
      (CRT) and configures the internal hardware of the chip.

- Reconfigures the CPU exception vector for the application
- Initializes the Floating Point Unit (FPU)
- Sets the stack pointer
- Initializes internal memory (data and bss sections)
- Restores the CPU interrupt status register to its default state and enables
        interrupts
- Enables the cache
- If memory protection is configured, memory protection is
initialized.

After these operations are completed, the user's `main` function is
      called.

#### Running the main task

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

Once the necessary run-time environment is initialized, it transitions to the user
      program. Typically, the first segment of the user program calls the
        `board_init` function from `board.c`, completing the
      initialization of project-specific ports, potentially including UART, GPIO, and other
      peripheral ports.

After the basic hardware port initialization is complete, users can choose to run a
      bare-metal system or the FreeRTOS operating system, depending on their needs. If wireless
      functionality is used, FreeRTOS must be enabled, and the user must create tasks to run the
      different features. If running bare-metal, typically the user's functionality runs within a
      while loop.

### Boot from UART/SDIO

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

Boot from UART/SDIO, commonly referred to as booting from interface mode (or
      programming mode), is a branch scenario after the primary bootloader starts. This mode is used
      for flash programming or downloading images to RAM for execution (in wireless pass-through
      scenarios).

The system supports boot from flash/UART/SDIO, as described below:

| Boot Pin | Level | Description |
| --- | --- | --- |
| GPIO2 | 1 | Boot from UART(GPIO21/22)/SDIO. This mode is used for flash programming or<br>                downloading images to RAM for execution (wireless transparent transmission<br>                scenario) |
| GPIO2 | 0 | Boot the application image from flash |
|  |  |  |

## Address mapping

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

Table : Memory address map

| Module | Size | Base address cache | Base address noncache |
| --- | --- | --- | --- |
| OCRAM | 320KB | 0x62FC0000 | 0x22FC0000 |
| WRAM | 160KB | 0x63010000 | 0x23010000 |

OCRAM and WRAM can be accessed either through the AHB bus or through AXI bus. When the
      CPU uses the 0x62FC0000 address to access the OCRAM, it goes through the internal cache and
      access the OCRAM through AXI to AHB. When the CPU uses the 0x22FC0000 address to access the
      OCRAM, it directly accesses the OCRAM through the AHB bus.

## Interrupt source

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

A total of 64 interrupt sources are included, and the interrupt
sources and corresponding interrupt numbers are shown in the
following table:

| Interrupt source | Interrupt source | Interrupt number | Description |
| --- | --- | --- | --- |
| BMX | Bus error | IRQ\_NUM\_BASE+0 | Bus error response interrupt |
| BMX | Bus timeout | IRQ\_NUM\_BASE+1 | Bus response timeout interrupt |
| Display | Display | IRQ\_NUM\_BASE+2 | Display all interrupt |
| SDU | SDU software reset | IRQ\_NUM\_BASE+3 | SDU reset triggered by host |
| Audio ADC | Audio ADC | IRQ\_NUM\_BASE+4 | Audio ADC interrupt |
| RF | RF interrupt 0 | IRQ\_NUM\_BASE+5 | RF interrupt 0 |
| RF | RF interrupt 1 | IRQ\_NUM\_BASE+6 | RF interrupt 1 |
| SDU | SDU side interrupt | IRQ\_NUM\_BASE+7 | SDU side all interrupt |
| Wi-Fi | TBTT SLEEP | IRQ\_NUM\_BASE+8 | Wi-Fi TBTT SLEEP interrupt |
| SecEng | Group0 | IRQ\_NUM\_BASE+9 | Group0 SHA/AES/TRNG/PKA/GMAC interrupt |
| SecEng | Group1 | IRQ\_NUM\_BASE+10 | Group1 SHA/AES/TRNG/PKA/GMAC interrupt |
| SecEng | Group0 CDET | IRQ\_NUM\_BASE+11 | Group0 CDET interrupt |
| SecEng | Group1 CDET | IRQ\_NUM\_BASE+12 | Group1 CDET interrupt |
| SF\_Ctrl | Group0 | IRQ\_NUM\_BASE+13 | SF\_Ctrl Group0 interrupt |
| SF\_Ctrl | Group1 | IRQ\_NUM\_BASE+14 | SF\_Ctrl Group1 interrupt |
| DMA | DMA0\_ALL | IRQ\_NUM\_BASE+15 | DMA0 all interrupt |
| CAM\_OUT0 | CAM\_OUT0 | IRQ\_NUM\_BASE+16 | CAM\_OUT0 interrupt |
| SDH | SDH all interrupt | IRQ\_NUM\_BASE+17 | SDH all interrupt |
| CAM\_OUT1 | CAM\_OUT1 | IRQ\_NUM\_BASE+18 | CAM\_OUT1 interrupt |
| Wi-Fi | TBTT WAKEUP | IRQ\_NUM\_BASE+19 | Wi-Fi TBTT WAKEUP interrupt |
| IR | IRRX | IRQ\_NUM\_BASE+20 | IR Rx interrupt |
| Audio DAC | Audio DAC | IRQ\_NUM\_BASE+22 | Audio DAC interrupt |
| MJPEG | Encoder | IRQ\_NUM\_BASE+23 | MJPEG encoder all interrupt |
| EMAC | EMAC | IRQ\_NUM\_BASE+24 | EMAC interrupt |
| GPADC | GPADC\_DMA | IRQ\_NUM\_BASE+25 | GPADC\_DMA interrupt |
| eFuse | eFuse | IRQ\_NUM\_BASE+26 | eFuse interrupt |
| SPI | SPI | IRQ\_NUM\_BASE+27 | SPI interrupt |
| UART | UART0 | IRQ\_NUM\_BASE+28 | UART0 interrupt |
| UART | UART1 | IRQ\_NUM\_BASE+29 | UART1 interrupt |
| ISO 11898 | ISO 11898 | IRQ\_NUM\_BASE+30 | ISO 11898 interrupt |
| GPIO | GPIO\_DMA | IRQ\_NUM\_BASE+31 | GPIO DMA interrupt |
| I2C0 | I2C0 | IRQ\_NUM\_BASE+32 | I2C0 interrupt |
| PWM | PWM | IRQ\_NUM\_BASE+33 | PWM interrupt |
| TIMER0 | TIMER0\_CH0 | IRQ\_NUM\_BASE+36 | Timer 0 Channel 0 interrupt |
| TIMER0 | TIMER0\_CH1 | IRQ\_NUM\_BASE+37 | Timer 0 Channel 1 interrupt |
| TIMER0 | TIMER0\_WDT | IRQ\_NUM\_BASE+38 | Timer 0 watchdog interrupt |
| I2C1 | I2C1 | IRQ\_NUM\_BASE+39 | I2C1 interrupt |
| I2S | I2S | IRQ\_NUM\_BASE+40 | I2S interrupt |
|  | Reserved | IRQ\_NUM\_BASE+41 | Reserved |
|  | Reserved | IRQ\_NUM\_BASE+42 | Reserved |
| XTAL | Xtal Ready | IRQ\_NUM\_BASE+43 | Xtal ready interrupt |
| GPIO | GPIO\_INT0 | IRQ\_NUM\_BASE+44 | GPIO interrupt |
| DM | DM | IRQ\_NUM\_BASE+45 | DM interrupt |
| BT | BT | IRQ\_NUM\_BASE+46 | Bluetooth interrupt |
| MAC154 | ENH ACK | IRQ\_NUM\_BASE+47 | MAC154 ENH ACK interrupt |
| MAC154 | Others | IRQ\_NUM\_BASE+48 | MAC154 other interrupt |
| MAC154 | AES | IRQ\_NUM\_BASE+49 | MAC154 AES interrupt |
| PDS | PDS | IRQ\_NUM\_BASE+50 | PDS interrupt |
| HBN | HBN OUT0 | IRQ\_NUM\_BASE+51 | HBN out 0 interrupt |
| HBN | HBN OUT1 | IRQ\_NUM\_BASE+52 | HBN out 1 interrupt |
| BOR | BOR | IRQ\_NUM\_BASE+53 | Brown out reset interrupt |
| Wi-Fi | Wi-Fi | IRQ\_NUM\_BASE+54 | Wi-Fi interrupt |
| BZ PHY | BZ PHY | IRQ\_NUM\_BASE+55 | BZ PHY interrupt |
| BLE | BLE | IRQ\_NUM\_BASE+56 | BLE interrupt |
| Wi-Fi | MAC TR timer | IRQ\_NUM\_BASE+57 | MAC Tx and Rx timer interrupt |
| Wi-Fi | MAC TR MISC | IRQ\_NUM\_BASE+58 | MAC Tx and Rx misc interrupt |
| Wi-Fi | MAC Rx trigger | IRQ\_NUM\_BASE+59 | MAC Rx trigger interrupt |
| Wi-Fi | MAC Tx trigger | IRQ\_NUM\_BASE+60 | MAC Tx trigger interrupt |
| Wi-Fi | MAC General | IRQ\_NUM\_BASE+61 | MAC general interrupt |
| Wi-Fi | MAC prot | IRQ\_NUM\_BASE+62 | MAC prot interrupt |
| Wi-Fi | IPC | IRQ\_NUM\_BASE+63 | MAC IPC interrupt |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |
|  |  |  |  |

Note: IRQ\_NUM\_BASE is 16 and the interrupt number 015 is a RISC-V reserved
      interrupt.

## Peripheral overview

Source: [https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html](https://docs.qualcomm.com/doc/80-58740-1/topic/system_and_memory.html)

Table : Peripheral list

| Peripheral | Number | Note |
| --- | --- | --- |
| GPIO | 19/35 | QFN40 corresponds to 19 GPIOs. QFN56 corresponds to 35<br>              GPIOs |
| ISO11898 | 1 | AHB bus |
| I2S | 1 | Supports Left-Justified/Right-Justified/Normal I2S/DSP and<br>              other data formats |
| Timer | 2 | Supports FreeRun mode and PreLoad mode |
| DMA | 4 | Supports LLI linked list function |
| IR | 1 | Supports receiving. The protocol includes NEC and RC-5. Also<br>              supports receiving data by pulse width counting |
| Audio PWM | 1 | Supports audio playback |
| Audio ADC | 1 | Supports recording |
| EMAC | 1 | Supports 10 Mbps and 100 Mbps |
| CAM | 1 | Supports image rectangle crop |
| MJPEG | 1 | Supports arbitrary quantization tables |
| DBI | 1 | Supports Type B/Type C 3-wire/Type C 4-wire, and also<br>              integrates QSPI mode |
| SDH | 1 | Supports high-speed SD card |
| SDU | 1 | Supports CCCR (function0) and function1. Support SDU soft<br>              reset. Function1 has 16 port receive buffers |
| SEC ENG | 1 | Supports AES/SHA/GMAC/TRNG |

Last Published: Feb 11, 2026