<!--order=10-->

<h1>ARM Cortex Cores in This Project</h1>
<p>The Khadas VIM3, Raspberry Pi 5, and Raspberry Pi Pico boards all sit in the same broad computing family, but their Cortex cores are designed for very different jobs. Understanding that distinction makes it easier to choose the right board instead of judging everything by core count or clock speed.</p>

<h2>Application Cores and Microcontroller Cores</h2>
<table>
  <thead><tr><th>Family</th><th>Example here</th><th>Designed for</th></tr></thead>
  <tbody>
    <tr><td>Cortex-A</td><td>VIM3 A73/A53, Pi 5 A76</td><td>Running Linux, applications, filesystems, networks, databases, and many processes at once</td></tr>
    <tr><td>Cortex-M</td><td>RP2040 M0+, RP2350 M33 option</td><td>Low-power control, GPIO, timers, sensors, and predictable embedded work</td></tr>
  </tbody>
</table>
<p>A Cortex-A board normally has an MMU and runs a full operating system. A Cortex-M microcontroller usually runs one firmware image directly and has much less memory, but it starts quickly, uses little power, and can keep doing one small job for a long time.</p>

<h2>The Boards Side by Side</h2>
<table>
  <thead><tr><th>Board</th><th>Core / processor</th><th>What it means in practice</th></tr></thead>
  <tbody>
    <tr><td>Khadas VIM3</td><td>4× Cortex-A73 + 2× Cortex-A53</td><td>big.LITTLE Linux computer with eMMC and an NPU; good for local processing and services</td></tr>
    <tr><td>Raspberry Pi 5</td><td>4× 64-bit Cortex-A76</td><td>Fast, general-purpose Linux computer with a large software and hardware ecosystem</td></tr>
    <tr><td>Raspberry Pi Pico</td><td>2× Cortex-M0+ in RP2040</td><td>Small controller for radio, sensors, timing, and battery-powered field work</td></tr>
    <tr><td>Raspberry Pi Pico 2</td><td>RP2350 with Cortex-M33 or Hazard3 RISC-V options</td><td>Newer microcontroller platform; firmware must select and support the intended architecture</td></tr>
  </tbody>
</table>

<h2>Why More Cores Is Not the Whole Story</h2>
<ul>
  <li>A Pico can respond to a GPIO or radio event without waiting for a general-purpose operating system.</li>
  <li>A Pi 5 can run a database, compiler, VPN, dashboard, and gateway process at the same time.</li>
  <li>The VIM3's NPU is a separate accelerator; it is not another Cortex CPU core.</li>
  <li>Clock speed comparisons are meaningful only when the workload, memory, storage, and software are also comparable.</li>
  <li>A Linux board can be more powerful and still be the wrong choice for a node that must sleep for months.</li>
</ul>

<h2>From Cortex to LoRa</h2>
<pre>
Pico / Pico 2:
  read sensor → make a small message → transmit → sleep

Pi 5:
  receive mesh packets → validate → store → display → forward

Khadas VIM3:
  receive packets → combine with local data → process at the edge
  → run an NPU workload or local service → forward a summary
</pre>
<p>The radio does not care which Cortex family produced the packet. What changes is how much work each board can do before and after the packet is sent.</p>

<h2>A Note About Pico 2</h2>
<p>RP2350 is especially interesting because it can support Arm Cortex-M33 or the Hazard3 RISC-V architecture. The Pico 2 board is therefore not simply a faster RP2040 with a new name. Check the firmware and SDK target when moving code between Pico generations, especially when a library depends on architecture-specific features.</p>

<h2>References</h2>
<ul>
  <li><a href="https://developer.arm.com/Processors/Cortex-A76" target="_blank" rel="noopener">Arm Cortex-A76 ↗</a></li>
  <li><a href="https://developer.arm.com/Processors/Cortex-A73" target="_blank" rel="noopener">Arm Cortex-A73 ↗</a></li>
  <li><a href="https://developer.arm.com/Processors/Cortex-M33" target="_blank" rel="noopener">Arm Cortex-M33 ↗</a></li>
  <li><a href="https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html" target="_blank" rel="noopener">Raspberry Pi Pico Series Documentation ↗</a></li>
</ul>