mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 11:09:01 +01:00 
			
		
		
		
	Update SMP branch readme for port migration (#999)
This commit is contained in:
		
							parent
							
								
									eb80149cd7
								
							
						
					
					
						commit
						81c623212a
					
				
							
								
								
									
										38
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								README.md
									
									
									
									
									
								
							@ -9,6 +9,44 @@ The contents of this branch will remain available for certain period but we will
 | 
				
			|||||||
Have more questions? Post them in the [FreeRTOS forum](https://forums.freertos.org/).
 | 
					Have more questions? Post them in the [FreeRTOS forum](https://forums.freertos.org/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Migrate port from SMP branch to FreeRTOS v11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following changes should be applied to migrate a port from this branch to FreeRTOS v11:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Call `xTaskIncrementTick` in critical section in port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RP2040 example:
 | 
				
			||||||
 | 
					```c
 | 
				
			||||||
 | 
					void xPortSysTickHandler( void )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    portBASE_TYPE xPreviousMask;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* xTaskIncrementTick now must be called in critical section. */
 | 
				
			||||||
 | 
					    xPreviousMask = taskENTER_CRITICAL_FROM_ISR();
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /* Increment the RTOS tick. */
 | 
				
			||||||
 | 
					        if( xTaskIncrementTick() != pdFALSE )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            /* Pend a context switch. */
 | 
				
			||||||
 | 
					            portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    taskEXIT_CRITICAL_FROM_ISR( xPreviousMask );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Rename `configNUM_CORES` to `configNUMBER_OF_CORES`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Define `portSET/CLEAR_INTERRUPT_MASK` in port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Define `portENTER/EXIT_CRITICAL_FROM_ISR` for SMP in port
 | 
				
			||||||
 | 
					    * These macros should be implemented with `vTaskEnterCriticalFromISR`/`xTaskExitCriticalFromISR`
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					* Update `portSET/CLEAR_INTERRUPT_MASK_FROM_ISR` implementation in port
 | 
				
			||||||
 | 
					    * SMP-dev doesn’t use these macros to enter/exit critical section from ISR. Instead,
 | 
				
			||||||
 | 
					 `portENTER/EXIT_CRITICAL_FROM_ISR` are used. These functions should be implemented as
 | 
				
			||||||
 | 
					 the macro name suggested, set or clear interrupt mask from ISR if nested interrupt are supported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user