Cannot blow efuses on a CY8C61x4

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
DevaunG
Level 1
Level 1
First reply posted First question asked Welcome!

I have been unable to determine how to blow the efuses on a CY8C6144LQI-S4F92. I have tried Psoc Programmer, Cypress Programmer, and JFlash.

The CY8C6144LQI-S4F92 does not appear in the list of mcus that are supported by Psoc Programmer.

With Cypress Programmer, every time I try to program the efuses I get an error and have been unable to find what the error means or how to solve.

I have 2.56 V on the VDD lines. I am able to program the main firmware without issues.

0 Likes
1 Solution
Pushyanth_K
Moderator
Moderator
Moderator
100 sign-ins 10 solutions authored 50 replies posted

Hi @DevaunG ,

 

The case has been discussed in the Microsoft Dynamics.

Regards,

Pushyanth

View solution in original post

0 Likes
6 Replies
Rakesh_Patrudu
Moderator
Moderator
Moderator
25 solutions authored 5 likes given 50 replies posted

Hi @DevaunG ,

The device which you are using is CY8C6144LQI-S4F92 is supported in ModusToolbox. The hex files generated by ModusToolbox can only be programmed with a Cypress programmer; it does not support PSoC programmer.
Can you please specify which version of Cypress programmer you are using? If you are using the older version then please download the latest version of Cypress programmer and try programming your device.

Best Regards,
Rakesh

0 Likes

My Cypress programmer is version 4.1.0.

The error I get when I try to program the unit with my srec file is:

Info : #2 : psoc6_efuse_cm4 (psoc6_2m_efuse) at 0x90700000, size 0x00000400, buswidth 1, chipwidth 1
Info : Flash banks detected
Info : cyp status: OK
Info : cyp_get_mpn
Info : ** Detected device PN: CY8C6144LQI-S4F92 SiliconID: EACB Revision: 13 FamilyID: 10E DIE: PSoC6A256K
Info : program_device "C:/Users/dgeruntho/Documents/NK_Projects/NK_DevelopmentTools/360047_sreccatwrapper/efuse.srec" "0"
Info : ** Program image C:/Users/dgeruntho/Documents/NK_Projects/NK_DevelopmentTools/360047_sreccatwrapper/efuse.srec offset:0 **
Info : psoc6.cpu.cm4 halted due to debug-request, current mode: Thread 
Info : xPSR: 0x01000000 pc: 0x0000007c msp: 0x0801f800
Info : ** Programming Started **
Info : auto erase enabled
Info : Erase operation for EFuse bank is not supported, skipping
Error: SROM API execution failed. Status: 0xF0000005
Error: Error of BlowFuseBit Addr = 14[0]
Error: error writing to flash at address 0x90700000 at offset 0x00000000
Error: cyp status: ERROR
Info : Program device failed
Error: C:/Program Files (x86)/Cypress/Cypress Programmer 4.1/./scripts/cyp_base_default.tcl:38: Error: ** Programming Failed **
Error: in procedure 'program_device' 
Error: at file "C:/Program Files (x86)/Cypress/Cypress Programmer 4.1/./scripts/cyp_base_default.tcl", line 38
Info : cyp_get_mpn
Info : ** Detected device PN: CY8C6144LQI-S4F92 SiliconID: EACB Revision: 13 FamilyID: 10E DIE: PSoC6A256K
0 Likes

Here is the srec file I'm trying to use. I followed the steps I found here: Solved: eFuse only project - Infineon Developer Community, I created a hex file with ModusToolbox that had efuse data in it. I then used srec_cat to convert the file to a srec and the comparison I did with the srec file I am manually creating came back as the same.

Here is the srec file I am manually creating:
S0220000687474703A2F2F737265636F72642E736F75726365666F7267652E6E65742F1D
S32590700000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
S32590700020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
S32590700040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
S32590700060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
S32590700080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
S325907000A0010001000000000101010101000101010001000001000100000101000100010128
S325907000C0000100000100010100000101000101000101010001000001000101010001000009
S325907000E00100010000010101010100000001000000010001010100010101000000000000EB
S325907001000000010001000101000100000000000101010101000100000100010100000001CA
S32590700120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000101010101010101010101010101BB
S32590700140010001010101010101010101010101010101010101010101000000000001000081
S32590700160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
S32590700180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
S325907001A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
S325907001C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
S325907001E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
S32590700200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
S32590700220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
S32590700240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
S32590700260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
S32590700280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
S325907002A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
S325907002C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
S325907002E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
S32590700300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
S32590700320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
S32590700340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
S32590700360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
S32590700380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
S325907003A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
S325907003C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
S325907003E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
S5030020DC
S9030000FC

0 Likes
DevaunG
Level 1
Level 1
First reply posted First question asked Welcome!

