multicore-fifo lockup /w example #1534

Open
opened 2023-11-02 02:20:52 -05:00 by ruehlchris · 2 comments
ruehlchris commented 2023-11-02 02:20:52 -05:00 (Migrated from github.com)

Hi,
yet an other dead-lock in the multicore-fifo. I add the example archive to this issue report.

Here is what I'm doing to reproduce the lockup:

Hardware wiring:
Pin 2 (output) to toggle an IRQ on Pin 14 (input)
ADC idx 0, reading vsys value.

Software:
Repeating Timer (1s) push PROBEEVENT to the core1 waiting in multicore_fifo_pop_blocking and
a1) mirror back the event using multicore_fifo_push_blocking()
a2) Read the vsys value and print set Pin2 to low to trigger an interrupt on Pin 14

INTERRUPT Pin14
push TOGGLEIRQEVENT to core1 waiting in multicore_fifo_pop_blocking and
b1) mirror back the event using multicore_fifo_push_blocking()
b2) set Pin 2 back to high.

main()
while(true) waiting with multicore_fifo_pop_blocking() to receive and print
the event processed in core1 to UART.

Watchdog check if system is ok, or restart after 10 seconds when the lock happen.

Note:
Release build:
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -mtune=cortex-m0")
g++/gcc version 12.2.1 20221205 (15:12.2.rel1-1)

I hope the example will be helpful to find the runtime issue.

Good hunting
Chris

multicore-debug.zip

Hi, yet an other dead-lock in the multicore-fifo. I add the example archive to this issue report. Here is what I'm doing to reproduce the lockup: Hardware wiring: Pin 2 (output) to toggle an IRQ on Pin 14 (input) ADC idx 0, reading vsys value. Software: Repeating Timer (1s) push PROBEEVENT to the core1 waiting in multicore_fifo_pop_blocking and a1) mirror back the event using multicore_fifo_push_blocking() a2) Read the vsys value and print set Pin2 to low to trigger an interrupt on Pin 14 INTERRUPT Pin14 push TOGGLEIRQEVENT to core1 waiting in multicore_fifo_pop_blocking and b1) mirror back the event using multicore_fifo_push_blocking() b2) set Pin 2 back to high. main() while(true) waiting with multicore_fifo_pop_blocking() to receive and print the event processed in core1 to UART. Watchdog check if system is ok, or restart after 10 seconds when the lock happen. Note: Release build: set(CMAKE_CXX_FLAGS_RELEASE "-O3 -mtune=cortex-m0") g++/gcc version 12.2.1 20221205 (15:12.2.rel1-1) I hope the example will be helpful to find the runtime issue. Good hunting Chris [multicore-debug.zip](https://github.com/raspberrypi/pico-sdk/files/13235517/multicore-debug.zip)
peterharperuk commented 2023-11-02 13:57:17 -05:00 (Migrated from github.com)

Thanks

Thanks
peterharperuk commented 2024-07-24 06:54:33 -05:00 (Migrated from github.com)

Hmm, I got a isr_hardfault

Hmm, I got a isr_hardfault
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gh-raspberrypi/pico-sdk#1534
No description provided.