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 REPLY 1
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.