This is a linear single-buffered method for updating the modem firmware. Some older
versions of the modem firmware require this method.
The modem firmware package has several HEX files. The
firmware is divided into several files named
firmware.update.image.segments.[n].hex that contain separate
segments of the firmware.
To successfully update the modem, you must program the
firmware segments in correct order.
-
Take the lowest numbered
firmware.update.image.segments.[n].hex file.
-
Split the contents of the HEX file into contiguous sections that are page
aligned and 8 KB large.
Note: The block size must be 8 KB so that the address is
always a multiple of 8 KB. Otherwise, the call returns a success message but
does not program anything.
-
Write the following:
-
The starting address of the section to 0x20000010.
-
The length of the section to 0x20000014.
-
The data of the section to 0x20000018.
-
Write 0x3 to 0x2000000C.
-
Write 1 to 0x4002A004 to start the IPC transaction.
-
Poll IPC.MODEM_CTRL_EVENT.
0x2000000C writes (0x3) and reads (0x7)
responses from the modem. If the response is 0xA5xxxxxx, it is an
acknowledgement of the command. If the response is 0x5Axxxxxx, it is an error
where the last six digits is the error code.
-
Write 0 to the event registers (0x4002A100, 0x4002A108, and
0x4002A110) to acknowledge the event.
-
Repeat steps 2 to 6 until all sections have been programmed.
-
Repeat steps 2 to 7 using the next
firmware.update.image.segments.[n].hex file until all
files have been programmed.