No reset on the target had no effect.
I think that it might possibly have something to do with the way the JLink is called rather than the build because if I first upload a debug version (Run->Start Debugging), the target runs normally (the LED blinks), then if I upload a release version (PlatformIO: Upload - I think you called a normal upload), it stops running (the LED stops blinking). It’s as if the debug version of the code was cleared by the JLink when it attempted to upload the release version.
Also, when uploading the debug version, the JLink progress dialog is displayed showing the upload progress, whereas when uploading the release version, it is not. And when doing a debug upload the green LED on the JLink blinks for a few seconds as the upload takes place. With a release upload, I see the green LED quickly blink off and back on.
Jack