cancel
Showing results for 
Search instead for 
Did you mean: 

Can't access secure DCMIPP peripheral registers

DBonh.1
Associate III

Hello,

I have a DCMIPP example application in FSBL that runs fine on an STM32N6570 Disco when loading it with the Disco board's built-in ST-Link. It has a DCMIPP_HandleType Def structure with hdcmipp.Instance that needs to access secure peripheral memory at 0x58002000. It works fine on the Disco kit.

I have very similar code on a custom board, using a J-Link debugger. Most of it runs, it communicates okay with the IMX355 image sensor over I2C. The ISP starts up okay. But it fails when the HAL_DCMIPP_CSI_Start() does a check of the hdcmipp.Instance and finds that all of the values are 0 instead of what's in the DCMIPP registers. It can't seem to read or write the DCMIPP registers.

I run the same MX_DCMIPP_Init() function on both the dev kit and custom board before calling HAL_DCMIPP_CSI_Start(). The dev kit loads all the register values, but the custom board is stuck at all 0s.

I'm only guessing that my problem is due to accessing the secure peripheral memory, but maybe it's something else entirely.

Both the dev kit and custom board seem to be in Secure mode with OTP18 = 0 per STM32CubeProgrammer.  I'm only beginning to understand STM32N6 security, so I'm hoping someone can help. Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
DBonh.1
Associate III

Looks like I was missing the stm32n6xx_hal_msp.c file that enabled a bunch of DCMIPP stuff, clocks included. Duh. I'll confirm it in a sec...

View solution in original post

3 REPLIES 3
DBonh.1
Associate III

I'm growing suspicious of the clocks. Maybe I'm not getting a clock to the DCMIPP?  PCLK5 reports that it's running at 50MHz. But maybe PCLK5 is not getting to the peripheral.
The debug panel can't read either the unsecure 0x48002000 or the secure 0x58002000. All of those registers report 0.

DBonh.1
Associate III

Looks like I was missing the stm32n6xx_hal_msp.c file that enabled a bunch of DCMIPP stuff, clocks included. Duh. I'll confirm it in a sec...

DBonh.1
Associate III

To clarify the fix, I had a copy of stm32n6xx_hal_msp.c in the project, but it didn't have the DCMIPP functions that it needed to configure and enable the DCMIPP. It had nothing to do with secure parts of the peripheral memory.