Hi Dialog Support,
我们已经建立了一些董事会完全复制了聪明Tag reference design and encountered some very strange behaviours on programming the boards.
SmartSnippets 3.7 SPI Flash Programmer is used for programming. If a board is being programmed for the first time, it will succeed. When I try to program it for the 2nd time, it fails.
There were 2 cases:
case 1:
On board 1, The first successfully programmed firmware was the SmartTag reference applicaiton. When I tried to program it to another custom firmware, the following message is display when I click "Connect"
[INFO @15-04-29 23:58:16] Could not measure total IR len. TDO is constant high.
[ERROR @15-04-29 23:58:16] Could not read memory.
[ERROR @15-04-29 23:58:16] No known chip found while opening JLink connection. Terminating proccess...
[INFO @15-04-29 23:58:16] Failed downloading firmware file to the board.
If I press the reset button while click "Connect", it connects successfully
[INFO @15-04-30 00:02:40] BTLE device selected.
[INFO @15-04-30 00:02:40] Firmware File C:\Users\bgou\SmartSnippets\resources\jtag_programmer.bin has been selected for downloading.
[INFO @15-04-30 00:02:41] Successfully downloaded firmware file to the board.
Then I selected f/w file to download and click Burn, the following log message is displayed which looks like it was successful, however the memory content read is different from the f/w file
[INFO @15-04-30 00:04:35] Header records have been removed from hex file custom_fw.hex.
[INFO @15-04-30 00:04:35] Read 17416 bytes from file custom_fw.hex.
[INFO @15-04-30 00:05:01] Started burning memory with 17736 bytes of data at address 0x00000.
[INFO @15-04-30 00:05:05] Memory burning completed successfully.
[INFO @15-04-30 00:05:05] Reading memory to refresh memory contents....
[INFO @15-04-30 00:05:08] Reading has finished. Read 32768 bytes.
I disconnected the board and tested it and found it still ran the old f/w. I have repeated the above procedure many times, all have the same result.
case 2:
On another board, I connected it in SmartSnippets and it showed:
[INFO @15-04-30 00:02:40] Firmware File C:\Users\bgou\SmartSnippets\resources\jtag_programmer.bin has been selected for downloading.
[INFO @15-04-30 00:02:41] Successfully downloaded firmware file to the board.
Then I disconnected the board WITHOUT burn any f/w image. Then I connected the board again and tried to burn a f/w this time, and it behaves similar to case 1: the log says the burning completed successfully but refreshed memory contents are different, and test showed no f/w was burnt.
Thanks,
Bill
One thing to add: for both boards, I can use Keil to load f/w into RAM without problem.
嗨,SPI FLASH should be erased (at least the sector you are writting to) before you do writing operations.
是的,我试图抹去flash first but unfortunately the refreshed contents looks strange: some are 00, some are FF and some are random values.
Hi gouzhuang, what image are you trying to burn into FLASH ? is this generated from the standard source code for the Smart Tags project, or your own customised version ? and do you have a secondary bootloader burnt into OTP ?
BR JE_Dialog
The image I'm trying to burn is a very simple one based on the template project with just battery service and a customized adv content.
I do not have a secondary bootloader in otp.
Thanks.
I figured out what's the problem. If the flash was programmed once, the board boots from flash every time it is powered up. This seemed to get in the way of erasing/writing the flash again. What I do to get around this is to trun the power switch on RIGHT BEFORE clicking connect in SmartSnippets, so that I have a chance to connect before it boots from flash. I have successfully re-programmed 3 boards using this trick.
Note: RESET does not work for me, I have to use the power switch on the board.
Is this expected behaviour or did I do something wrong? Hope somebody could shed a light on this.
Thanks.
Hello gouzhuang, it is expected behavior in that the device will boot directly from FLASH if it has no OTP and detects external connection ( that shows ROM bootloader is working properly). The problem wtih UART programming of the reference designs is that there is sometimes voltage on the UART lines at the time of Power On Reset, and that stop sthe device booting. We typically program the reference design boards using JTAG , although tihs requires a specific cable and alreayd having access to a JLINK debugger.
BR JE_Dialog
Hi JE_Dialog, the fact is that I was programming the boards using JTAG through the DevKit Basic.
Thanks,
Bill