Support for image files larger than 4GB #98
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changed the file position calculation to 64bit to handle image files larger than 4GB.
I tested this with Sedit. Before this change, sectors are aliasing every 4GB (0x80000 blocks). Reading block 0x800000 is the same as block 0, and writing to block 0x800000 overwrites block 0. After this change, everything works as expected.
In a quick test on an LC III+, I did notice a very small performance regression, maybe 1-2%, which I was not expecting. This calculation is only done once per transfer, and the STM32F103 has hardware support for long multiply (umull), so I wouldn't expect these code changes to have a direct impact on performance. I'm guessing there is some sort of alignment sensitivity in writeDataPhaseSD and readDataPhaseSD. Haven't had a chance to investigate that yet.