Hi,Dialog!
My SUOTA Receiver is composed of DA14580,external SPI Flash (GPIO has been connected correctly), and 16 MHZ crystals (no 32 KHZ crystals). Making this:
SmartSippets burn product_header.txt to the Memory offset(HEX) of "Memory Header/NVDS Programmer"":0x1F000.
product_header.txt is :
Address Size (bytes) Parameter Value
0x1F000 2 signature 7052
0x1F002 2 version 1234
0 x1f004 4 offset1 00800000
0x1F008 4 offset2 00300100
Burn fw_1.img to the SPI Flash Programmer, the SPI Flash memory Offset(HEX) is 0x8000.
Burn secondary_bootloader.hex to the SPI Flash Programmer, the SPI Flash memory Offset(HEX) is 0x0000.
Now I use the SUOTA-1.1-RELEASE Android APK, don't find the Bluetooth, also is My SUOTA Receiver.
If the product_header.txt , fw_1.img and secondary_bootloader.hex are corrext , my step is right? Can you give the detail?
嗨,豆
I cant't understand how you 've created the product_header.txt.
Please follow the instructions below for working with SUOTA.
1) Create the first image: mkimage.exe single fw_1.bin fw_1.h fw_1.img enc
2) Create the second image: mkimage.exe single fw_2.bin fw_2.h fw_2.img enc (you can use the first image as well)
3) Create an image for the whole SPI memory: mkimage.exe multi spi secondary_bootloader.bin fw_1.img 0x8000 fw_1.img 0x13000 0x1F000 multipart.bin
4) Burn it into flash using smart snippets.
For the file fw_1,2.h please rename the file from \dk_apps\src\dialog\include\ ble_580_sw_version.h
Please try this and let us know.
Thanks MT_dialog
Hi,MT_dialog!
Burn the multipart.bin into flash at offset #0x00,right?
Thank you for help!
嗨,豆
Erase the FLASH first and yes, burn the multipart.bin into flash at address 0 and when windows promts you for Bootable select NO.
After that you should reset your device and it should start advertise.
Thanks MT_dialog
Hi,MT_dialog!
Thank you! Now I'm successeful.
But these is one question for help:
I have two img files, their MAC address is different,80:EA:CA:00:00:01 and 80:EA:CA:00:11:01.
A. One is 80:EA:CA:00:00:01 and it is used to make a multipart.bin for SUOTA Receiver. SUOTA-1.1-RELEASE .apk sends the file that its MAC is 80:EA:CA:00:11:01 to the SUOTA Receiver,
but when SUOTA is completed, the MAC address of SUOTA Receiver is 80:EA:CA:00:00:01. This seems to be incorrect!
B. One is 80:EA:CA:00:11:01 and it is used to make a multipart.bin for SUOTA Receiver. SUOTA-1.1-RELEASE .apk sends the file that its MAC is 80:EA:CA:00:00:01 to the SUOTA Receiver,
but when SUOTA is completed, the MAC address of SUOTA Receiver is 80:EA:CA:00:00:01. This seems to be OK!
I want to know that what is the reason for the first case?
Looking forward to your reply!
嗨,豆,
Are you changing the values of the db address from the nvds.c file?
Please try changing other credentials of the device, like name, also try to change the DA14580_SW_VERSION from the ble_580_sw_version and let us know what happens.
Thanks MT_dialog
Hi,MT_dialog!
我使用提供其他的文件rs. I don't know whether the DA14580_SW_VERSION is changed.
Before ,I compile the reporter_fh from SDK3.0.6,but does not support SUOTA.
Can you tell me how to create a suota project? If there is need to pay attention to details?
嗨,豆,
You can take as example the proximity or the Smart Tag reference designs they both support SUOTA capabilities. The smart Tag is a little bit more agile. Make sure that the SPOTA profile in the da14580_config is enabled. See also Smart Tag reference application doc for further instructions.
Thanks MT_dialog.
Hi,MT_dialog!
I can do it! It's very excited! Thank you very much!
But I have another question:
According to the Smart Tag reference document UM-B-018, we know that the Image (memory) bank accepts only 3 values: 0, 1 or 2:
1: Use the first bank with start address as indicated in the Product Header.
2: Use the second bank with start address as indicated in the Product Header.
0: Burn the image into the bank that holds the oldest image.
In my practice SUOTA, the values of the Image bank is 0 or 1, the corresponding field is offset #1 0x8000. And the value is 2, the corresponding field is offset #2 0x13000.
I don't know if my SUOTA, right? Or wrong?
Hi,MT_dialog!
Can you help me about the question ?
Looking forward to your reply!
嗨,豆
What do you mean that the values of the image bank from your example is 0 or 1?
The choices from the smartphone app are:
1)Place the new image in memory bank 1 (memory bank 1 has 0x8000 offset).
2)Place the new image in memory bank 2 (memory bank 2 has 0x13000 offset).
3)Place the new image on top of the oldest image (for instance bank number 1 which hold the oldest image).
At the offset 0x00000 is the secondary bootloader located and at the offset 0x1F000 is the product header located.
Within the next week there's going to be a new release application note about SUOTA.
Thanks MT_dialog
Hi,MT_dialog!
The android application that version is v1.1 for SUOTA. When set SUOTA parameters,there is a need parameter that is the Image (memory) bank to set, it has three values: 0 , 1 and 2.
thank you!
嗨,豆
Yes, after you select the file, and you want to download it to your device the android application will let you choose on which memory bank the image will be placed......1. memory_bank_1(0x8000), 2. memory_bank_2 (0x13000) or the default choice 0. where the new image will replace the oldest image in the memory located either in memory bank_1 or memory bank_2.
Thanks MT_dialog
Hi,MT_dialog!
I know what you say.
In my practice, when setting the parameter for the android application:
设置memorybank= 0 or memory bank = 1, the new image will replace the location where is memory bank (0x8000).
设置memorybank= 2,the new image will replace the location where is memory bank (0x13000).
Now I want to know the phenomenon above is correct or not?
嗨,豆,
Yes its normal, when you download two images (the multipart.bin) the device (after the restart)loadsthe first image (bank1), when you update the image with a new one (throught suota) it will use the first bank.Then when you update again(throught suota)a new image the device will know which is the latest downloaded image and will replace the oldest image with the new. In essence it follows the turn each image has been updated.
Thanks MT_dialog
Hi MT_Dialog,
Regarding to the post above, if we have 2 different images like img_1 in memory bank 0 and img_2 in memory bank 1. Is there a way to select the memory bank to select the appropriate img_2 for the type of application.
Thank you!
Hi iqspring,
You can have a look at the secondary_bootloader code and modify it in order to set the appropriate conditions to load the image file you want.
Thanks MT_dialog