Hello BadDad,
Since the flash devices have a maximum page size of 256 bytes, I would assume that you will need to maintain a RAM buffer of this size to accumulate the data received via SCI. This would seem to give maximum efficiency. However, this might be modified by other considerations.
When you refer to a "hex file", do you mean a file that uses "Intel hex" format, or some other ASCII based format? (S19 format would also be a possibility.) If so, the number of formatted data bytes per line may also influence the approach taken, and the RAM buffer size needed. Another approach would be to write each line to flash as it is received and verified, and would use a smaller buffer, sufficient for the amount of data per line. This buffer is probabably in addition to the SCI receive buffer required for the "raw" ASCII data. This approach would also provide the possibility of error detection and resend on a line by line basis.
It is probable that the SCI baud rate will determine the actual throughput, especially if the transmission time for each line is greater than the maximum page program time of 10 milliseconds.
For device to device transfers, the buffer size should preferably be 256 bytes, with a page of data read from one device, and then the data written to the other device. This should be simpler than attempting to simultaneously communicate with multiple SPI devices The worst case throughput would be limited to 256 bytes per 10 milliseconds, the page program time.
This discussion assumes that the flash sector is already erased - this would require an additional period of 4 seconds maximum for a 64kb sector.
Regards,
Mac