MSP430 Code crossing 16-bit boundary
I have a project for the MSP430F6779A . I have been getting resets caused by a peripheral area fetch. If I comment out code that is not executed (yet), I found that I could make the crash go away. Further investigation showed that I could make the issue happen by adding a constant array that was 115 bytes long. Reducing the array to 112 bytes makes the issue go away. I looked a the symbol locations and noticed the folowing functions had crossed fro 16-bit addressable space to 20-bit addressable space:
_ctl_byte_queue_post
_ctl_byte_queue_receive
_ctl_byte_queue_post_nb
_ctl_byte_queue_receive_nb
_ctl_private_get_stack_start
_ctl_private_get_thread_local_storage
_ctl_private_init_registers
_ctl_private_init_thread_local_storage
___RAL_read_tp
_ctl_private_reschedule_from_api_call
_ctl_enter_isr
_ctl_exit_isr
do_switch_if_needed
restore_registers
_ctl_global_interrupts_set
_enable_ints
_UCA1_init_UART
I have suspicions that the issue may be related to the _ctl_enter_isr and/or _ctl_exit_isr functions changing locations. The crash does not happen immediately and seems to be associated with some code that causes UART interrupts or I2C interrupts. I have attached the symbol locations for both the working and non-working array sizes. What can I do to debug/fix this issue. It is very annoying.
working.txt
not-working.txt
Please sign in to leave a comment.
Comments
0 comments