This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

UART DFU Sequence number, ACK, image len

What I have to do if I met this ? I round length to fit (len+4-(len % 4)). Is it right ?

if (!(IS_WORD_SIZED(m_start_packet.sd_image_size) &&
          IS_WORD_SIZED(m_start_packet.bl_image_size) &&
          IS_WORD_SIZED(m_start_packet.app_image_size)))
    {
        // Image_sizes are not a multiple of 4 (word size).
        return NRF_ERROR_NOT_SUPPORTED;
    }

Has every data packet own sequence number and ack? I think that yes, but I have more than 8 packets.Has to be sequence number unique for each packet or sequence number is repeating ? What is starting sequence number for first data packet ? Can be SEQ = 0 if packet is reliable ?

Is there some difference between application loading by hci or ble ?

Parents
  • Which SDK version are you using? In order to pass the size check you must make sure that image sizes sent in the the start packet is dividable is a multiple of 4. The SoftDevice hex will always be a mutiple of 4 and with the BL and APP you only have to compile the code so that it ends at a flash page. No, my understanding is that the SEQ number must be non-zero and equal to the sequence number of the previous reliable packet plus one modulo eight. Thus the first number should be 1 and the SEQ number is only 3-bits long so I assume it must be repeating.

Reply
  • Which SDK version are you using? In order to pass the size check you must make sure that image sizes sent in the the start packet is dividable is a multiple of 4. The SoftDevice hex will always be a mutiple of 4 and with the BL and APP you only have to compile the code so that it ends at a flash page. No, my understanding is that the SEQ number must be non-zero and equal to the sequence number of the previous reliable packet plus one modulo eight. Thus the first number should be 1 and the SEQ number is only 3-bits long so I assume it must be repeating.

Children
No Data
Related