Part 1
요약·해설
지원표 13행과 board option 2행, TF-M lifecycle, 공식 image 3개, 110MHz hardware·pin mapping을 번역하고 512MB flash 표기와 target 설명 충돌을 명시했습니다.
STM32L552ZE
TrustZone · TF-M
110MHz
Secure / Non-Secure
Part 2
접을 수 있는 영어 원문 전체
영어 원문 전체 펼치기
1182D5DF5E54ADF5A174667DA8D98812AE8B2714F7C91C6ECFC9DE16531CD9DF
.. _nucleo_l552ze_q_board:
ST Nucleo L552ZE Q
##################
Overview
********
The Nucleo L552ZE Q board, featuring an ARM Cortex-M33 based STM32L552ZE MCU,
provides an affordable and flexible way for users to try out new concepts and
build prototypes by choosing from the various combinations of performance and
power consumption features. Here are some highlights of the Nucleo L552ZE Q
board:
- STM32L552ZE microcontroller in LQFP144 package
- Two types of extension resources:
- Arduino Uno V3 connectivity
- ST morpho extension pin headers for full access to all STM32 I/Os
- On-board ST-LINK/V2-1 debugger/programmer with SWD connector
- Flexible board power supply:
- USB VBUS or external source(3.3V, 5V, 7 - 12V)
- ST-Link
- Three LEDs: USB communication (LD1), user LED (LD2), power LED (LD3)
- Two push-buttons: USER and RESET
- External or internal SMPS to generate Vcore logic supply
- USB OTG full speed or device only
.. image:: ../../../../../../../boards/st/nucleo_l552ze_q/doc/img/nucleo_l552ze_q.jpg
:align: center
:alt: Nucleo L552ZE Q
More information about the board can be found at the `Nucleo L552ZE Q website`_.
Hardware
********
The STM32L552xx devices are an ultra-low-power microcontrollers family (STM32L5
Series) based on the high-performance Arm|reg| Cortex|reg|-M33 32-bit RISC core.
They operate at a frequency of up to 110 MHz.
- Ultra-low-power with FlexPowerControl (down to 108 nA Standby mode and 62 uA/MHz run mode)
- Core: ARM |reg| 32-bit Cortex |reg| -M33 CPU with TrustZone |reg| and FPU.
- Performance benchmark:
- 1.5 DMPIS/MHz (Drystone 2.1)
- 442 CoreMark |reg| (4.02 CoreMark |reg| /MHZ)
- Security
- Arm |reg| TrustZone |reg| and securable I/Os memories and peripherals
- Flexible life cycle scheme with RDP (readout protection)
- Root of trust thanks to unique boot entry and hide protection area (HDP)
- Secure Firmware Installation thanks to embedded Root Secure Services
- Secure Firmware Update support with TF-M
- HASH hardware accelerator
- Active tamper and protection temperature, voltage and frequency attacks
- True Random Number Generator NIST SP800-90B compliant
- 96-bit unique ID
- 512-byte One-Time Programmable for user data
- Clock management:
- 4 to 48 MHz crystal oscillator
- 32 kHz crystal oscillator for RTC (LSE)
- Internal 16 MHz factory-trimmed RC ( |plusminus| 1%)
- Internal low-power 32 kHz RC ( |plusminus| 5%)
- Internal multispeed 100 kHz to 48 MHz oscillator, auto-trimmed by
LSE (better than |plusminus| 0.25 % accuracy)
- 3 PLLs for system clock, USB, audio, ADC
- Power management
- Embedded regulator (LDO) with three configurable range output to supply the digital circuitry
- Embedded SMPS step-down converter
- External SMPS support
- RTC with HW calendar, alarms and calibration
- Up to 114 fast I/Os, most 5 V-tolerant, up to 14 I/Os with independent supply down to 1.08 V
- Up to 22 capacitive sensing channels: support touchkey, linear and rotary touch sensors
- Up to 16 timers and 2 watchdogs
- 2x 16-bit advanced motor-control
- 2x 32-bit and 5x 16-bit general purpose
- 2x 16-bit basic
- 3x low-power 16-bit timers (available in Stop mode)
- 2x watchdogs
- 2x SysTick timer
- Memories
- Up to 512 MB Flash, 2 banks read-while-write
- 512 KB of SRAM including 64 KB with hardware parity check
- External memory interface for static memories supporting SRAM, PSRAM, NOR, NAND and FRAM memories
- OCTOSPI memory interface
- Rich analog peripherals (independent supply)
- 3x 12-bit ADC 5 MSPS, up to 16-bit with hardware oversampling, 200 uA/MSPS
- 2x 12-bit DAC, low-power sample and hold
- 2x operational amplifiers with built-in PGA
- 2x ultra-low-power comparators
- 4x digital filters for sigma delta modulator
- 19x communication interfaces
- USB Type-C / USB power delivery controller
- 2.0 full-speed crystal less solution, LPM and BCD
- 2x SAIs (serial audio interface)
- 4x I2C FM+(1 Mbit/s), SMBus/PMBus
- 6x USARTs (ISO 7816, LIN, IrDA, modem)
- 3x SPIs (7x SPIs with USART and OCTOSPI in SPI mode)
- 1xFDCAN
- 1xSDMMC interface
- 2x 14 channel DMA controllers
- CRC calculation unit
- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell |trade|
More information about STM32L552ZE can be found here:
- `STM32L552ZE on www.st.com`_
- `STM32L552 reference manual`_
Supported Features
==================
The Zephyr nucleo_l552ze_q board configuration supports the following
hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| ADC | on-chip | ADC Controller |
+-----------+------------+-------------------------------------+
| CLOCK | on-chip | reset and clock control |
+-----------+------------+-------------------------------------+
| DAC | on-chip | DAC Controller |
+-----------+------------+-------------------------------------+
| DMA | on-chip | Direct Memory Access |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+
| I2C | on-chip | i2c |
+-----------+------------+-------------------------------------+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+-------------------------------------+
| RNG | on-chip | entropy |
+-----------+------------+-------------------------------------+
| SPI | on-chip | spi |
+-----------+------------+-------------------------------------+
| TrustZone | on-chip | Trusted Firmware-M |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port-polling; |
| | | serial port-interrupt |
+-----------+------------+-------------------------------------+
| die-temp | on-chip | die temperature sensor |
+-----------+------------+-------------------------------------+
The default configuration can be found in the defconfig and dts files:
- Common:
- :zephyr_file:`boards/st/nucleo_l552ze_q/nucleo_l552ze_q-common.dtsi`
- Secure target:
- :zephyr_file:`boards/st/nucleo_l552ze_q/nucleo_l552ze_q_defconfig`
- :zephyr_file:`boards/st/nucleo_l552ze_q/nucleo_l552ze_q.dts`
- Non-Secure target:
- :zephyr_file:`boards/st/nucleo_l552ze_q/nucleo_l552ze_q_stm32l552xx_ns_defconfig`
- :zephyr_file:`boards/st/nucleo_l552ze_q/nucleo_l552ze_q_stm32l552xx_ns.dts`
Zephyr board options
====================
The STM32L552e is an SoC with Cortex-M33 architecture. Zephyr provides support
for building for both Secure and Non-Secure firmware.
The BOARD options are summarized below:
+--------------------------------+-------------------------------------------+
| BOARD | Description |
+================================+===========================================+
| nucleo_l552ze_q | For building Trust Zone Disabled firmware |
+--------------------------------+-------------------------------------------+
| nucleo_l552ze_q/stm32l552xx/ns | For building Non-Secure firmware |
+--------------------------------+-------------------------------------------+
Here are the instructions to build Zephyr with a non-secure configuration,
using `tfm_ipc_` sample:
.. code-block:: bash
$ west build -b nucleo_l552ze_q/stm32l552xx/ns samples/tfm_integration/tfm_ipc/
Once done, before flashing, you need to first run a generated script that
will set platform option bytes config and erase platform (among others,
option bit TZEN will be set).
.. code-block:: bash
$ ./build/tfm/api_ns/regression.sh
$ west flash
Please note that, after having run a TFM sample on the board, you will need to
run `./build/tfm/api_ns/regression.sh` once more to clean up the board from secure
options and get back the platform back to a "normal" state and be able to run
usual, non-TFM, binaries.
Also note that, even then, TZEN will remain set, and you will need to use
STM32CubeProgrammer_ to disable it fully, if required.
Connections and IOs
===================
Nucleo L552ZE Q Board has 8 GPIO controllers. These controllers are responsible for pin muxing,
input/output, pull-up, etc.
Available pins:
---------------
.. image:: ../../../../../../../boards/st/nucleo_l552ze_q/doc/img/nucleo_l552ze_q_zio_left_2020_2_11.jpg
:align: center
:alt: Nucleo L552ZE Q Zio left connector
.. image:: ../../../../../../../boards/st/nucleo_l552ze_q/doc/img/nucleo_l552ze_q_zio_right_2020_2_11.jpg
:align: center
:alt: Nucleo L552ZE Q Zio right connector
For more details please refer to `STM32 Nucleo-144 board User Manual`_.
Default Zephyr Peripheral Mapping:
----------------------------------
- UART_1_TX : PA9
- UART_1_RX : PA10
- UART_2_TX : PA2
- UART_2_RX : PA3
- UART_3_TX : PD8
- UART_3_RX : PD9
- I2C_1_SCL : PB6
- I2C_1_SDA : PB7
- SPI_1_NSS : PA4
- SPI_1_SCK : PA5
- SPI_1_MISO : PA6
- SPI_1_MOSI : PA7
- SPI_2_NSS : PB12
- SPI_2_SCK : PB13
- SPI_2_MISO : PB14
- SPI_2_MOSI : PB15
- SPI_3_NSS : PB12
- SPI_3_SCK : PC10
- SPI_3_MISO : PC11
- SPI_3_MOSI : PC12
- PWM_2_CH1 : PA0
- USER_PB : PC13
- LD2 : PB7
- DAC1 : PA4
- ADC1 : PC0
System Clock
------------
Nucleo L552ZE Q System Clock could be driven by internal or external oscillator,
as well as main PLL clock. By default System clock is driven by PLL clock at
110MHz, driven by 4MHz medium speed internal oscillator.
Serial Port
-----------
Nucleo L552ZE Q board has 6 U(S)ARTs. The Zephyr console output is assigned to
UART2. Default settings are 115200 8N1.
Programming and Debugging
*************************
Applications for the ``nucleo_l552ze_q`` board configuration can be built and
flashed in the usual way (see :ref:`build_an_application` and
:ref:`application_run` for more details).
Flashing
========
Nucleo L552ZE Q board includes an ST-LINK/V2-1 embedded debug tool
interface. Support can be enabled on pyocd by adding "pack" support with the
following pyocd command:
.. code-block:: console
$ pyocd pack --update
$ pyocd pack --install stm32l552ze
Alternatively, this interface is supported by the openocd version
included in the Zephyr SDK since v0.13.1.
Flashing an application to Nucleo L552ZE Q
------------------------------------------
Connect the Nucleo L552ZE Q to your host computer using the USB port.
Then build and flash an application. Here is an example for the
:ref:`hello_world` application.
Run a serial host program to connect with your Nucleo board:
.. code-block:: console
$ minicom -D /dev/ttyACM0
Then build and flash the application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: nucleo_l552ze_q
:goals: build flash
You should see the following message on the console:
.. code-block:: console
Hello World! arm
Debugging
=========
You can debug an application in the usual way. Here is an example for the
:ref:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: nucleo_l552ze_q
:maybe-skip-config:
:goals: debug
.. _Nucleo L552ZE Q website:
https://www.st.com/en/evaluation-tools/nucleo-l552ze-q.html
.. _STM32 Nucleo-144 board User Manual:
https://www.st.com/resource/en/user_manual/dm00615305.pdf
.. _STM32L552ZE on www.st.com:
https://www.st.com/en/microcontrollers/stm32l552ze.html
.. _STM32L552 reference manual:
https://www.st.com/resource/en/reference_manual/DM00346336.pdf
.. _STM32CubeProgrammer:
https://www.st.com/en/development-tools/stm32cubeprog.html
Part 3
한국어 전문 번역

