2024-06-15 10:46 PM - edited 2024-06-16 08:14 PM
Hello,
I am working on implementing secure firmware with OEMiRoT boot on the STM32H563. I have configured I2C1 and TIM1 as non-secure peripherals. While the TIM1 interrupt works as expected, I am encountering an issue where the I2C1 slave interrupt handler is never entered. (Note: The I2C slave works correctly if TrustZone is disabled.)
I am wondering if the I2C1 slave interrupt handler requires special handling when configured as a non-secure peripheral with TrustZone enabled?
Additionally, if I need to change the start offset and application size for secure and non-secure applications, what changes are required beyond updating flash_layout.h in OEMiROT project?
Any assistance on these issues would be greatly appreciated.
Thanks,
Ivan
Solved! Go to Solution.
2024-06-25 09:01 AM
Hello @Ivan2307 ,
I could reproduce your issue.
The reason is related to the usage of both .sh and .bat scripts and on windows we are more used to .bat :)
BUT, when you use STM32CubeIDE, only .sh scripts are updated in ROT_Provisioning/OEMiROT
And I used provisioning.bat instead of provisioning.sh like you and fell in same issue.
In fact, in the postbuild of OEMiROT_Boot, you update all needed files to make everything consistent.
The point is that you will update the ob_flash_programming.sh where you can see sec1_end=0x16 which is the good value for last secure flash sector, but ob_flash_programming.bat is not updated.
So, just launch provisioning.sh and it will work.
Best regards
Jocelyn
2024-06-18 01:49 AM
Hello @Ivan2307
I2C interrupt needs to be allocated to non secure. I don't see other reason why you wouldn't get this interrupt.
If you use the OEMiROT as it is, after changing the mapping in flash_layout.h, when building SBSFU_Boot, the linker files of the secure and non secure application will be updated.
Best regards
Jocelyn
2024-06-20 09:32 AM
Hello @Jocelyn RICARD
Thanks for your reply.
As regarding to OEMiROT, I saw the linker files were updated automatically after changing the mapping "in flash_layout.h". If I want to change the secure firmware and non-secure firmware size. How many parameters (Macro) I need to change in flash_layout.h? Looks if just changing "FLASH_S_PARTITION_SIZE" and "FLASH_NS_PARTITION_SIZE", it doesn't work.
Thanks, Ivan
2024-06-20 09:54 AM
Hello @Ivan2307 ,
the tools were made to make it easy so it should work in theory :)
What values did you use ? Did you change other settings?
Best regards
Jocelyn
2024-06-24 10:27 AM
Hello @Jocelyn RICARD ,
Thanks for your reply. I still have question regarding the issue I am facing. I also thought the change should work, but I noticed the VCP port printout is different before and after modifying the 'flash_layout.h' file.
The original firmware VCP port printout is as follows:
The VCP port printout after changing the flash layout is as follow:
I have also attached the modified firmware for your reference. If possible, could you please help me check it? What other changes I need to make to the flash layout to get it working correctly?
Thank you very much for your assistance.
Regards, Ivan
2024-06-25 09:01 AM
Hello @Ivan2307 ,
I could reproduce your issue.
The reason is related to the usage of both .sh and .bat scripts and on windows we are more used to .bat :)
BUT, when you use STM32CubeIDE, only .sh scripts are updated in ROT_Provisioning/OEMiROT
And I used provisioning.bat instead of provisioning.sh like you and fell in same issue.
In fact, in the postbuild of OEMiROT_Boot, you update all needed files to make everything consistent.
The point is that you will update the ob_flash_programming.sh where you can see sec1_end=0x16 which is the good value for last secure flash sector, but ob_flash_programming.bat is not updated.
So, just launch provisioning.sh and it will work.
Best regards
Jocelyn
2024-06-25 10:51 AM
Hello @Jocelyn RICARD ,
Thanks for your help. after updating .bat script, launch provision.bat and it works.
Regards, Ivan