Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions Documentation/platforms/arm64/am62x/boards/beagleplay/index.rst
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please follow the template in Documentation/contributing/doc_templates/board.rst

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworked the page to follow the board documentation template more closely: features, buttons/LEDs, serial console, pin mapping, power, installation, build, flashing, and configurations.

Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
====================
BeaglePlay (AM62x)
====================

.. tags:: chip:am62x, arch:arm64

Overview
========

The `BeaglePlay <https://www.beagleboard.org/boards/beagleplay>`_ is an
open-source single-board computer from BeagleBoard.org based on the
Texas Instruments **AM6254** SoC (Sitara AM62x family).

Relevant AM6254 SoC features include:

- 4x Arm Cortex-A53 cores @ up to 1.4 GHz
- 2 GiB DDR4 RAM
- TI K3 interrupt architecture (GICv3 + TI-SCI firmware)
- Main domain UARTs compatible with 16550

NuttX currently supports **basic bring-up** on BeaglePlay:

- serial console on the DEBUG USB-C port
- interactive NSH shell
- ``procfs`` mounting as part of board bring-up

Many peripherals are not yet enabled in this port.

Serial Console
==============

Use the BeaglePlay **DEBUG** USB-C port and a host serial terminal at
**115200 8N1**.

Supported Features
==================

The current BeaglePlay port provides:

- early serial output during boot
- 16550-based runtime serial console
- interactive NSH
- ``procfs`` mounted at ``/proc``

Not yet supported:

- eMMC / SDMMC block driver support in NuttX
- Ethernet
- Wi-Fi / Bluetooth
- USB host/device
- GPIO / LEDs
- I2C / SPI peripherals

Building
========

Configure and build with the GNU AArch64 bare-metal toolchain:

.. code:: console

$ ./tools/configure.sh beagleplay:nsh
$ make -j$(nproc) CROSS_COMPILE=aarch64-none-elf-

A successful build produces ``nuttx`` (ELF) and ``nuttx.bin`` (raw binary).

Booting NuttX from a microSD card
==================================

BeaglePlay ships with BeagleBoard.org U-Boot on the onboard eMMC.
The currently validated BeaglePlay bring-up path uses manual U-Boot commands
to load the raw ``nuttx.bin`` image from the first FAT partition on the
microSD card and jump to it directly.

1. **Format** a microSD card with a single FAT32 partition.

2. **Copy** ``nuttx.bin`` to the card root.

3. **Insert** the microSD card and connect the USB-C **DEBUG** cable.

4. **Open** a serial terminal at 115200 baud on the host.

5. **Stop** at the U-Boot prompt and run:

.. code::

mmc dev 1 0
fatload mmc 1:1 0x82000000 nuttx.bin
go 0x82000000

These commands select the BeaglePlay microSD user area, load ``nuttx.bin``
to ``0x8200_0000``, and jump to it directly. Expected output:

.. code::

NuttShell (NSH) NuttX-12.x
nsh>

.. note::

BeaglePlay has two USB-C ports. Use the one labelled **DEBUG** (next
to the Ethernet jack) for the serial console. The other USB-C port is
for USB host/device only.

Configurations
==============

``beagleplay:nsh``
Default interactive shell configuration.

``beagleplay:ostest``
Dedicated hardware validation image that boots directly into ``ostest_main``.
129 changes: 129 additions & 0 deletions Documentation/platforms/arm64/am62x/boards/pocketbeagle2/index.rst
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please follow the template in Documentation/contributing/doc_templates/board.rst

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have done the same for pocket beagle 2 as well

Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
==========================
BeagleBoard PocketBeagle 2
==========================

.. tags:: chip:am62x

`PocketBeagle 2 <https://docs.beagleboard.org/boards/pocketbeagle-2/>`_ is a
low-cost, open-hardware single-board computer from BeagleBoard.org based on
the TI AM6254 SoC.

Features
========

- **SoC:** TI AM6254
- **CPU:** Quad-Core ARM Cortex-A53 @ 1.4 GHz
- **Interrupt Controller:** ARM GIC-600 (GICv3)
- **RAM:** 512 MB DDR4
- **Storage:** microSD, 512 MB onboard QSPI flash
- **USB:** USB-C (power + debug UART), USB 2.0 host
- **Expansion:** 2 × 36-pin headers (GPIO, I2C, SPI, UART, PWM, ADC)
- **LEDs:** 4 × user LEDs (USR0–USR3)

Serial Console
==============

UART6 is brought out on the **USB-C debug port** via an onboard
USB-to-serial bridge. Connect the USB-C cable to your host PC and open
the enumerated serial port at **115200 8N1**:

.. code:: console

$ picocom -b 115200 /dev/ttyUSB0
# or
$ screen /dev/ttyUSB0 115200

If UART0 pins are needed on the expansion header instead:

====== ======== =========
Signal Header Pin
====== ======== =========
TX P1 Pin 11
RX P1 Pin 13
GND P1 Pin 1
====== ======== =========

