pico_multicore

Modules

 fifo
 Functions for the inter-core FIFOs.
 
 lockout
 Functions to enable one core to force the other core to pause execution in a known state.
 

Functions

void multicore_reset_core1 (void)
 Reset core 1This function can be used to reset core 1 into its initial state (ready for launching code against via multicore_launch_core1 and similar methods) More...
 
void multicore_launch_core1 (void(*entry)(void))
 Run code on core 1Wake up (a previously reset) core 1 and enter the given function on core 1 using the default core 1 stack (below core 0 stack). More...
 
void multicore_launch_core1_with_stack (void(*entry)(void), uint32_t *stack_bottom, size_t stack_size_bytes)
 Launch code on core 1 with stackWake up (a previously reset) core 1 and enter the given function on core 1 using the passed stack for core 1. More...
 
void multicore_launch_core1_raw (void(*entry)(void), uint32_t *sp, uint32_t vector_table)
 Launch code on core 1 with no stack protectionWake up (a previously reset) core 1 and start it executing with a specific entry point, stack pointer and vector table. More...
 

Detailed Description

Adds support for running code on the second processor core (core 1)

Function Documentation

◆ multicore_launch_core1()

void multicore_launch_core1 ( void(*)(void)  entry)

Run code on core 1Wake up (a previously reset) core 1 and enter the given function on core 1 using the default core 1 stack (below core 0 stack).

core 1 must previously have been reset either as a result of a system reset or by calling multicore_reset_core1

core 1 will use the same vector table as core 0

Parameters
entryFunction entry point
See also
multicore_reset_core1

◆ multicore_launch_core1_raw()

void multicore_launch_core1_raw ( void(*)(void)  entry,
uint32_t *  sp,
uint32_t  vector_table 
)

Launch code on core 1 with no stack protectionWake up (a previously reset) core 1 and start it executing with a specific entry point, stack pointer and vector table.

This is a low level function that does not provide a stack guard even if USE_STACK_GUARDS is defined

core 1 must previously have been reset either as a result of a system reset or by calling multicore_reset_core1

Parameters
entryFunction entry point
spPointer to the top of the core 1 stack
vector_tableaddress of the vector table to use for core 1
See also
multicore_reset_core1

◆ multicore_launch_core1_with_stack()

void multicore_launch_core1_with_stack ( void(*)(void)  entry,
uint32_t *  stack_bottom,
size_t  stack_size_bytes 
)

Launch code on core 1 with stackWake up (a previously reset) core 1 and enter the given function on core 1 using the passed stack for core 1.

core 1 must previously have been reset either as a result of a system reset or by calling multicore_reset_core1

core 1 will use the same vector table as core 0

Parameters
entryFunction entry point
stack_bottomThe bottom (lowest address) of the stack
stack_size_bytesThe size of the stack in bytes (must be a multiple of 4)
See also
multicore_reset_core1

◆ multicore_reset_core1()

void multicore_reset_core1 ( void  )

Reset core 1This function can be used to reset core 1 into its initial state (ready for launching code against via multicore_launch_core1 and similar methods)

Note
this function should only be called from core 0