Repository navigation
Fix off-by-one errors truncating the last byte of FLASH and DATA - #589
Merged
Merged
Conversation
Collaborator
|
Thanks. Not seen in examples/board_simduino, but that bootloader is very old! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
When simulating the official optiboot_atmega328.hex bootloader using
run_avr -m atmega328 optiboot_atmega328.hex, the following output is produced:The very last byte of FLASH (Optiboot stores its own version there) is never loaded by
simavr. The same is true for DATA.Two of the length calculations in
avr_load_firmware(...)are off by one:avr->flashendis the last valid flash address, not the flash size, andavr->ramendis the last valid RAM address, not the RAM size.This Pull Request fixes the two off-by-one errors. With the change applied, the above command loads the last byte and produces the following output: