I have recently start using the M2S150 Development kit from Microsemi and have run into an issue when attempting to program the board (via Libero 12.1).

When running the "Run PROGRAM Action" command the log reports the following

Error: programmer 'E2005ASNAY' : device 'M2S150' : Executing action PROGRAM FAILED, EXIT -31, refer to FlashPro online help for details.

In the FlashPro User Guide it says that this could be because:

  1. The certificate is corrupted
  2. The user hasn't provide application code in the eNVM (or the code is invalid)
  3. FAB_RESET_N is tied to ground

I can confirm that 2 & 3 are not being done because I have tied FAB_RESET_N high, and while I was initially trying to put application code in the eNVM when this error occurred, I attempted to program the board without putting application code and the error persisted.

I should note that I have been able to program this board before. In fact I currently have some very basic LED Blink code on the board and I am able to change the software portion via IAR. Additionally, I did find some information on retrieving the certificate via software, and have done that, but I'm not sure what they mean by "corrupted"

Would anyone know what is going on and how I could fix it?

  • \$\begingroup\$ Check the FlashPro is correctly powered from the target board. \$\endgroup\$
    – user16324
    Commented Oct 16, 2020 at 19:50
  • \$\begingroup\$ I do believe FlashPro is powered correctly because I am able to launch the stand-alone FlashPro software and I can ping the programmer successfully \$\endgroup\$ Commented Oct 16, 2020 at 20:01
  • \$\begingroup\$ That may not be enough, anecdotally. If unplugged from the host computer, is its green power LED lit? \$\endgroup\$
    – user16324
    Commented Oct 16, 2020 at 22:02
  • \$\begingroup\$ If I unplug the mini-usb cable the green LED near the mini-usb port turns off. However, I am using an external power brick to power the board via a barrel jack connector so the board still remains on even when the mini-usb is unplugged (hope that made sense). \$\endgroup\$ Commented Oct 17, 2020 at 4:09
  • \$\begingroup\$ I suspect that's your problem. I can't be certain but have heard of similar issues cured when the board supplied power to the JTAG connector. \$\endgroup\$
    – user16324
    Commented Oct 17, 2020 at 12:14

1 Answer 1


After talking to Microsemi tech support the issue seems to be the following (Taken from the ER096 Errata document ):

For the Revision 0 of the M2S090 and M2S150 devices, the eNVM needs to contain valid Cortex-M3 code. By default, SmartFusion2 parts are shipped with a default boot-up program stored at the eNVM address 0x60000000. If this default program is no longer valid or overwritten by the user, and there is no valid user boot code, the Cortex-M3 won’t execute to a valid state. This leads to unexpected behavior including the programming lockout condition in Revision 0 of the M2S090 and M2S150 devices.

To solve the error you simply need to run a while(1){} in the int main(){} portion of the software.

Specifically for me, I couldn't use Libero to program any new hardware code, but I could program software code in IAR/SoftConsole (based off any peripherals I included from my last MSS configuration).

I should note that I still cannot program code in the eNVM (Whenever I attempt to include a hex file within some preallocatted memory in Libero the same Exit -31 error comes up and the board locksout. I am still talking with Microsemi to figure this out)

Update 1: After talking more with microsemi and confirming that my original code works on a REV2 board the problem is still left unsolved. This perhaps is just a one off incident that has occurred with this particular board


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.