As it often happens when the solution is already hidden in the answer.
Of course my reset trigger was not working properly. Sigh.
In case someone else has problems using larger TCMs, stumbles over this post and enjoys using assembler: Attached is a code snippet to grow the DTCM and ITCM of the STM32N6 to 256KB.
#
# Snippet to resize I/D-TCM of the STM32N6 to 256K each
#
# obtain xTCM start+end addresses from linker script
.extern _itcmstart
.extern _itcmextend
.extern _dtcmstart
.extern _dtcmextend
# or define here:
# .equ _itcmstart, 0x10000000
# .equ _itcmextend, 0x10040000
# .equ _dtcmstart, 0x30000000
# .equ _dtcmextend, 0x30040000
.equ CM55TCMCR, 0x56008008 /* SYSCFG->CM55TCMCR */
.equ CM55TCMCR_TCM_MSK, 0xff
.equ CM55TCMCR_DTCM_256K, 0x90
.equ CM55TCMCR_ITCM_256K, 0x09
.equ CM55TCMCR_xTCM_256K, (CM55TCMCR_DTCM_256K | CM55TCMCR_ITCM_256K)
.equ CM55TCMCR_DTCMWSDISABLE, 0x01000000
.equ CM55TCMCR_ITCMWSDISABLE, 0x00800000
.equ CM55TCMCR_xTCMWSDISABLE, (CM55TCMCR_DTCMWSDISABLE | CM55TCMCR_ITCMWSDISABLE)
.equ CM55RSTCR, 0x56008018 /* SYSCFG->CM55RSTCR */
.equ CM55RSTCR_CORE_RESET_TYPE, 0x1
.equ AIRCR, 0xe000ed0c /* SCB->AIRCR */
.equ AIRCR_PRIGROUP_MSK, 0x700
.equ AIRCR_SYSRESETREQ, 0x4
.equ AIRCR_VECTKEY, 0x05fa0000
# for use in YourResetHandler
resize_tcms: /* TCMs vergrößern */
movw r0, #:lower16:CM55TCMCR
movt r0, #:upper16:CM55TCMCR
movw r3, #CM55TCMCR_xTCM_256K
ldr r1, [r0]
and r2, r1, r3
eor r2, r2, r3
movt r3, #:upper16:CM55TCMCR_xTCMWSDISABLE
bic r4, r1, #CM55TCMCR_TCM_MSK
orr r4, r4, r3 /* Größe setzen, ohne Warten */
str r4, [r0]
cbz r2, .Ltcm_already_large /* TCMs sind schon passend groß */
b dopoweronreset
.Ltcm_already_large:
movw r1, #:lower16:_dtcmextend
movt r1, #:upper16:_dtcmextend
movw r5, #:lower16:_itcmextend
movt r5, #:upper16:_itcmextend
/* DTCM löschen */
movw r2, #0
movw r4, #4
movw r0, #:lower16:_dtcmstart
movt r0, #:upper16:_dtcmstart
.Lclear_dtcm:
str r2, [r0]
add r0, r4
cmp r0, r1
bcc .Lclear_dtcm
/* ITCM löschen */
movw r0, #:lower16:_itcmstart
movt r0, #:upper16:_itcmstart
.Lclear_itcm:
str r2, [r0]
add r0, r4
cmp r0, r5
bcc .Lclear_itcm
# ... continue reset handler and enjoy 2*256KB xTCM
bl main
dopoweronreset:
movw r1, #:lower16:CM55RSTCR
movt r1, #:upper16:CM55RSTCR
ldr r0, [r1]
orr r0, r0, #CM55RSTCR_CORE_RESET_TYPE /* Generate Power On Reset */
str r0, [r1]
movw r0, #:lower16:AIRCR
movt r0, #:upper16:AIRCR
ldr r1, [r0]
and r1, r1, #AIRCR_PRIGROUP_MSK /* PRIGROUP-Bits behalten */
movw r2, #AIRCR_SYSRESETREQ /* SYSRESETREQ */
movt r2, #:upper16:AIRCR_VECTKEY /* VECTKEY: Schlüssel, um Schreiben ins AIRCR zu enablieren */
orrs r1, r2 /* Bisherige PRIGROUP-Bits */
dsb sy
str r1, [r0] /* Reset auslösen */
dsb sy
.Lwaitreset:
nop
b .Lwaitreset