How to use OTFAD function in K81

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to use OTFAD function in K81

840 Views
熊化春
Contributor I

hello:

   I 'm trying to configure OTFAD in my own code,which is ported from NXP_Kinetis_Bootloader_2_0_0.But when I read data from flash after enable OTFAD,it is the same as the data before enable OTFAD.I don't know why.See annex for test code.

 

  OTFAD all register values are as follows.

   OTFAD_CR is 0x80000000

   OTFAD_SR is 0x20000040

   OTFAD_CRC is 0x00000000

   OTFAD_CTX0_KEY_W0 is 0x03020100

   OTFAD_CTX0_KEY_W1 is 0x07060504

   OTFAD_CTX0_KEY_W2 is 0x0b0a0908

   OTFAD_CTX0_KEY_W3 is 0x0f0e0d0c

   OTFAD_CTX0_CTR_W0 is 0x67452301

   OTFAD_CTX0_CTR_W1 is 0xefcdab89

   OTFAD_CTX0_RGD_W0 is 0x68080000

   OTFAD_CTX0_RGD_W1 is 0x680fffff

 

   the test code result is as follows.

   enable interrupt
   Read Before Enable OTF
   0x55 0xaa 0xcc 0x44 0x5a 0xa5 0x4c 0xc4 0x53 0x30 0x2d 0x55 0x53 0x45 0x52 0x20
   0x38 0x35 0x30 0x30 0x2d 0x46 0x2d 0x31 0x30 0x33 0x20 0x20 0x20 0x20 0x20 0x20
   0x30 0x30 0x30 0x30 0x2d 0x30 0x31 0x30 0x30 0x2d 0x30 0x30 0x20 0x20 0x20 0x20
   0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

   Read After Enable OTF
   0x55 0xaa 0xcc 0x44 0x5a 0xa5 0x4c 0xc4 0x53 0x30 0x2d 0x55 0x53 0x45 0x52 0x20
   0x38 0x35 0x30 0x30 0x2d 0x46 0x2d 0x31 0x30 0x33 0x20 0x20 0x20 0x20 0x20 0x20
   0x30 0x30 0x30 0x30 0x2d 0x30 0x31 0x30 0x30 0x2d 0x30 0x30 0x20 0x20 0x20 0x20
   0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

   Read After Disable OTF
   0x55 0xaa 0xcc 0x44 0x5a 0xa5 0x4c 0xc4 0x53 0x30 0x2d 0x55 0x53 0x45 0x52 0x20
   0x38 0x35 0x30 0x30 0x2d 0x46 0x2d 0x31 0x30 0x33 0x20 0x20 0x20 0x20 0x20 0x20
   0x30 0x30 0x30 0x30 0x2d 0x30 0x31 0x30 0x30 0x2d 0x30 0x30 0x20 0x20 0x20 0x20
   0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
   0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

   OTFAD_CR is 0x80000000
   OTFAD_SR is 0x20000040
   OTFAD_CRC is 0x00000000
   OTFAD_CTX0_KEY_W0 is 0x03020100
   OTFAD_CTX0_KEY_W1 is 0x07060504
   OTFAD_CTX0_KEY_W2 is 0x0b0a0908
   OTFAD_CTX0_KEY_W3 is 0x0f0e0d0c
   OTFAD_CTX0_CTR_W0 is 0x67452301
   OTFAD_CTX0_CTR_W1 is 0xefcdab89
   OTFAD_CTX0_RGD_W0 is 0x68080000
   OTFAD_CTX0_RGD_W1 is 0x680fffff

Original Attachment has been moved to: otftest.c.zip

Original Attachment has been moved to: fsl_otfad_hal.c.zip

Tags (1)
0 Kudos
1 Reply

594 Views
juying_zhong
NXP Employee
NXP Employee

Hello,

1. Fisrtly confirmed that qspi operation are normal.

2. Could you try to change

" memcpy(ucReadSflashDataAfterEnableOTF,(uint8_t *)0x68080000,sizeof(ucReadSflashDataAfterEnableOTF));"

to

"for(i=0; i<sizeof(ucReadSflashDataAfterEnableOTF)); i++)
  {
    ucReadSflashDataAfterEnableOTF[i] = ((uint8_t)(*(volatile uint8_t*)(0x68080000 + i)));
  }"

Best regards,

Juying

0 Kudos