esp-idf/components/freertos/linker_smp.lf
Darian Leung 09690906e7 freertos: Refactor OS startup functions
This commit refactors the OS startup functions as follows:

- Moved the OS/app startup functions listed below to "app_startup.c". Their
    implementations are now common to all ports (RISC-V and Xtensa) of all
    FreeRTOS implementations (IDF and Amazon SMP).
    - esp_startup_start_app()
    - esp_startup_start_app_other_cores()
- Removed esp_startup_start_app_common() as app startup functions are now
    already common to all ports.
- Added extra logs to "main_task" to help with user debugging

Note: Increased startup delay on "unity_task". The "unity_run_menu()" is non
blocking, thus if the main task or other startup tasks have not been freed
by the time "unity_run_menu()" is run, those tasks will be freed the next time
"unity_task" blocks. This could cause some tests to have a memory leak, thus
the "unity_task" startup delay has increased.
2022-12-08 01:57:30 +08:00

181 lines
8.2 KiB
Plaintext

# Linker fragment file for SMP FreeRTOS (i.e., CONFIG_FREERTOS_SMP=y)
[mapping:freertos]
archive: libfreertos.a
entries:
# Default all FreeRTOS functions to IRAM
* (noflash_text)
# Todo: Check if flash placements are missing or can be further optimized IDF-5259
if FREERTOS_PLACE_FUNCTIONS_INTO_FLASH = y:
# event_groups.c
event_groups: xEventGroupCreateStatic (default)
event_groups: xEventGroupCreate (default)
event_groups: xEventGroupSync (default)
event_groups: xEventGroupWaitBits (default)
event_groups: xEventGroupClearBits (default)
event_groups: xEventGroupSetBits (default)
event_groups: vEventGroupDelete (default)
event_groups: vEventGroupSetBitsCallback (default)
event_groups: vEventGroupClearBitsCallback (default)
event_groups: prvTestWaitCondition (default)
if FREERTOS_USE_TRACE_FACILITY = y:
event_groups: uxEventGroupGetNumber (default)
event_groups: vEventGroupSetNumber (default)
# list.c
# queue.c
queue: xQueueGenericReset (default)
queue: xQueueGenericCreateStatic (default)
queue: xQueueGenericCreate (default)
queue: prvInitialiseNewQueue (default)
queue: prvInitialiseMutex (default)
queue: xQueueCreateMutex (default)
queue: xQueueCreateMutexStatic (default)
queue: xQueueGetMutexHolder (default)
queue: xQueueGiveMutexRecursive (default)
queue: xQueueTakeMutexRecursive (default)
queue: xQueueCreateCountingSemaphoreStatic (default)
queue: xQueueCreateCountingSemaphore (default)
queue: xQueueGenericSend (default)
queue: xQueueReceive (default)
queue: xQueueSemaphoreTake (default)
queue: xQueuePeek (default)
queue: uxQueueMessagesWaiting (default)
queue: uxQueueSpacesAvailable (default)
queue: vQueueDelete (default)
if FREERTOS_USE_TRACE_FACILITY = y:
queue: uxQueueGetQueueNumber (default)
queue: vQueueSetQueueNumber (default)
queue: ucQueueGetQueueType (default)
queue: prvGetDisinheritPriorityAfterTimeout (default)
queue: prvUnlockQueue (default)
queue: prvIsQueueEmpty (default)
queue: prvIsQueueFull (default)
if FREERTOS_QUEUE_REGISTRY_SIZE > 0:
queue: vQueueAddToRegistry (default)
queue: pcQueueGetName (default)
queue: vQueueUnregisterQueue (default)
queue: vQueueWaitForMessageRestricted (default)
queue: xQueueCreateSet (default)
queue: xQueueAddToSet (default)
queue: xQueueRemoveFromSet (default)
queue: xQueueSelectFromSet (default)
# stream_buffer.c
# tasks.c: Vanilla
tasks: xTaskCreateStatic (default)
tasks: xTaskCreate (default)
if FREERTOS_UNICORE = n:
tasks: xTaskCreateStaticAffinitySet (default)
tasks: xTaskCreateAffinitySet (default)
tasks: vTaskCoreAffinitySet (default)
tasks: vTaskCoreAffinityGet (default)
tasks: prvMinimalIdleTask (default)
tasks: prvInitialiseNewTask (default)
tasks: prvAddNewTaskToReadyList (default)
tasks: vTaskDelete (default)
tasks: xTaskDelayUntil (default)
tasks: vTaskDelay (default)
tasks: eTaskGetState (default)
tasks: uxTaskPriorityGet (default)
tasks: vTaskPrioritySet (default)
tasks: prvTaskPriorityRaise (default)
tasks: prvTaskPriorityRestore (default)
tasks: vTaskSuspend (default)
tasks: vTaskResume (default)
tasks: prvCreateIdleTasks (default)
tasks: vTaskStartScheduler (default)
tasks: vTaskEndScheduler (default)
tasks: vTaskSuspendAll (default)
#Todo: prvGetExpectedIdleTime
tasks: xTaskResumeAll (default)
tasks: uxTaskGetNumberOfTasks (default)
tasks: pcTaskGetName (default)
tasks: prvSearchForNameWithinSingleList (default)
tasks: xTaskGetHandle (default)
if FREERTOS_USE_TRACE_FACILITY = y:
tasks: uxTaskGetSystemState (default)
tasks: uxTaskGetTaskNumber (default)
tasks: vTaskSetTaskNumber (default)
tasks: vTaskGetInfo (default)
tasks: prvListTasksWithinSingleList (default)
tasks: prvTaskCheckFreeStackSpace (default)
tasks: xTaskGetIdleTaskHandle (default)
tasks: xTaskAbortDelay (default)
tasks: vTaskPlaceOnEventList (default)
tasks: vTaskRemoveFromUnorderedEventList (default)
tasks: vTaskPlaceOnEventListRestricted (default)
tasks: vTaskSetTimeOutState (default)
tasks: vTaskInternalSetTimeOutState (default)
tasks: xTaskCheckForTimeOut (default)
tasks: vTaskMissedYield (default)
tasks: prvIdleTask (default)
if FREERTOS_THREAD_LOCAL_STORAGE_POINTERS > 0:
tasks: vTaskSetThreadLocalStoragePointer (default)
tasks: pvTaskGetThreadLocalStoragePointer (default)
tasks: prvInitialiseTaskLists (default)
tasks: prvCheckTasksWaitingTermination (default)
tasks: uxTaskGetStackHighWaterMark (default)
tasks: prvDeleteTCB (default)
if FREERTOS_USE_STATS_FORMATTING_FUNCTIONS = y:
tasks: prvWriteNameToBuffer (default)
tasks: vTaskList (default)
if FREERTOS_GENERATE_RUN_TIME_STATS = y:
tasks: vTaskGetRunTimeStats (default)
tasks: ulTaskGetIdleRunTimeCounter (default)
tasks: uxTaskResetEventItemValue (default)
tasks: pvTaskIncrementMutexHeldCount (default)
tasks: ulTaskGenericNotifyTake (default)
tasks: xTaskGenericNotifyWait (default)
tasks: xTaskGenericNotify (default)
tasks: xTaskGenericNotifyStateClear (default)
tasks: ulTaskGenericNotifyValueClear (default)
# tasks.c: Additions
if FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH = y:
tasks: non_ready_task_lists (default)
tasks: pxGetNextTaskList (default)
tasks: pxTaskGetNext (default)
tasks: vTaskGetSnapshot (default)
tasks: uxTaskGetSnapshotAll (default)
tasks: xTaskCreatePinnedToCore (default)
tasks: xTaskCreateStaticPinnedToCore (default)
tasks: xTaskGetCurrentTaskHandleForCPU (default)
tasks: xTaskGetIdleTaskHandleForCPU (default)
tasks: xTaskGetAffinity (default)
if FREERTOS_TLSP_DELETION_CALLBACKS = y:
tasks: vTaskSetThreadLocalStoragePointerAndDelCallback (default)
# port
port: pxPortInitialiseStack (default)
port: xPortStartScheduler (default)
# app_startup.c
app_startup: esp_startup_start_app (default)
if CONFIG_FREERTOS_UNICORE = n:
app_startup: esp_startup_start_app_other_cores (default)
app_startup: other_cpu_startup_idle_hook_cb (default)
app_startup: main_task (default)
# timers.c
timers: xTimerCreateTimerTask (default)
timers: xTimerCreate (default)
timers: xTimerCreateStatic (default)
timers: prvInitialiseNewTimer (default)
timers: xTimerGenericCommandFromTask (default)
timers: xTimerGetTimerDaemonTaskHandle (default)
timers: xTimerGetPeriod (default)
timers: vTimerSetReloadMode (default)
timers: uxTimerGetReloadMode (default)
timers: xTimerGetExpiryTime (default)
timers: pcTimerGetName (default)
timers: prvProcessExpiredTimer (default)
timers: prvTimerTask (default)
timers: prvProcessTimerOrBlockTask (default)
timers: prvGetNextExpireTime (default)
timers: prvSampleTimeNow (default)
timers: prvInsertTimerInActiveList (default)
timers: prvProcessReceivedCommands (default)
timers: prvSwitchTimerLists (default)
timers: prvCheckForValidListAndQueue (default)
timers: xTimerIsTimerActive (default)
timers: pvTimerGetTimerID (default)
timers: vTimerSetTimerID (default)
timers: xTimerPendFunctionCall (default)
if FREERTOS_USE_TRACE_FACILITY = y:
timers: uxTimerGetTimerNumber (default)
timers: vTimerSetTimerNumber (default)