LEDs
====

The four user LEDs are driven by GPIO:

====== ======== =======
LED GPIO Default
====== ======== =======
USR0 GPIO0_10 Heartbeat (CONFIG_ARCH_LEDS)
USR1 GPIO0_11 Off
USR2 GPIO0_12 Off
USR3 GPIO0_13 Off
====== ======== =======

ARM64 Toolchain
===============

Download the **AArch64 Bare-Metal** toolchain (``aarch64-none-elf``) from
`Arm GNU Toolchain Downloads <https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads>`_
and add its ``bin/`` directory to your ``PATH``.

Verify:

.. code:: console

$ aarch64-none-elf-gcc -v

Building
========

.. code:: console

$ cd nuttx
$ ./tools/configure.sh pocketbeagle2:nsh
$ make -j$(nproc) CROSS_COMPILE=aarch64-none-elf-

A successful build produces ``nuttx`` (ELF) and ``nuttx.bin`` (raw binary).

Booting NuttX from a microSD card
==================================

PocketBeagle 2 ships with BeagleBoard.org U-Boot on the onboard QSPI flash.
U-Boot automatically reads a ``uEnv.txt`` file from the first FAT partition
of the microSD card, so **no manual U-Boot commands are needed** — just copy
two files onto the card.

1. **Format** a microSD card with a single FAT32 partition.

2. **Copy** ``nuttx.bin`` and a ``uEnv.txt`` file to the card root.

Create ``uEnv.txt`` with the following content:

.. code::

uenvcmd=fatload mmc 1:1 0x82000000 nuttx.bin; go 0x82000000

3. **Insert** the microSD card and connect the USB-C debug cable.

4. **Open** a serial terminal at 115200 baud on the host.

5. **Power on** the board. U-Boot reads ``uEnv.txt``, loads ``nuttx.bin``
to ``0x8200_0000``, and jumps to it automatically. Expected output:

.. code::

NuttShell (NSH) NuttX-12.x
nsh>

If you see the U-Boot countdown instead (``Hit any key to stop autoboot``),
check that ``uEnv.txt`` is in the root of the FAT partition and that the
spelling and address are exact.

Configurations
==============

nsh
---

Minimal NuttShell (NSH) configuration. Provides an interactive shell over
UART6. All debug options are enabled for initial bring-up.

.. code:: console

$ ./tools/configure.sh pocketbeagle2:nsh
21 changes: 21 additions & 0 deletions Documentation/platforms/arm64/am62x/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
============
TI AM62x
============

`TI AM62x <https://www.ti.com/product/AM6254>`_ is a family of ARM64 SoCs from
Texas Instruments featuring:

- **CPU:** Quad-Core ARM Cortex-A53 (up to 1.4 GHz)
- **Interrupt Controller:** ARM GIC-600 (GICv3), 480 SPIs
- **Boot:** ROM → R5 SYSFW (TIFS) → U-Boot SPL → U-Boot → NuttX
- **Memory:** External DDR4/LPDDR4 (512 MB – 2 GB depending on board)
- **UART:** Seven 16550-compatible UARTs (48 MHz clock)

Supported Boards
================

.. toctree::
:glob:
:maxdepth: 1

boards/*/*
22 changes: 22 additions & 0 deletions arch/arm64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ choice
prompt "ARM64 chip selection"
default ARCH_CHIP_QEMU

config ARCH_CHIP_AM62X
bool "TI AM62x"
select ARCH_CORTEX_A53
select ARCH_HAVE_ADDRENV
select ARCH_HAVE_RESET
select ARCH_HAVE_IRQTRIGGER
select ARCH_NEED_ADDRENV_MAPPING
select ARCH_USE_MMU
select ARMV8A_HAVE_GICv3
select ARM64_HAVE_PSCI
select ARCH_HAVE_IRQPRIO
select ARCH_HAVE_LOWPUTC
---help---
Texas Instruments AM62x family (AM6232, AM6252, AM6254).
Quad Cortex-A53 @ up to 1.4 GHz. Supported boards:
PocketBeagle 2, BeaglePlay.

config ARCH_CHIP_A64
bool "Allwinner A64"
select ARCH_CORTEX_A53
Expand Down Expand Up @@ -362,6 +379,7 @@ config ARCH_FAMILY

config ARCH_CHIP
string
default "am62x" if ARCH_CHIP_AM62X
default "a64" if ARCH_CHIP_A64
default "a527" if ARCH_CHIP_SUNXI_A527
default "rk3399" if ARCH_CHIP_RK3399
Expand Down Expand Up @@ -502,6 +520,10 @@ config ARM64_PA_BITS

The choice could be: 32, 36, 42, 48

if ARCH_CHIP_AM62X
source "arch/arm64/src/am62x/Kconfig"
endif

if ARCH_CHIP_A64
source "arch/arm64/src/a64/Kconfig"
endif
Expand Down
Loading
Loading