boards: Add support for the Ambiq Apollo510 EVB board
This commit adds support for the Ambiq Apollo510 Evaluation Board. Signed-off-by: Hao Luo <hluo@ambiq.com>
This commit is contained in:
parent
c188125165
commit
6575b55bc0
13 changed files with 359 additions and 0 deletions
4
boards/ambiq/apollo510_evb/CMakeLists.txt
Normal file
4
boards/ambiq/apollo510_evb/CMakeLists.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
zephyr_library()
|
||||
zephyr_library_sources(board.c)
|
6
boards/ambiq/apollo510_evb/Kconfig
Normal file
6
boards/ambiq/apollo510_evb/Kconfig
Normal file
|
@ -0,0 +1,6 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Copyright (c) 2025 Ambiq Micro Inc. <www.ambiq.com>
|
||||
|
||||
config BOARD_APOLLO510_EVB
|
||||
select BOARD_EARLY_INIT_HOOK
|
6
boards/ambiq/apollo510_evb/Kconfig.apollo510_evb
Normal file
6
boards/ambiq/apollo510_evb/Kconfig.apollo510_evb
Normal file
|
@ -0,0 +1,6 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Copyright (c) 2025 Ambiq Micro Inc. <www.ambiq.com>
|
||||
|
||||
config BOARD_APOLLO510_EVB
|
||||
select SOC_APOLLO510
|
15
boards/ambiq/apollo510_evb/Kconfig.defconfig
Normal file
15
boards/ambiq/apollo510_evb/Kconfig.defconfig
Normal file
|
@ -0,0 +1,15 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Copyright (c) 2025 Ambiq Micro Inc.
|
||||
|
||||
if BOARD_APOLLO510_EVB
|
||||
|
||||
config SYS_CLOCK_HW_CYCLES_PER_SEC
|
||||
default 32768 if AMBIQ_STIMER_TIMER
|
||||
default 96000000 if CORTEX_M_SYSTICK
|
||||
|
||||
config LOG_BACKEND_SWO_FREQ_HZ
|
||||
default 1000000
|
||||
depends on LOG_BACKEND_SWO
|
||||
|
||||
endif # BOARD_APOLLO510_EVB
|
24
boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi
Normal file
24
boards/ambiq/apollo510_evb/apollo510_evb-pinctrl.dtsi
Normal file
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* Copyright (c) 2025 Ambiq Micro Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <apollo510/ambiq-apollo510-pinmux.h>
|
||||
|
||||
&pinctrl {
|
||||
uart0_default: uart0_default {
|
||||
group1 {
|
||||
pinmux = <UART0TX_P30>;
|
||||
};
|
||||
group2 {
|
||||
pinmux = <UART0RX_P55>;
|
||||
input-enable;
|
||||
};
|
||||
};
|
||||
swo_default: swo_default {
|
||||
group0 {
|
||||
pinmux = <SWO_P28>;
|
||||
};
|
||||
};
|
||||
};
|
128
boards/ambiq/apollo510_evb/apollo510_evb.dts
Normal file
128
boards/ambiq/apollo510_evb/apollo510_evb.dts
Normal file
|
@ -0,0 +1,128 @@
|
|||
/dts-v1/;
|
||||
#include <ambiq/ambiq_apollo510.dtsi>
|
||||
#include "apollo510_evb-pinctrl.dtsi"
|
||||
#include <zephyr/dt-bindings/input/input-event-codes.h>
|
||||
|
||||
/ {
|
||||
model = "Ambiq Apollo510 evaluation board";
|
||||
compatible = "ambiq,apollo510_evb";
|
||||
|
||||
chosen {
|
||||
zephyr,itcm = &itcm;
|
||||
zephyr,dtcm = &dtcm;
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
zephyr,console = &uart0;
|
||||
zephyr,shell-uart = &uart0;
|
||||
zephyr,uart-pipe = &uart0;
|
||||
ambiq,xo32m = &xo32m_xtal;
|
||||
ambiq,xo32k = &xo32k_xtal;
|
||||
ambiq,extrefclk = &extrefclk;
|
||||
};
|
||||
|
||||
aliases {
|
||||
watchdog0 = &wdt0;
|
||||
led0 = &led0;
|
||||
led1 = &led1;
|
||||
led2 = &led2;
|
||||
sw0 = &button0;
|
||||
sw1 = &button1;
|
||||
};
|
||||
|
||||
sram0: memory@SSRAM_BASE_NAME {
|
||||
compatible = "mmio-sram";
|
||||
reg = <SSRAM_BASE_ADDR 0x200000>;
|
||||
};
|
||||
|
||||
sram_no_cache: memory@20280000 {
|
||||
compatible = "zephyr,memory-region", "mmio-sram";
|
||||
reg = <0x20280000 0x100000>;
|
||||
zephyr,memory-region = "SRAM_NO_CACHE";
|
||||
zephyr,memory-attr = <( DT_MEM_ARM(ATTR_MPU_RAM_NOCACHE) )>;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
led0: led_0 {
|
||||
gpios = <&gpio160_191 5 GPIO_ACTIVE_LOW>;
|
||||
label = "LED 0";
|
||||
};
|
||||
led1: led_1 {
|
||||
gpios = <&gpio64_95 25 GPIO_ACTIVE_LOW>;
|
||||
label = "LED 1";
|
||||
};
|
||||
led2: led_2 {
|
||||
gpios = <&gpio64_95 28 GPIO_ACTIVE_LOW>;
|
||||
label = "LED 2";
|
||||
};
|
||||
};
|
||||
|
||||
buttons {
|
||||
compatible = "gpio-keys";
|
||||
polling-mode;
|
||||
button0: button_0 {
|
||||
gpios = <&gpio64_95 29 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
||||
label = "BTN0";
|
||||
zephyr,code = <INPUT_KEY_0>;
|
||||
status = "okay";
|
||||
};
|
||||
button1: button_1 {
|
||||
gpios = <&gpio64_95 30 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
|
||||
label = "BTN1";
|
||||
zephyr,code = <INPUT_KEY_1>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&xo32m_xtal {
|
||||
clock-frequency = <DT_FREQ_M(48)>;
|
||||
};
|
||||
|
||||
&itm {
|
||||
pinctrl-0 = <&swo_default>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
current-speed = <115200>;
|
||||
pinctrl-0 = <&uart0_default>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&stimer0 {
|
||||
clk-source = <3>;
|
||||
};
|
||||
|
||||
&wdt0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio0_31 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio32_63 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio64_95 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio96_127 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio128_159 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio160_191 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio192_223 {
|
||||
status = "okay";
|
||||
};
|
19
boards/ambiq/apollo510_evb/apollo510_evb.yaml
Normal file
19
boards/ambiq/apollo510_evb/apollo510_evb.yaml
Normal file
|
@ -0,0 +1,19 @@
|
|||
identifier: apollo510_evb
|
||||
name: Apollo510 EVB
|
||||
type: mcu
|
||||
arch: arm
|
||||
ram: 3072
|
||||
flash: 4096
|
||||
toolchain:
|
||||
- zephyr
|
||||
- gnuarmemb
|
||||
supported:
|
||||
- uart
|
||||
- watchdog
|
||||
- gpio
|
||||
- clock_control
|
||||
testing:
|
||||
ignore_tags:
|
||||
- net
|
||||
- bluetooth
|
||||
vendor: ambiq
|
13
boards/ambiq/apollo510_evb/apollo510_evb_defconfig
Normal file
13
boards/ambiq/apollo510_evb/apollo510_evb_defconfig
Normal file
|
@ -0,0 +1,13 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Copyright (c) 2025 Ambiq Micro Inc.
|
||||
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_UART_INTERRUPT_DRIVEN=y
|
||||
CONFIG_HW_STACK_PROTECTION=y
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_DEVICE=y
|
||||
CONFIG_PM_DEVICE_RUNTIME=y
|
57
boards/ambiq/apollo510_evb/board.c
Normal file
57
boards/ambiq/apollo510_evb/board.c
Normal file
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright 2025 Ambiq Micro Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/init.h>
|
||||
#include <zephyr/kernel.h>
|
||||
#include <am_mcu_apollo.h>
|
||||
|
||||
#if DT_HAS_CHOSEN(ambiq_xo32m)
|
||||
#define XTAL_HS_FREQ DT_PROP(DT_CHOSEN(ambiq_xo32m), clock_frequency)
|
||||
#if DT_SAME_NODE(DT_CHOSEN(ambiq_xo32m), DT_NODELABEL(xo32m_xtal))
|
||||
#define XTAL_HS_MODE AM_HAL_CLKMGR_XTAL_HS_MODE_XTAL
|
||||
#elif DT_SAME_NODE(DT_CHOSEN(ambiq_xo32m), DT_NODELABEL(xo32m_ext))
|
||||
#define XTAL_HS_MODE AM_HAL_CLKMGR_XTAL_HS_MODE_EXT
|
||||
#endif
|
||||
#else
|
||||
#define XTAL_HS_FREQ 0
|
||||
#define XTAL_HS_MODE AM_HAL_CLKMGR_XTAL_HS_MODE_XTAL
|
||||
#endif
|
||||
|
||||
#if DT_HAS_CHOSEN(ambiq_xo32k)
|
||||
#define XTAL_LS_FREQ DT_PROP(DT_CHOSEN(ambiq_xo32k), clock_frequency)
|
||||
#if DT_SAME_NODE(DT_CHOSEN(ambiq_xo32k), DT_NODELABEL(xo32k_xtal))
|
||||
#define XTAL_LS_MODE AM_HAL_CLKMGR_XTAL_LS_MODE_XTAL
|
||||
#elif DT_SAME_NODE(DT_CHOSEN(ambiq_xo32k), DT_NODELABEL(xo32k_ext))
|
||||
#define XTAL_LS_MODE AM_HAL_CLKMGR_XTAL_LS_MODE_EXT
|
||||
#endif
|
||||
#else
|
||||
#define XTAL_LS_FREQ 0
|
||||
#define XTAL_LS_MODE AM_HAL_CLKMGR_XTAL_LS_MODE_XTAL
|
||||
#endif
|
||||
|
||||
#if DT_HAS_CHOSEN(ambiq_extrefclk)
|
||||
#define EXTREFCLK_FREQ DT_PROP(DT_CHOSEN(ambiq_extrefclk), clock_frequency)
|
||||
#else
|
||||
#define EXTREFCLK_FREQ 0
|
||||
#endif
|
||||
|
||||
void board_early_init_hook(void)
|
||||
{
|
||||
/* Set board related info into clock manager */
|
||||
am_hal_clkmgr_board_info_t sClkmgrBoardInfo = {.sXtalHs.eXtalHsMode = XTAL_HS_MODE,
|
||||
.sXtalHs.ui32XtalHsFreq = XTAL_HS_FREQ,
|
||||
.sXtalLs.eXtalLsMode = XTAL_LS_MODE,
|
||||
.sXtalLs.ui32XtalLsFreq = XTAL_LS_FREQ,
|
||||
.ui32ExtRefClkFreq = EXTREFCLK_FREQ};
|
||||
am_hal_clkmgr_board_info_set(&sClkmgrBoardInfo);
|
||||
|
||||
/* Default HFRC and HFRC2 to Free Running clocks */
|
||||
am_hal_clkmgr_clock_config(AM_HAL_CLKMGR_CLK_ID_HFRC,
|
||||
AM_HAL_CLKMGR_HFRC_FREQ_FREE_RUN_APPROX_48MHZ, NULL);
|
||||
am_hal_clkmgr_clock_config(AM_HAL_CLKMGR_CLK_ID_HFRC2,
|
||||
AM_HAL_CLKMGR_HFRC2_FREQ_FREE_RUN_APPROX_250MHZ, NULL);
|
||||
|
||||
}
|
6
boards/ambiq/apollo510_evb/board.cmake
Normal file
6
boards/ambiq/apollo510_evb/board.cmake
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Copyright (c) 2025 Ambiq Micro Inc.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_runner_args(jlink "--device=AP510NFA-CBR" "--iface=swd" "--speed=1000")
|
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
6
boards/ambiq/apollo510_evb/board.yml
Normal file
6
boards/ambiq/apollo510_evb/board.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
board:
|
||||
name: apollo510_evb
|
||||
full_name: Apollo510 SOC Evaluation Board
|
||||
vendor: ambiq
|
||||
socs:
|
||||
- name: apollo510
|
BIN
boards/ambiq/apollo510_evb/doc/apollo510-soc-eval-board.jpg
Normal file
BIN
boards/ambiq/apollo510_evb/doc/apollo510-soc-eval-board.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
75
boards/ambiq/apollo510_evb/doc/index.rst
Normal file
75
boards/ambiq/apollo510_evb/doc/index.rst
Normal file
|
@ -0,0 +1,75 @@
|
|||
.. zephyr:board:: apollo510_evb
|
||||
|
||||
Apollo510 EVB is a board by Ambiq featuring their ultra-low power Apollo510 SoC.
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
- Apollo510 SoC with up to 250 MHz operating frequency
|
||||
- ARM® Cortex® M55 core
|
||||
- 64 kB Instruction Cache and 64 kB Data Cache
|
||||
- Up to 4 MB of non-volatile memory (NVM) for code/data
|
||||
- Up to 3 MB of low leakage / low power RAM for code/data
|
||||
- 256 kB Instruction Tightly Coupled RAM (ITCM)
|
||||
- 512 kB Data Tightly Coupled RAM (DTCM)
|
||||
|
||||
For more information about the Apollo510 SoC and Apollo510 EVB board:
|
||||
|
||||
- `Apollo510 Website`_
|
||||
- `Apollo510 Datasheet`_
|
||||
- `Apollo510 EVB Website`_
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
.. zephyr:board-supported-hw::
|
||||
|
||||
Programming and Debugging
|
||||
=========================
|
||||
|
||||
.. zephyr:board-supported-runners::
|
||||
|
||||
Flashing an application
|
||||
-----------------------
|
||||
|
||||
Connect your device to your host computer using the JLINK USB port.
|
||||
The sample application :zephyr:code-sample:`hello_world` is used for this example.
|
||||
Build the Zephyr kernel and application, then flash it to the device:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: apollo510_evb
|
||||
:goals: flash
|
||||
|
||||
.. note::
|
||||
``west flash`` requires `SEGGER J-Link software`_ and `pylink`_ Python module
|
||||
to be installed on you host computer.
|
||||
|
||||
Open a serial terminal (minicom, putty, etc.) with the following settings:
|
||||
|
||||
- Speed: 115200
|
||||
- Data: 8 bits
|
||||
- Parity: None
|
||||
- Stop bits: 1
|
||||
|
||||
Reset the board and you should be able to see on the corresponding Serial Port
|
||||
the following message:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Hello World! apollo510_evb
|
||||
|
||||
.. _Apollo510 Website:
|
||||
https://ambiq.com/apollo510/
|
||||
|
||||
.. _Apollo510 Datasheet:
|
||||
https://contentportal.ambiq.com/documents/20123/2877485/Apollo510-SoC-Datasheet.pdf
|
||||
|
||||
.. _Apollo510 EVB Website:
|
||||
For more information, please reach out to Sales and FAE.
|
||||
|
||||
.. _SEGGER J-Link software:
|
||||
https://www.segger.com/downloads/jlink
|
||||
|
||||
.. _pylink:
|
||||
https://github.com/Square/pylink
|
Loading…
Add table
Add a link
Reference in a new issue