How do you exit Autorun Mode, to enable updating a smartBASIC application OTA or via the UART?

Answer

To be able to exit Autorun Mode it is necessary to include an option in the smartBASIC code, prior to loading it to the module, that provides a way to exit the application, or have access to the nAutoRun pin. The options are explained below for UART and OTA methods for exiting Autorun Mode.

UART Methods:

1) Provided access is available to the nAutoRun pin, pull the nAutorun pin HIGH to move the module from nAutorun mode to Development mode. Once this pin is pulled high and the module is reset it should enter into Interactive Command mode and it should be possible to erase the file system, using AT&F1 and load a new smartBASIC application over the UART.

2) Have a way to exit the application, via a command or pin setting, using Endfunc 0. If Waitevent is the last statement in the application, and a function triggered by the command or pin change returns "Endfunc 0", then the module will exit the application and return to Interactive Command mode. Once the module returns to Interactive Command mode, the file system can be erased with AT&F1, and the updated application can then be loaded.

Over-the-Air smartBASIC application loading requires control of the vSP pin. To enter into OTA mode, it is necessary to pull the vSP pin of the BL65x module high, while the nAutorun pin is held low. This places the module in vSP-Command Mode, as opposed to vSP-Bridge mode, as explained in the "Command and Bridge Mode Operation" section of the matching smartBASIC Extensions User Guide for the module (see links below).

BL654/BL654PA smartBASIC Extensions Guide v29.5.7.2
User Guide - BL653 and BL653µ smartBASIC Extensions Guide v30.2.3.0
User Guide - BL652 smartBASIC Extensions v28.10.7.2

However, if an $autorun$ application is loaded to the module when the vSP pin is pulled high it will just run the application, in which case the one of the following methods can be used to enable exiting the application and erase the file system so that an updated application can be loaded.

OTA Methods:

1) Invoke the EraseFileSystem() function in the smartBASIC application. This function is used to erase the flash file system which contains the application that invoked this function, if and only if, the vSP input pin is pulled high. Given that SIO2 is high, after erasing the file system, the module resets and reboots into command mode with the virtual serial port service enabled (vSP-Command Mode), and the application can then be loaded following the OTA method.

2) Have a way to exit the application within the smartBASIC code, via a command or pin setting, using Endfunc 0. If “Waitevent” is the last statement in the application, and a function triggered by the command or pin change returns "Endfunc 0", then the module will exit the application and return to Interactive Command mode. Once the module returns to Interactive Command mode, the file system can be erased with AT&F1, and the updated application can then be loaded.

For convenience, a list of the nAutoRun pins/SIO and vSP pins/SIO for all BL65x modules is provided below. These can also be found in the Datasheet for the specified module.

BL65x nAutoRun and vSP pins
Module nAutoRun
Pin | SIO
vSP
Pin |SIO
BL654PA Pin 5
SIO_35           
Pin 50
SIO_02
BL654 Pin 5
SIO_35           
Pin 50
SIO_02
BL653 Pin 34
SIO_35
Pin 50
SIO_02
BL653u Pin 34
SIO_35
Pin 37
SIO_02
BL652 Pin 28
SIO_13
Pin 23
SIO_02