I've narrowed this down. In exec.c the address is reduced by section->offset_within_address_space. However, half the time that seems to be wrong. For usart1 at 40011004 it is 40011000, a difference of 4 which signals a usart write. For usart2 at 40004404 it is 40000c00, a difference of 3804 which means nothing. On Wed, Oct 12, 2016 at 6:25 PM, Seth K