@@ -237,6 +237,7 @@ void fixup3V1Rail() {
237237
238238#include " QSPIFBlockDevice.h"
239239
240+ #if 0
240241// 8Kbit secure OTP area (on MX25L12833F)
241242class SecureQSPIFBlockDevice: public QSPIFBlockDevice {
242243 public:
@@ -248,8 +249,9 @@ class SecureQSPIFBlockDevice: public QSPIFBlockDevice {
248249 return ret;
249250 }
250251};
252+ #endif
251253
252- #if 0
254+ #if 1
253255// 256byte secure OTP area (on AT25SF128A)
254256// TODO: could be imcomplete, to be tested
255257class SecureQSPIFBlockDevice : public QSPIFBlockDevice {
@@ -277,8 +279,11 @@ static SecureQSPIFBlockDevice secure_root;
277279
278280bool getSecureFlashData () {
279281 static OptaBoardInfo* info = new OptaBoardInfo ();
282+ uint8_t temp_buf[sizeof (OptaBoardInfo) + 1 ];
280283 secure_root.init ();
281- auto ret = secure_root.readSecure (info, 0 , sizeof (OptaBoardInfo));
284+ // read secure sector 2 ( address 1 << 13 )
285+ auto ret = secure_root.readSecure (temp_buf, (1 << 13 ), sizeof (OptaBoardInfo));
286+ memcpy (info, &temp_buf[1 ], sizeof (OptaBoardInfo));
282287 if (info->magic == OTP_QSPI_MAGIC) {
283288 _boardInfo = (uint8_t *)info;
284289 has_otp_info = true ;
@@ -298,19 +303,17 @@ uint16_t boardRevision() {
298303}
299304
300305uint16_t _getVid_ () {
301- if (has_otp_info) {
302- return ((OptaBoardInfo*)_boardInfo)->vid ;
303- } else {
304- return _BOARD_VENDORID;
306+ if (!has_otp_info) {
307+ getSecureFlashData ();
305308 }
309+ return ((OptaBoardInfo*)_boardInfo)->vid ;
306310}
307311
308312uint16_t _getPid_ () {
309- if (has_otp_info) {
310- return ((OptaBoardInfo*)_boardInfo)->pid ;
311- } else {
312- return _BOARD_PRODUCTID;
313+ if (!has_otp_info) {
314+ getSecureFlashData ();
313315 }
316+ return ((OptaBoardInfo*)_boardInfo)->pid ;
314317}
315318
316319#define BOARD_REVISION (x,y ) (x << 8 | y)
@@ -325,7 +328,6 @@ void initVariant() {
325328 // Disable the FMC bank1 (enabled after reset)
326329 // See https://github.com/STMicroelectronics/STM32CubeH7/blob/beced99ac090fece04d1e0eb6648b8075e156c6c/Projects/STM32H747I-DISCO/Applications/OpenAMP/OpenAMP_RTOS_PingPong/Common/Src/system_stm32h7xx.c#L215
327330 FMC_Bank1_R->BTCR [0 ] = 0x000030D2 ;
328- getSecureFlashData ();
329331}
330332
331333#ifdef SERIAL_CDC
0 commit comments