Referencing AN221111 did allow me to take a step forward but I still cannot blow the efuses.

I made an srec with the following data, it should only contain the Secure/Dead access data.
(sar_dar.srec)
S0220000687474703A2F2F737265636F72642E736F75726365666F7267652E6E65742F1D
S32590700000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA
S32590700020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA
S32590700040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA
S32590700060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A
S32590700080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
S325907000A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A
S325907000C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A
S325907000E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A
S32590700100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
S32590700120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0101010101010101C9
S32590700140010001010101010101010101010101010101010101010101FFFFFFFFFFFFFFFF8A
S32590700160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99
S32590700180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79
S325907001A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59
S325907001C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39
S325907001E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19
S32590700200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
S32590700220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8
S32590700240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8
S32590700260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98
S32590700280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78
S325907002A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58
S325907002C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38
S325907002E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18
S32590700300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
S32590700320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7
S32590700340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
S32590700360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97
S32590700380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77
S325907003A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57
S325907003C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37
S325907003E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17
S5030020DC
S9030000FC

Cypress Programmer 4.1.0 accepted the file and claims to have programmed the efuses:
Info : ** Detected device PN: CY8C6144LQI-S4F92 SiliconID: EACB Revision: 13 FamilyID: 10E DIE: PSoC6A256K
Info : program_device "C:/Users/dgeruntho/Documents/NK_Projects/NK_DevelopmentTools/360047_sreccatwrapper/sar_dar_data.srec" "0"
Info : ** Program image C:/Users/dgeruntho/Documents/NK_Projects/NK_DevelopmentTools/360047_sreccatwrapper/sar_dar_data.srec offset:0 **
Info : psoc6.cpu.cm4 halted due to debug-request, current mode: Thread
Info : xPSR: 0x01000000 pc: 0x0000007c msp: 0x0801f800
Info : ** Programming Started **
Info : auto erase enabled
Info : Erase operation for EFuse bank is not supported, skipping
Info : The Life Cycle stage is not present in the programming file
Info : wrote 1024 bytes from file C:/Users/dgeruntho/Documents/NK_Projects/NK_DevelopmentTools/360047_sreccatwrapper/sar_dar_data.srec in 0.020530s (48.709 KiB/s)
Info : ** Programming Finished **

But I am not seeing the blown efuses in my program. My program is still outputting 0x00 for the Dead/Secure access registers. All my code does is call Cy_EFUSE_GetEfuseByte and send the received value out over UART.

/*Main program loop.*/
int i = 0;
int x;
uint32_t efuseOffset = 20;
uint8_t val;

while(TRUE)
{

/*Set sleep to TRUE. If still TRUE at the end of the loop, the system will sleep.*/

  enterVlps = FALSE;
  i = (i + 1) % 1000000;

  if(i == 0)
  {
    for(x = 0; x < 50; x++)
    {
      Cy_EFUSE_GetEfuseByte(efuseOffset + x, &val);
      UartSendByte(&devUartTesting, val);
    }
  }
  else if(i == 1)
  {
    UartSendByte(&devUartTesting, 0xDE);
    UartSendByte(&devUartTesting, 0xAD);
  }
}
0 Likes
DevaunG
Level 1
Level 1
First reply posted First question asked Welcome!

I further updated the C code to also output the user data e-fuse section and have confirmed multiple times, using a j-link and miniprog4, that I can blow the user data e-fuses.

I am still unable to blow the Secure/Dead Access Registers fuses.
I did determine that the bit order I was using in the original srec file was flipped and have since changed it. Cypress Programmer, using the new srec files, was unable to blow the fuses and still outputs a successful program without the fuses changing.

I also tried using OpenOCD command line to manually blow the SAR/DAR fuses without success. Finally, I tried the following command:

.\openocd.exe -s ..\scripts -f interface\jlink.cfg -c "transport select swd; set ENABLE_CM0 0" -f \target\psoc6_256k.cfg -c "init; reset init; psoc6 allow_efuse_program on; flash fillb 0x9070015a 1 1; flash fillb 0x90700148 1 1; shutdown;"

which resulted in:

…
wrote 1 bytes to 0x9070015a in 0.084163s (0.012 KiB/s)
Info : Start address 0x90700148 breaks the required alignment of flash bank psoc6_efuse_cm4
Info : Padding 328 bytes from 0x90700000
Info : Padding at 0x90700149 with 695 bytes (bank write end alignment)
Info : The Life Cycle stage is not present in the programming file
Error: Verification error address 0x90700148, read back 0x00, expected 0x01
…

 and causes the unit to go to DEAD.

0 Likes
Pushyanth_K
Moderator
Moderator
Moderator
100 sign-ins 10 solutions authored 50 replies posted

Hi @DevaunG ,

 

The case has been discussed in the Microsoft Dynamics.

Regards,

Pushyanth

0 Likes