HAL RAMECC Overview

Introducing RAMECC

group RAMECC_Introduction

The RAMECC hardware abstraction layer provides a set of APIs to interface with the RAMECC peripheral controlling the internal SRAMs configuration on STM32 microcontrollers.

The RAMECC module provides firmware functions to manage the following functionalities :

  • ECC management functions at controller and monitor levels.

  • SRAM information getter functions.

This abstraction layer guarantees portability and ease of use across different STM32 series.

Module and files

The following diagram illustrates the RAMECC module and its associated files.

Module and files diagram

Component diagram

The following diagram illustrates the software components involved in the RAMECC module. It shows the interactions between the user application, HAL drivers, low-level drivers, and the hardware components.

@startuml
top to bottom direction
hide stereotype
skinparam DefaultFontName Arial
skinparam linetype polyline
skinparam nodesep 40
skinparam ranksep 45

' The Driver name to be customized according to the driver
' Example CRC, I2C, NVM, FLASH, ....
!$ppp = "RAMECC"

' The HAL Driver interface
!$hal_api_itf = "HAL " + $ppp + " API\t\t\t"

' The Use Application Interface
!$appli_itf = $ppp+ " User Callback"

' The HAL PPP name
!$ppp_name = "HAL_" + $ppp

' The PPP isr
!$ppp_ISR  = $ppp + " ISR"

' The LL Driver name
!$ll_ppp   = "LL_" + $ppp

' HAL Generic interface for the PPP driver
!$hal_generic_itf = "HAL_GetTick()"

!$ll_ppp_itf = "\t\t\tLL " + $ppp +" API"

' HW
!$ppp_xIRQ = "\t\t\t"+$ppp+"\n\t\t\tIRQHandler"


<style>
componentDiagram {
   arrow {
      FontSize 10
   }
   interface {
      FontSize 10
   }
}
</style>

title $ppp Software Component Diagram

Package "Application Layer" {

  component [Appli]
  interface "$appli_itf" as APPLI_Interface
  [Appli] -r- APPLI_Interface
}

package "HAL" {
    component [$ppp_name] <<highlight>>

    interface "$hal_api_itf" as HAL_PPP_APPLI_Interface
    [$ppp_name] -u- HAL_PPP_APPLI_Interface

    component [HAL_SERVICE]
    interface "$hal_generic_itf" as HAL_Service_Interface
    [HAL_SERVICE] -r- HAL_Service_Interface
    [$ppp_name] -l-( HAL_Service_Interface

}

[Appli] -d-( HAL_PPP_APPLI_Interface
[$ppp_name] -u-( APPLI_Interface

package "Low Layer"  {
    together {
      component [$ll_ppp]
      component "CMSIS-Devices"
      component [$ppp_ISR]
      [$ll_ppp] -[hidden]right- [CMSIS-Devices]
      [CMSIS-Devices] -[hidden]right- [$ppp_ISR]
    }
    interface "$ll_ppp_itf" as LL_PPP_Interface
    [$ll_ppp] -u- LL_PPP_Interface
    LL_PPP_Interface -[hidden]d- [$ll_ppp]

    interface "$ppp_ISR" as PPP_ISR
    [$ppp_ISR] -u- PPP_ISR
    PPP_ISR -[hidden]d- [$ppp_ISR]

}

package "HW" {
    component [STM32_HW]
    interface "$ppp_xIRQ" as PPPx_IRQ
    [STM32_HW] -u- PPPx_IRQ
}

' Layout hints: packages top -> down, elements left -> right
[$ppp_name] -[hidden]d- [CMSIS-Devices]
[CMSIS-Devices] -[hidden]d- [STM32_HW]

[$ppp_name] -d-( LL_PPP_Interface
[$ll_ppp] .r.> [CMSIS-Devices]: \n$ppp register\ndef
[STM32_HW] <.u. [$ll_ppp] : $ppp registers\nR/W
[$ppp_ISR] -d-( PPPx_IRQ
[$ppp_name] -d-( PPP_ISR

@enduml

Configuration table

The following table lists the configuration defines for the HAL RAMECC module, specifying their locations, default values, and descriptions:

group RAMECC_Configuration_Table

Configuration inside the RAMECC driver

Config defines

Description

Default value

Note

PRODUCT

from IDE

NA

Ex:STM32H7P62XX.

USE_ASSERT_DBG_PARAM

from IDE

None

Enable the parameters asserts.

USE_HAL_RAMECC_MODULE

from hal_conf.h

1

Enable the HAL RAMECC module.