Skip to content

Commit

Permalink
boards: google: add google_icetower board
Browse files Browse the repository at this point in the history
Introduce Google Icetower Development Board.
Icetower is a board created by Google for fingerprint-related
functionality development.

Signed-off-by: Dawid Niedzwiecki <[email protected]>
  • Loading branch information
niedzwiecki-dawid authored and kartben committed Dec 18, 2024
1 parent 7cbb1dd commit 99e5d58
Show file tree
Hide file tree
Showing 7 changed files with 183 additions and 0 deletions.
5 changes: 5 additions & 0 deletions boards/google/icetower/Kconfig.google_icetower
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright (c) 2024 Google LLC
# SPDX-License-Identifier: Apache-2.0

config BOARD_GOOGLE_ICETOWER
select SOC_STM32H743XX
11 changes: 11 additions & 0 deletions boards/google/icetower/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# SPDX-License-Identifier: Apache-2.0

# keep first
board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw")
board_runner_args(jlink "--device=STM32H743VI" "--speed=4000")
board_runner_args(openocd --target-handle=_CHIPNAME.cpu0)

# keep first
include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake)
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
6 changes: 6 additions & 0 deletions boards/google/icetower/board.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
board:
name: google_icetower
full_name: Icetower Development Board
vendor: google
socs:
- name: stm32h743xx
47 changes: 47 additions & 0 deletions boards/google/icetower/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
.. zephyr:board:: google_icetower
Overview
********

Google Icetower Development Board is a board created by Google for
fingerprint-related functionality development.

Board has connectors for fingerprint sensors. Console is exposed over `μServo`_
connector. MCU can be flashed using μServo or SWD.

Hardware
********

- STM32H7A3VIT6 LQFP100 package

Pin Mapping
===========

Default Zephyr Peripheral Mapping:
----------------------------------
- USART_1 TX/RX : PA9/PA10
- SPI_1 CS/CLK/MISO/MOSI : PA4/PA5/PA6/PA7
- SPI_4 CS/CLK/MISO/MOSI : PE11/PE12/PE13/PE14

Programming and Debugging
*************************

Build application as usual for the ``google_icetower`` board, and flash
using μServo or an external J-Link connected to J4. If μServo is used, please
follow the `Chromium EC Flashing Documentation`_.

Debugging
=========

Use SWD with a J-Link or ST-Link. Remember that SW2 must be set to CORESIGHT.

References
**********

.. target-notes::

.. _Chromium EC Flashing Documentation:
https://chromium.googlesource.com/chromiumos/platform/ec#Flashing-via-the-servo-debug-board

.. _μServo:
https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/servo_micro.md
78 changes: 78 additions & 0 deletions boards/google/icetower/google_icetower.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/*
* Copyright (c) 2024 Google LLC
*
* SPDX-License-Identifier: Apache-2.0
*/

/dts-v1/;

#include <st/h7/stm32h743Xi.dtsi>
#include <st/h7/stm32h743vitx-pinctrl.dtsi>

/ {
model = "Google Icetower development board";
compatible = "google,icetower-fpmcu";

chosen {
zephyr,console = &usart1;
zephyr,shell-uart = &usart1;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
};
};

&clk_lsi {
/* LSI clock frequency is 32kHz */
status = "okay";
};

&clk_hsi {
status = "okay";
hsi-div = <1>;
clock-frequency = <DT_FREQ_M(64)>;
};

&rcc {
clocks = <&clk_hsi>;
clock-frequency = <DT_FREQ_M(64)>;
d1cpre = <1>;
hpre = <1>;
d1ppre = <1>;
d2ppre1 = <1>;
d2ppre2 = <1>;
d3ppre = <1>;
};

/* USART1: Servo UART (console) */
&usart1 {
pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
pinctrl-names = "default";
current-speed = <115200>;
status = "okay";
};

/* SPI1: communication with the AP */
&spi1 {
pinctrl-0 = <&spi1_nss_pa4 &spi1_sck_pa5
&spi1_miso_pa6 &spi1_mosi_pa7>;
pinctrl-names = "default";
status = "okay";
};

/* SPI4: communication with the fingerprint sensor */
&spi4 {
pinctrl-0 = <&spi4_nss_pe11 &spi4_sck_pe12
&spi4_miso_pe13 &spi4_mosi_pe14>;
pinctrl-names = "default";
status = "okay";
};

&rtc {
clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00010000>,
<&rcc STM32_SRC_LSI RTC_SEL(2)>;
status = "okay";

backup_regs {
status = "okay";
};
};
19 changes: 19 additions & 0 deletions boards/google/icetower/google_icetower.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
identifier: google_icetower
name: Google Icetower Development Board
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- xtools
ram: 1024
flash: 2048
vendor: google
supported:
- counter
- dma
- gpio
- i2c
- spi
- pwm
- rtc
17 changes: 17 additions & 0 deletions boards/google/icetower/google_icetower_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright (c) 2024 Google Inc
# SPDX-License-Identifier: Apache-2.0

# Serial Drivers
CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y

# Console
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y

# GPIO Controller
CONFIG_GPIO=y

# Enable MPU and HW stack protection
CONFIG_ARM_MPU=y
CONFIG_HW_STACK_PROTECTION=y

0 comments on commit 99e5d58

Please sign in to comment.