Basic Secure Boot HSE S32K344 ADKP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Basic Secure Boot HSE S32K344 ADKP

2,228 Views
silvia_zandoli2
Contributor II

Hello everyone,

I wanted to ask how to program ADKP in Base Secure Boot

S32K344-WB #HSE#BaseSecureBoot

Thanks

0 Kudos
Reply
6 Replies

1,539 Views
datavix
Contributor I

Hello everyone,

I’m working with an S32K312EVB-Q172 board and I’d like to test the HSE demo examples.
Would it be possible to get access to the file S32K3_HSE_DemoExamples_1_0_0.zip?

I’m using S32 Design Studio for S32 Platform together with a PEMicro debugger.

Thank you in advance for your help!

Best regards,
Davide

0 Kudos
Reply

2,200 Views
VaneB
NXP TechSupport
NXP TechSupport

Hi @silvia_zandoli2 

Refer to the following thread, which contains information related to this topic and may be helpful for you.

[S32K3] Restrict the debug access with a password when HSE is used

Additionally, I recommend reviewing the implementation of the functions ProgramADKPService(), Advance_LifeCycle_Service(), and attributeProgrammingService() provided in the S32K3 MCUs for General Purpose HSE Demo Examples and/or the HSE_DEMOAPP.

 

BR, VaneB

0 Kudos
Reply

2,122 Views
silvia_zandoli2
Contributor II

 I have S32K3_HSE_DemoExamples_1_0_0, S32K344 device

The ADKP is programmed successfully (check_debug_password_programmed_status() returns TRUE).

However, the function HSE_SignBootImage() continues to fail immediately upon invocation, returning the error code 0x55a5aa33

In the main of Basic Secure Boot it does not pass the assert
/* Verify that the generated TAG is valid for the APPBL */
#if VERIFY_TAG
srvResponse = HSE_VerifyBootImage(pAppBL);
ASSERT(HSE_SRV_RSP_OK == srvResponse);
#endif

I generate S32K344_SecureBootBlinky.bin, I put it in C:\NXP while the SecureBootBlinky and the Basic_SecureBoot are in C:\NXP\S32K3_HSE_DemoExamples_1_0_0\S32K3_HSE_DemoExamples\Secure_Boot

I noticed in the linker file of Basic Secure Boot "S32K344_flash.ld" there is not

 _adkp_key : 

  { 

    . = ALIGN(4); 

    KEEP(*(_adkp_key))  

    . = ALIGN(4); 

  } > PFLASH

Do I have to modify that file? i attach it to you

/*****************************************************************************
*
* Copyright 2020-2022 NXP
* All Rights Reserved
*
*****************************************************************************
*
* THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

__STACK_SIZE = 0x00001000;
__HEAP_SIZE = 0x00001000;

/* Linker script to configure memory regions. aggiungi PFLASH_SECURE se vuoi una regione dove mettere chiavi critiche*/
MEMORY
{
ITCM (RWX) : ORIGIN = 0x00000000, LENGTH = 0x10000
PFLASH (RX) : ORIGIN = 0x400000, LENGTH = 0x3f4000
DFLASH (RX) : ORIGIN = 0x10000000, LENGTH = 0x20000
DTCM (RW) : ORIGIN = 0x20000000, LENGTH = 0x20000
SRAM0_STDBY (RW) : ORIGIN = 0x20400000, LENGTH = 0x8000
SRAM (RW) : ORIGIN = 0x20408000, LENGTH = 0x48000
}

/* Linker script to place sections and symbol values. Should be used together
* with other linker script that defines memory regions FLASH and RAM.
* It references following symbols, which must be defined in code:
* Reset_Handler : Entry of reset handler
*
* It defines following symbols, which code can use without definition:
* __exidx_start
* __exidx_end
* __ecc_table_start__
* __ecc_table_end__
* __etext
* __data_start__
* __preinit_array_start
* __preinit_array_end
* __init_array_start
* __init_array_end
* __fini_array_start
* __fini_array_end
* __data_end__
* __bss_start__
* __bss_end__
* __end__
* end
* __HeapLimit
* __StackLimit
* __StackTop
* __stack
*/
ENTRY(Reset_Handler)

SECTIONS
{
.text :
{
KEEP(*(.vectors))
*(.text*)

KEEP(*(.init))
KEEP(*(.fini))

/* .ctors */
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
*(SORT(.ctors.*))
*(.ctors)

/* .dtors */
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
*(SORT(.dtors.*))
*(.dtors)

*(.rodata*)
KEEP(*(.eh_frame*))
} > PFLASH

.ARM.extab :
{
*(.ARM.extab* .gnu.linkonce.armextab.*)
} > PFLASH

__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
} > PFLASH
__exidx_end = .;

