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 |