개요
Nucleo L552ZE Q는 Cortex-M33 기반 STM32L552ZE를 사용해 성능과 전력 소비를 조합하며 prototype을 만들 수 있는 Nucleo-144 board입니다.
- LQFP144 STM32L552ZE
- Arduino Uno V3와 모든 I/O용 ST morpho header
- SWD가 있는 ST-LINK/V2-1
- USB VBUS 또는 외부 3.3V·5V·7~12V 전원과 ST-Link 전원
- LD1 USB communication·LD2 user·LD3 power LED
- USER·RESET button
- Vcore용 external 또는 internal SMPS
- USB OTG full-speed 또는 device-only mode
Hardware
STM32L552xx는 최대 110MHz로 동작하는 ultra-low-power Cortex-M33 STM32L5 family입니다.
- FlexPowerControl: Standby mode 최저 108nA, run mode 62µA/MHz
- TrustZone과 FPU를 갖춘 32-bit Cortex-M33
- Benchmark
- Dhrystone 2.1 기준 1.5DMIPS/MHz
- 442 CoreMark, 4.02 CoreMark/MHz
- Security
- TrustZone과 secure로 지정할 수 있는 I/O·memory·peripheral
- RDP(readout protection)를 포함한 flexible lifecycle
- unique boot entry와 HDP(hide-protection area)에 의한 root of trust
- embedded Root Secure Services 기반 Secure Firmware Installation
- TF-M 기반 Secure Firmware Update
- HASH accelerator
- temperature·voltage·frequency attack에 대한 active tamper protection
- NIST SP800-90B compliant true RNG
- 96-bit unique ID
- user data용 512-byte OTP
- Clock
- 4~48MHz crystal
- RTC용 32kHz LSE
- 16MHz HSI RC ±1%
- 32kHz LSI RC ±5%
- LSE auto-trim 100kHz~48MHz MSI, ±0.25%보다 우수
- system·USB·audio·ADC용 PLL 3개
- Power management
- digital circuit용 3개 configurable output range의 embedded LDO
- embedded SMPS step-down converter
- external SMPS support
- Hardware calendar·alarm·calibration RTC
- 대부분 5V tolerant인 fast I/O 최대 114개, 1.08V independent supply I/O 최대 14개
- Touchkey·linear·rotary sensor용 capacitive sensing channel 최대 22개
- Timer 최대 16개와 watchdog 2개
- advanced motor-control 16-bit 2개
- 32-bit general-purpose 2개와 16-bit general-purpose 5개
- 16-bit basic 2개
- Stop mode에서도 동작하는 low-power 16-bit 3개
- watchdog 2개
- SysTick 2개
- Memory
- 원문 표기 그대로: read-while-write dual-bank flash 최대 512MB
- hardware parity 64KB를 포함한 SRAM 512KB
- SRAM·PSRAM·NOR·NAND·FRAM용 external interface
- OCTOSPI interface
- Independent-supply analog
- 5MSPS 12-bit ADC 3개, oversampling으로 최대 16-bit, 200µA/MSPS
- low-power sample-and-hold 12-bit DAC 2개
- built-in PGA op amp 2개
- ultra-low-power comparator 2개
- sigma-delta modulator용 digital filter 4개
- Communication interface 19개
- USB Type-C/USB Power Delivery controller
- crystal-less USB 2.0 full-speed, LPM·BCD
- SAI 2개
- FM+·SMBus·PMBus I2C 4개
- ISO 7816·LIN·IrDA·modem USART 6개
- SPI 3개, USART·OCTOSPI의 SPI mode까지 7개
- FDCAN 1개
- SDMMC 1개
- 각 14-channel인 DMA controller 2개
- CRC unit과 SWD·JTAG·ETM development support
원문 주의: 공식 3.7.0 원문은 flash를 “Up to 512 MB”라고 씁니다. 이 번역은 원문 무결성을 위해 수치를 임의 수정하지 않았습니다.
Zephyr 지원 기능
| Interface | Controller | Driver/Component |
|---|---|---|
| ADC | on-chip | ADC Controller |
| CLOCK | on-chip | reset and clock control |
| DAC | on-chip | DAC Controller |
| DMA | on-chip | Direct Memory Access |
| GPIO | on-chip | gpio |
| I2C | on-chip | i2c |
| NVIC | on-chip | nested vector interrupt controller |
| PINMUX | on-chip | pinmux |
| RNG | on-chip | entropy |
| SPI | on-chip | spi |
| TrustZone | on-chip | Trusted Firmware-M |
| UART | on-chip | serial port-polling; serial port-interrupt |
| die-temp | on-chip | die temperature sensor |
공통 설정은 nucleo_l552ze_q-common.dtsi입니다. Secure target은 nucleo_l552ze_q_defconfig와 nucleo_l552ze_q.dts, Non-Secure target은 nucleo_l552ze_q_stm32l552xx_ns_defconfig와 nucleo_l552ze_q_stm32l552xx_ns.dts를 사용합니다.
Zephyr board option
Cortex-M33 STM32L552ZE에서는 Secure와 Non-Secure firmware를 모두 build할 수 있습니다.
| BOARD | Description |
|---|---|
| nucleo_l552ze_q | For building Trust Zone Disabled firmware |
| nucleo_l552ze_q/stm32l552xx/ns | For building Non-Secure firmware |
공식 표는 기본 target을 “Trust Zone Disabled firmware”라고 설명하지만 바로 앞 설정 목록에서는 같은 target을 “Secure target”이라고 부릅니다. 두 표현을 모두 원문대로 보존합니다.
Non-Secure TF-M build
tfm_ipc sample을 Non-Secure configuration으로 build합니다.
$ west build -b nucleo_l552ze_q/stm32l552xx/ns samples/tfm_integration/tfm_ipc/
Flash 전에 생성된 script를 실행해 platform option byte를 설정하고 platform을 erase해야 합니다. 이 과정에서 TZEN option bit도 설정됩니다.
$ ./build/tfm/api_ns/regression.sh
$ west flash
TF-M sample 실행 후 일반 non-TFM binary로 돌아가려면 ./build/tfm/api_ns/regression.sh를 다시 실행해 secure option을 정리해야 합니다. 그래도 TZEN은 설정된 채 남으므로 완전히 끄려면 STM32CubeProgrammer를 사용합니다.
Connection과 I/O
GPIO controller 8개가 pin muxing, input/output, pull-up 등을 담당합니다.