.ecc.table :
{
. = ALIGN(4);
__ecc_table_start__ = .;

QUAD (__data_start__)
QUAD ((__data_end__ - __data_start__) /

QUAD (__bss_start__)
QUAD ((__bss_end__ - __bss_start__) /

QUAD (__HeapTop)
QUAD ((__HeapLimit - __HeapTop) /

QUAD (__StackLimit)
QUAD ((__StackTop - __StackLimit) /

QUAD (ORIGIN(ITCM))
QUAD (LENGTH(ITCM) /

QUAD (ORIGIN(DTCM))
QUAD (LENGTH(DTCM) /

__ecc_table_end__ = .;
} > PFLASH

.copy.table :
{
. = ALIGN(4);
__copy_table_start__ = .;

LONG (__etext)
LONG (__data_start__)
LONG ((__data_end__ - __data_start__) / 4)

/* Add each additional data section here */
/*
LONG (__etext2)
LONG (__data2_start__)
LONG ((__data2_end__ - __data2_start__) / 4)
*/
__copy_table_end__ = .;
} > PFLASH

.zero.table :
{
. = ALIGN(4);
__zero_table_start__ = .;
/* Add each additional bss section here */
/*
LONG (__bss2_start__)
LONG ((__bss2_end__ - __bss2_start__) / 4)
*/
__zero_table_end__ = .;
} > PFLASH

__etext = ALIGN(8);

.boot_header :
{
KEEP(*(.boot_header))
} > DFLASH

.standby_ram :
{
*(.standby_ram)
} > SRAM0_STDBY

/* Due ECC initialization sequence __data_start__ and __data_end__ should be aligned on 8 bytes */
.data : AT (__etext)
{
. = ALIGN(8);
__data_start__ = .;
*(vtable)
*(.data)
*(.data.*)

. = ALIGN(4);
/* preinit data */
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP(*(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);

. = ALIGN(4);
/* init data */
PROVIDE_HIDDEN (__init_array_start = .);
KEEP(*(SORT(.init_array.*)))
KEEP(*(.init_array))
PROVIDE_HIDDEN (__init_array_end = .);

. = ALIGN(4);
/* finit data */
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP(*(SORT(.fini_array.*)))
KEEP(*(.fini_array))
PROVIDE_HIDDEN (__fini_array_end = .);

KEEP(*(.jcr*))
. = ALIGN(8);
/* All data end */
__data_end__ = .;

} > SRAM

/* Due ECC initialization sequence __bss_start__ and __bss_end__ should be aligned on 8 bytes */
.bss :
{
. = ALIGN(8);
__bss_start__ = .;
*(.bss)
*(.bss.*)
*(COMMON)
. = ALIGN(8);
__bss_end__ = .;
} > SRAM

/* Due ECC initialization sequence __HeapTop and __HeapLimit should be aligned on 8 bytes */
.heap (COPY):
{
. = ALIGN(8);
__HeapTop = .;
__end__ = .;
_end = .;
PROVIDE(end = .);
. = . + __HEAP_SIZE;
. = ALIGN(8);
__HeapLimit = .;
} > SRAM

/* Due ECC initialization sequence __StackLimit and __StackTop should be aligned on 8 bytes */
.stack (ORIGIN(SRAM) + LENGTH(SRAM) - __STACK_SIZE) (COPY) :
{
. = ALIGN(8);
__StackLimit = .;
. = . + __STACK_SIZE;
. = ALIGN(8);
__StackTop = .;
} > SRAM
PROVIDE(__stack = __StackTop);

/* Check if data + heap + stack exceeds RAM limit */
ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
CM7_START_ADDRESS = ORIGIN(PFLASH);
__STDBYRAM_START = ORIGIN(SRAM0_STDBY);
__STDBYRAM_SIZE = LENGTH(SRAM0_STDBY);
}

S32K344-WB 



0 Kudos
Reply

2,087 Views
VaneB
NXP TechSupport
NXP TechSupport

Hi @silvia_zandoli2 

The HSE service response 0x55A5AA33 corresponds to HSE_SRV_RSP_OK.

However, if you are encountering issues when calling the HSE_SignBootImage() function, I recommend reviewing the following thread, as it may be related to the problem you are experiencing.

HSE_VerifyBootImage return HSE_SRV_RSP_VERIFY_FAILED

If the issue persists or the thread does not address your specific case, please let me know.

 

0 Kudos
Reply

2,050 Views
silvia_zandoli2
Contributor II

Hello,
After successfully booting the bootloader (HSE_SignBootImage OK) and passing the verification, the system displays a brief LED blue flash (indicating a successful Secure Boot). However, upon reboot or a second debug, the system crashes and it does not pass /* Verify that the generated TAG is valid for the APPBL */
#if VERIFY_TAG
srvResponse = HSE_VerifyBootImage(pAppBL);
ASSERT(HSE_SRV_RSP_OK == srvResponse);

I suspect the problem is an overwrite. Do you know how to fix it?
Thank you very much

0 Kudos
Reply

2,012 Views
VaneB
NXP TechSupport
NXP TechSupport

Hi @silvia_zandoli2 

I recommend reviewing the following thread, as it may be related to the problem you are experiencing.

S32K344 Secure Boot HSE_VerifyBootImage issue

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2174389%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EBasic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2174389%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%20everyone%2C%3C%2FP%3E%3CP%3EI%20wanted%20to%20ask%20how%20to%20program%20ADKP%20in%20Base%20Secure%20Boot%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fc-pwmxy87654%2FS32K344-WB%2Fpd-p%2FS32K344-WB%22%20class%3D%22lia-product-mention%22%20data-product%3D%223494-1%22%20target%3D%22_blank%22%3ES32K344-WB%3C%2FA%3E%26nbsp%3B%23HSE%23BaseSecureBoot%3C%2FP%3E%3CP%3EThanks%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2203527%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Basic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2203527%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%20everyone%2C%3C%2FP%3E%3CP%3EI%E2%80%99m%20working%20with%20an%20%3CSTRONG%3ES32K312EVB-Q172%3C%2FSTRONG%3E%20board%20and%20I%E2%80%99d%20like%20to%20test%20the%20%3CSTRONG%3EHSE%20demo%20examples%3C%2FSTRONG%3E.%3CBR%20%2F%3EWould%20it%20be%20possible%20to%20get%20access%20to%20the%20file%20%3CEM%3ES32K3_HSE_DemoExamples_1_0_0.zip%3C%2FEM%3E%3F%3C%2FP%3E%3CP%3EI%E2%80%99m%20using%20%3CSTRONG%3ES32%20Design%20Studio%20for%20S32%20Platform%3C%2FSTRONG%3E%20together%20with%20a%20%3CSTRONG%3EPEMicro%20debugger%3C%2FSTRONG%3E.%3C%2FP%3E%3CP%3EThank%20you%20in%20advance%20for%20your%20help!%3C%2FP%3E%3CP%3EBest%20regards%2C%3CBR%20%2F%3EDavide%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2179001%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Basic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2179001%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F248858%22%20target%3D%22_blank%22%3E%40silvia_zandoli2%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EI%20recommend%20reviewing%20the%20following%20thread%2C%20as%20it%20may%20be%20related%20to%20the%20problem%20you%20are%20experiencing.%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FS32K%2FS32K344-Secure-Boot-HSE-VerifyBootImage-issue%2Ftd-p%2F2170788%22%20target%3D%22_blank%22%3ES32K344%20Secure%20Boot%20HSE_VerifyBootImage%20issue%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2178411%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Basic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2178411%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3CBR%20%2F%3EAfter%20successfully%20booting%20the%20bootloader%20(HSE_SignBootImage%20OK)%20and%20passing%20the%20verification%2C%20the%20system%20displays%20a%20brief%20LED%20blue%20flash%20(indicating%20a%20successful%20Secure%20Boot).%20However%2C%20upon%20reboot%20or%20a%20second%20debug%2C%20the%20system%20crashes%20and%20it%20does%20not%20pass%26nbsp%3B%2F*%20Verify%20that%20the%20generated%20TAG%20is%20valid%20for%20the%20APPBL%20*%2F%3CBR%20%2F%3E%23if%20VERIFY_TAG%3CBR%20%2F%3EsrvResponse%20%3D%20HSE_VerifyBootImage(pAppBL)%3B%3CBR%20%2F%3EASSERT(HSE_SRV_RSP_OK%20%3D%3D%20srvResponse)%3B%3C%2FP%3E%3CP%3EI%20suspect%20the%20problem%20is%20an%20overwrite.%20Do%20you%20know%20how%20to%20fix%20it%3F%3CBR%20%2F%3EThank%20you%20very%20much%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2177644%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Basic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2177644%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F248858%22%20target%3D%22_blank%22%3E%40silvia_zandoli2%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EThe%20HSE%20service%20response%200x55A5AA33%20corresponds%20to%20HSE_SRV_RSP_OK.%3C%2FP%3E%0A%3CP%3EHowever%2C%20if%20you%20are%20encountering%20issues%20when%20calling%20the%20HSE_SignBootImage()%20function%2C%20I%20recommend%20reviewing%20the%20following%20thread%2C%20as%20it%20may%20be%20related%20to%20the%20problem%20you%20are%20experiencing.%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FS32K%2FHSE-VerifyBootImage-return-HSE-SRV-RSP-VERIFY-FAILED%2Ftd-p%2F2089994%22%20target%3D%22_blank%22%3EHSE_VerifyBootImage%20return%20HSE_SRV_RSP_VERIFY_FAILED%3C%2FA%3E%3C%2FP%3E%0A%3CP%3EIf%20the%20issue%20persists%20or%20the%20thread%20does%20not%20address%20your%20specific%20case%2C%20please%20let%20me%20know.%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2177037%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Basic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2177037%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSTRONG%3E%26nbsp%3BI%20have%26nbsp%3BS32K3_HSE_DemoExamples_1_0_0%2C%20S32K344%20device%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3EThe%20ADKP%20is%20programmed%20successfully%20(check_debug_password_programmed_status()%26nbsp%3Breturns%20TRUE).%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3EHowever%2C%20the%20function%26nbsp%3BHSE_SignBootImage()%26nbsp%3Bcontinues%20to%20fail%26nbsp%3Bimmediately%20upon%20invocation%2C%20returning%20the%20error%20code%26nbsp%3B0x55a5aa33%3C%2FSTRONG%3E%3CBR%20%2F%3E%3CBR%20%2F%3EIn%20the%20main%20of%20Basic%20Secure%20Boot%20it%20does%20not%20pass%20the%20assert%3CBR%20%2F%3E%2F*%20Verify%20that%20the%20generated%20TAG%20is%20valid%20for%20the%20APPBL%20*%2F%3CBR%20%2F%3E%23if%20VERIFY_TAG%3CBR%20%2F%3EsrvResponse%20%3D%20HSE_VerifyBootImage(pAppBL)%3B%3CBR%20%2F%3EASSERT(HSE_SRV_RSP_OK%20%3D%3D%20srvResponse)%3B%3CBR%20%2F%3E%23endif%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSTRONG%3EI%20generate%26nbsp%3BS32K344_SecureBootBlinky.bin%2C%20I%20put%20it%20in%26nbsp%3BC%3A%5CNXP%20while%20the%20SecureBootBlinky%20and%20the%20Basic_SecureBoot%20are%20in%26nbsp%3BC%3A%5CNXP%5CS32K3_HSE_DemoExamples_1_0_0%5CS32K3_HSE_DemoExamples%5CSecure_Boot%3C%2FSTRONG%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CSTRONG%3EI%20noticed%20in%20the%20linker%20file%20of%20Basic%20Secure%20Boot%20%22S32K344_flash.ld%22%20there%20is%20not%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%3CSTRONG%3E_adkp_key%26nbsp%3B%3A%3C%2FSTRONG%3E%3C%2FSPAN%3E%3CSTRONG%3E%26nbsp%3B%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%7B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.%20%3D%20ALIGN(4)%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20KEEP(*(_adkp_key))%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.%20%3D%20ALIGN(4)%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%20%7D%20%26gt%3B%20PFLASH%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3EDo%20I%20have%20to%20modify%20that%20file%3F%3C%2FSTRONG%3E%20i%20attach%20it%20to%20you%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%2F*****************************************************************************%3CBR%20%2F%3E*%3CBR%20%2F%3E*%20Copyright%202020-2022%20NXP%3CBR%20%2F%3E*%20All%20Rights%20Reserved%3CBR%20%2F%3E*%3CBR%20%2F%3E*****************************************************************************%3CBR%20%2F%3E*%3CBR%20%2F%3E*%20THIS%20SOFTWARE%20IS%20PROVIDED%20BY%20NXP%20%22AS%20IS%22%20AND%20ANY%20EXPRESSED%20OR%3CBR%20%2F%3E*%20IMPLIED%20WARRANTIES%2C%20INCLUDING%2C%20BUT%20NOT%20LIMITED%20TO%2C%20THE%20IMPLIED%20WARRANTIES%3CBR%20%2F%3E*%20OF%20MERCHANTABILITY%20AND%20FITNESS%20FOR%20A%20PARTICULAR%20PURPOSE%20ARE%20DISCLAIMED.%3CBR%20%2F%3E*%20IN%20NO%20EVENT%20SHALL%20NXP%20OR%20ITS%20CONTRIBUTORS%20BE%20LIABLE%20FOR%20ANY%20DIRECT%2C%3CBR%20%2F%3E*%20INDIRECT%2C%20INCIDENTAL%2C%20SPECIAL%2C%20EXEMPLARY%2C%20OR%20CONSEQUENTIAL%20DAMAGES%3CBR%20%2F%3E*%20(INCLUDING%2C%20BUT%20NOT%20LIMITED%20TO%2C%20PROCUREMENT%20OF%20SUBSTITUTE%20GOODS%20OR%3CBR%20%2F%3E*%20SERVICES%3B%20LOSS%20OF%20USE%2C%20DATA%2C%20OR%20PROFITS%3B%20OR%20BUSINESS%20INTERRUPTION)%3CBR%20%2F%3E*%20HOWEVER%20CAUSED%20AND%20ON%20ANY%20THEORY%20OF%20LIABILITY%2C%20WHETHER%20IN%20CONTRACT%2C%3CBR%20%2F%3E*%20STRICT%20LIABILITY%2C%20OR%20TORT%20(INCLUDING%20NEGLIGENCE%20OR%20OTHERWISE)%20ARISING%3CBR%20%2F%3E*%20IN%20ANY%20WAY%20OUT%20OF%20THE%20USE%20OF%20THIS%20SOFTWARE%2C%20EVEN%20IF%20ADVISED%20OF%3CBR%20%2F%3E*%20THE%20POSSIBILITY%20OF%20SUCH%20DAMAGE.%3CBR%20%2F%3E*%3CBR%20%2F%3E****************************************************************************%2F%3C%2FP%3E%3CP%3E__STACK_SIZE%20%3D%200x00001000%3B%3CBR%20%2F%3E__HEAP_SIZE%20%3D%200x00001000%3B%3C%2FP%3E%3CP%3E%2F*%20Linker%20script%20to%20configure%20memory%20regions.%20aggiungi%20PFLASH_SECURE%20se%20vuoi%20una%20regione%20dove%20mettere%20chiavi%20critiche*%2F%3CBR%20%2F%3EMEMORY%3CBR%20%2F%3E%7B%3CBR%20%2F%3EITCM%20(RWX)%20%3A%20ORIGIN%20%3D%200x00000000%2C%20LENGTH%20%3D%200x10000%3CBR%20%2F%3EPFLASH%20(RX)%20%3A%20ORIGIN%20%3D%200x400000%2C%20LENGTH%20%3D%200x3f4000%3CBR%20%2F%3EDFLASH%20(RX)%20%3A%20ORIGIN%20%3D%200x10000000%2C%20LENGTH%20%3D%200x20000%3CBR%20%2F%3EDTCM%20(RW)%20%3A%20ORIGIN%20%3D%200x20000000%2C%20LENGTH%20%3D%200x20000%3CBR%20%2F%3ESRAM0_STDBY%20(RW)%20%3A%20ORIGIN%20%3D%200x20400000%2C%20LENGTH%20%3D%200x8000%3CBR%20%2F%3ESRAM%20(RW)%20%3A%20ORIGIN%20%3D%200x20408000%2C%20LENGTH%20%3D%200x48000%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%2F*%20Linker%20script%20to%20place%20sections%20and%20symbol%20values.%20Should%20be%20used%20together%3CBR%20%2F%3E*%20with%20other%20linker%20script%20that%20defines%20memory%20regions%20FLASH%20and%20RAM.%3CBR%20%2F%3E*%20It%20references%20following%20symbols%2C%20which%20must%20be%20defined%20in%20code%3A%3CBR%20%2F%3E*%20Reset_Handler%20%3A%20Entry%20of%20reset%20handler%3CBR%20%2F%3E*%3CBR%20%2F%3E*%20It%20defines%20following%20symbols%2C%20which%20code%20can%20use%20without%20definition%3A%3CBR%20%2F%3E*%20__exidx_start%3CBR%20%2F%3E*%20__exidx_end%3CBR%20%2F%3E*%20__ecc_table_start__%3CBR%20%2F%3E*%20__ecc_table_end__%3CBR%20%2F%3E*%20__etext%3CBR%20%2F%3E*%20__data_start__%3CBR%20%2F%3E*%20__preinit_array_start%3CBR%20%2F%3E*%20__preinit_array_end%3CBR%20%2F%3E*%20__init_array_start%3CBR%20%2F%3E*%20__init_array_end%3CBR%20%2F%3E*%20__fini_array_start%3CBR%20%2F%3E*%20__fini_array_end%3CBR%20%2F%3E*%20__data_end__%3CBR%20%2F%3E*%20__bss_start__%3CBR%20%2F%3E*%20__bss_end__%3CBR%20%2F%3E*%20__end__%3CBR%20%2F%3E*%20end%3CBR%20%2F%3E*%20__HeapLimit%3CBR%20%2F%3E*%20__StackLimit%3CBR%20%2F%3E*%20__StackTop%3CBR%20%2F%3E*%20__stack%3CBR%20%2F%3E*%2F%3CBR%20%2F%3EENTRY(Reset_Handler)%3C%2FP%3E%3CP%3ESECTIONS%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.text%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3EKEEP(*(.vectors))%3CBR%20%2F%3E*(.text*)%3C%2FP%3E%3CP%3EKEEP(*(.init))%3CBR%20%2F%3EKEEP(*(.fini))%3C%2FP%3E%3CP%3E%2F*%20.ctors%20*%2F%3CBR%20%2F%3E*crtbegin.o(.ctors)%3CBR%20%2F%3E*crtbegin%3F.o(.ctors)%3CBR%20%2F%3E*(EXCLUDE_FILE(*crtend%3F.o%20*crtend.o)%20.ctors)%3CBR%20%2F%3E*(SORT(.ctors.*))%3CBR%20%2F%3E*(.ctors)%3C%2FP%3E%3CP%3E%2F*%20.dtors%20*%2F%3CBR%20%2F%3E*crtbegin.o(.dtors)%3CBR%20%2F%3E*crtbegin%3F.o(.dtors)%3CBR%20%2F%3E*(EXCLUDE_FILE(*crtend%3F.o%20*crtend.o)%20.dtors)%3CBR%20%2F%3E*(SORT(.dtors.*))%3CBR%20%2F%3E*(.dtors)%3C%2FP%3E%3CP%3E*(.rodata*)%3CBR%20%2F%3EKEEP(*(.eh_frame*))%3CBR%20%2F%3E%7D%20%26gt%3B%20PFLASH%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E.ARM.extab%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E*(.ARM.extab*%20.gnu.linkonce.armextab.*)%3CBR%20%2F%3E%7D%20%26gt%3B%20PFLASH%3C%2FP%3E%3CP%3E__exidx_start%20%3D%20.%3B%3CBR%20%2F%3E.ARM.exidx%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E*(.ARM.exidx*%20.gnu.linkonce.armexidx.*)%3CBR%20%2F%3E%7D%20%26gt%3B%20PFLASH%3CBR%20%2F%3E__exidx_end%20%3D%20.%3B%3C%2FP%3E%3CP%3E.ecc.table%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(4)%3B%3CBR%20%2F%3E__ecc_table_start__%20%3D%20.%3B%3C%2FP%3E%3CP%3EQUAD%20(__data_start__)%3CBR%20%2F%3EQUAD%20((__data_end__%20-%20__data_start__)%20%2F%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%3CP%3EQUAD%20(__bss_start__)%3CBR%20%2F%3EQUAD%20((__bss_end__%20-%20__bss_start__)%20%2F%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%3CP%3EQUAD%20(__HeapTop)%3CBR%20%2F%3EQUAD%20((__HeapLimit%20-%20__HeapTop)%20%2F%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%3CP%3EQUAD%20(__StackLimit)%3CBR%20%2F%3EQUAD%20((__StackTop%20-%20__StackLimit)%20%2F%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%3CP%3EQUAD%20(ORIGIN(ITCM))%3CBR%20%2F%3EQUAD%20(LENGTH(ITCM)%20%2F%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%3CP%3EQUAD%20(ORIGIN(DTCM))%3CBR%20%2F%3EQUAD%20(LENGTH(DTCM)%20%2F%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%3C%2FP%3E%3CP%3E__ecc_table_end__%20%3D%20.%3B%3CBR%20%2F%3E%7D%20%26gt%3B%20PFLASH%3C%2FP%3E%3CP%3E.copy.table%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(4)%3B%3CBR%20%2F%3E__copy_table_start__%20%3D%20.%3B%3C%2FP%3E%3CP%3ELONG%20(__etext)%3CBR%20%2F%3ELONG%20(__data_start__)%3CBR%20%2F%3ELONG%20((__data_end__%20-%20__data_start__)%20%2F%204)%3C%2FP%3E%3CP%3E%2F*%20Add%20each%20additional%20data%20section%20here%20*%2F%3CBR%20%2F%3E%2F*%3CBR%20%2F%3ELONG%20(__etext2)%3CBR%20%2F%3ELONG%20(__data2_start__)%3CBR%20%2F%3ELONG%20((__data2_end__%20-%20__data2_start__)%20%2F%204)%3CBR%20%2F%3E*%2F%3CBR%20%2F%3E__copy_table_end__%20%3D%20.%3B%3CBR%20%2F%3E%7D%20%26gt%3B%20PFLASH%3C%2FP%3E%3CP%3E.zero.table%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(4)%3B%3CBR%20%2F%3E__zero_table_start__%20%3D%20.%3B%3CBR%20%2F%3E%2F*%20Add%20each%20additional%20bss%20section%20here%20*%2F%3CBR%20%2F%3E%2F*%3CBR%20%2F%3ELONG%20(__bss2_start__)%3CBR%20%2F%3ELONG%20((__bss2_end__%20-%20__bss2_start__)%20%2F%204)%3CBR%20%2F%3E*%2F%3CBR%20%2F%3E__zero_table_end__%20%3D%20.%3B%3CBR%20%2F%3E%7D%20%26gt%3B%20PFLASH%3C%2FP%3E%3CP%3E__etext%20%3D%20ALIGN(8)%3B%3C%2FP%3E%3CP%3E.boot_header%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3EKEEP(*(.boot_header))%3CBR%20%2F%3E%7D%20%26gt%3B%20DFLASH%3C%2FP%3E%3CP%3E.standby_ram%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E*(.standby_ram)%3CBR%20%2F%3E%7D%20%26gt%3B%20SRAM0_STDBY%3C%2FP%3E%3CP%3E%2F*%20Due%20ECC%20initialization%20sequence%20__data_start__%20and%20__data_end__%20should%20be%20aligned%20on%208%20bytes%20*%2F%3CBR%20%2F%3E.data%20%3A%20AT%20(__etext)%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__data_start__%20%3D%20.%3B%3CBR%20%2F%3E*(vtable)%3CBR%20%2F%3E*(.data)%3CBR%20%2F%3E*(.data.*)%3C%2FP%3E%3CP%3E.%20%3D%20ALIGN(4)%3B%3CBR%20%2F%3E%2F*%20preinit%20data%20*%2F%3CBR%20%2F%3EPROVIDE_HIDDEN%20(__preinit_array_start%20%3D%20.)%3B%3CBR%20%2F%3EKEEP(*(.preinit_array))%3CBR%20%2F%3EPROVIDE_HIDDEN%20(__preinit_array_end%20%3D%20.)%3B%3C%2FP%3E%3CP%3E.%20%3D%20ALIGN(4)%3B%3CBR%20%2F%3E%2F*%20init%20data%20*%2F%3CBR%20%2F%3EPROVIDE_HIDDEN%20(__init_array_start%20%3D%20.)%3B%3CBR%20%2F%3EKEEP(*(SORT(.init_array.*)))%3CBR%20%2F%3EKEEP(*(.init_array))%3CBR%20%2F%3EPROVIDE_HIDDEN%20(__init_array_end%20%3D%20.)%3B%3C%2FP%3E%3CP%3E.%20%3D%20ALIGN(4)%3B%3CBR%20%2F%3E%2F*%20finit%20data%20*%2F%3CBR%20%2F%3EPROVIDE_HIDDEN%20(__fini_array_start%20%3D%20.)%3B%3CBR%20%2F%3EKEEP(*(SORT(.fini_array.*)))%3CBR%20%2F%3EKEEP(*(.fini_array))%3CBR%20%2F%3EPROVIDE_HIDDEN%20(__fini_array_end%20%3D%20.)%3B%3C%2FP%3E%3CP%3EKEEP(*(.jcr*))%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E%2F*%20All%20data%20end%20*%2F%3CBR%20%2F%3E__data_end__%20%3D%20.%3B%3C%2FP%3E%3CP%3E%7D%20%26gt%3B%20SRAM%3C%2FP%3E%3CP%3E%2F*%20Due%20ECC%20initialization%20sequence%20__bss_start__%20and%20__bss_end__%20should%20be%20aligned%20on%208%20bytes%20*%2F%3CBR%20%2F%3E.bss%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__bss_start__%20%3D%20.%3B%3CBR%20%2F%3E*(.bss)%3CBR%20%2F%3E*(.bss.*)%3CBR%20%2F%3E*(COMMON)%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__bss_end__%20%3D%20.%3B%3CBR%20%2F%3E%7D%20%26gt%3B%20SRAM%3C%2FP%3E%3CP%3E%2F*%20Due%20ECC%20initialization%20sequence%20__HeapTop%20and%20__HeapLimit%20should%20be%20aligned%20on%208%20bytes%20*%2F%3CBR%20%2F%3E.heap%20(COPY)%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__HeapTop%20%3D%20.%3B%3CBR%20%2F%3E__end__%20%3D%20.%3B%3CBR%20%2F%3E_end%20%3D%20.%3B%3CBR%20%2F%3EPROVIDE(end%20%3D%20.)%3B%3CBR%20%2F%3E.%20%3D%20.%20%2B%20__HEAP_SIZE%3B%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__HeapLimit%20%3D%20.%3B%3CBR%20%2F%3E%7D%20%26gt%3B%20SRAM%3C%2FP%3E%3CP%3E%2F*%20Due%20ECC%20initialization%20sequence%20__StackLimit%20and%20__StackTop%20should%20be%20aligned%20on%208%20bytes%20*%2F%3CBR%20%2F%3E.stack%20(ORIGIN(SRAM)%20%2B%20LENGTH(SRAM)%20-%20__STACK_SIZE)%20(COPY)%20%3A%3CBR%20%2F%3E%7B%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__StackLimit%20%3D%20.%3B%3CBR%20%2F%3E.%20%3D%20.%20%2B%20__STACK_SIZE%3B%3CBR%20%2F%3E.%20%3D%20ALIGN(8)%3B%3CBR%20%2F%3E__StackTop%20%3D%20.%3B%3CBR%20%2F%3E%7D%20%26gt%3B%20SRAM%3CBR%20%2F%3EPROVIDE(__stack%20%3D%20__StackTop)%3B%3C%2FP%3E%3CP%3E%2F*%20Check%20if%20data%20%2B%20heap%20%2B%20stack%20exceeds%20RAM%20limit%20*%2F%3CBR%20%2F%3EASSERT(__StackLimit%20%26gt%3B%3D%20__HeapLimit%2C%20%22region%20RAM%20overflowed%20with%20stack%22)%3CBR%20%2F%3ECM7_START_ADDRESS%20%3D%20ORIGIN(PFLASH)%3B%3CBR%20%2F%3E__STDBYRAM_START%20%3D%20ORIGIN(SRAM0_STDBY)%3B%3CBR%20%2F%3E__STDBYRAM_SIZE%20%3D%20LENGTH(SRAM0_STDBY)%3B%3CBR%20%2F%3E%7D%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fc-pwmxy87654%2FS32K344-WB%2Fpd-p%2FS32K344-WB%22%20class%3D%22lia-product-mention%22%20data-product%3D%223494-1%22%20target%3D%22_blank%22%3ES32K344-WB%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2174494%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Basic%20Secure%20Boot%20HSE%20S32K344%20ADKP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2174494%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F248858%22%20target%3D%22_blank%22%3E%40silvia_zandoli2%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ERefer%20to%20the%20following%20thread%2C%20which%20contains%20information%20related%20to%20this%20topic%20and%20may%20be%20helpful%20for%20you.%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2FS32K%2FS32K3-Restrict-the-debug-access-with-a-password-when-HSE-is-used%2Fm-p%2F1756696%22%20target%3D%22_blank%22%3E%5BS32K3%5D%20Restrict%20the%20debug%20access%20with%20a%20password%20when%20HSE%20is%20used%3C%2FA%3E%3C%2FP%3E%0A%3CP%3EAdditionally%2C%20I%20recommend%20reviewing%20the%20implementation%20of%20the%20functions%20ProgramADKPService()%2C%20Advance_LifeCycle_Service()%2C%20and%20attributeProgrammingService()%20provided%20in%20the%20%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fwebapp%2FDownload%3FcolCode%3DS32K3_HSE_DemoExamples%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3ES32K3%20MCUs%20for%20General%20Purpose%20HSE%20Demo%20Examples%3C%2FA%3E%20and%2For%20the%20HSE_DEMOAPP.%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3EBR%2C%20VaneB%3C%2FP%3E%3C%2FLINGO-BODY%3E