Rewrite SWJ config when modifying MAPR (fixes #105) #106
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.
This stack exchange post explains the issue pretty well https://electronics.stackexchange.com/questions/260757/timer1-remap-cause-debug-crash-on-stm32f103
The SWJ_CFG bits are write only, meaning that reads are undefined. On the blue pill, reads seem to work fine anyway, but on the RGT6, they return some other value which messes with the debug port.
My fix for it is to make the
mapr
function private, and only allow modifications via themodify_mapr
function which remembers the state of the debug port and writes the config accordingly.Since
mapr
was public, this is a breaking change. I see no reason to have it public, in fact, users can break the abstractions by modifyingmapr
so this newmodify_mapr
function is markedpub(crate)