기본 Zephyr peripheral mapping
UART_1_TX : PA9UART_1_RX : PA10UART_2_TX : PA2UART_2_RX : PA3UART_3_TX : PD8UART_3_RX : PD9I2C_1_SCL : PB6I2C_1_SDA : PB7SPI_1_NSS : PA4SPI_1_SCK : PA5SPI_1_MISO : PA6SPI_1_MOSI : PA7SPI_2_NSS : PB12SPI_2_SCK : PB13SPI_2_MISO : PB14SPI_2_MOSI : PB15SPI_3_NSS : PB12SPI_3_SCK : PC10SPI_3_MISO : PC11SPI_3_MOSI : PC12PWM_2_CH1 : PA0USER_PB : PC13LD2 : PB7DAC1 : PA4ADC1 : PC0
System clock과 serial
기본 system clock은 4MHz MSI가 구동하는 PLL의 110MHz입니다. U(S)ART 6개 중 console은 UART2, 115200 8N1입니다.
Programming and debugging
ST-LINK/V2-1을 PyOCD로 쓰려면 다음 pack을 설치합니다. OpenOCD는 Zephyr SDK v0.13.1부터 이 interface를 지원합니다.
$ pyocd pack --update
$ pyocd pack --install stm32l552ze
$ minicom -D /dev/ttyACM0
west build -b nucleo_l552ze_q samples/hello_world
west flash
Hello World! arm
Debugging
west build -b nucleo_l552ze_q samples/hello_world
west debug
참고 자료
Source
출처
영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.