FreeRTOS

FreeRTOS V9.0.0 のAPI一覧

More than 1 year has passed since last update.

FreeRTOS V9.0.0 の各APIについて一言で説明してみました。

命名規則

先頭文字 コメント
pc 戻り値が char *
pv 戻り値が void *
v 戻り値が void
ux 戻り値がUBaseType_t
x 戻り値がBaseType_t

タスクとスケジューラ

API Comment
portSWITCH_TO_USER_MODE() Supervisor モードから User モードへ切り替える
vTaskAllocateMPURegions() タスクにMemory Protection Unit (MPU) regionsを割り当てる
xTaskAbortDelay() タスクを Blocked state に遷移させる
xTaskCallApplicationTaskHook() タスクにtaskhookを関連付ける。
xTaskCheckForTimeOut() タスクにタイムアウトを設定、expireしたら Blocked state に遷移させる
xTaskCreate() タスクを生成する
xTaskCreateStatic() 静的なメモリを使ってタスクを生成する
xTaskCreateRestricted() Memory Protection Unit (MPU) restricted task を生成する
vTaskDelay() タスクを指定tickだけ Blocked statee に入れる
vTaskDelayUntil() タスクをある絶対時刻まで Blocked statee に入れる
vTaskDelete() タスクを削除する
taskDISABLE_INTERRUPTS() 割り込むを無効にする
taskENABLE_INTERRUPTS() 割り込みを有効にする
taskENTER_CRITICAL() クリティカルセクションに入る
taskENTER_CRITICAL_FROM_ISR() クリティカルセクションに入る
taskEXIT_CRITICAL() クリティカルセクションから出る
taskEXIT_CRITICAL_FROM_ISR() クリティカルセクションから出る
xTaskGetApplicationTaskTag() タスクのタグを取得する
xTaskGetCurrentTaskHandle() Running Stateにいるタスクのハンドルを取得する
xTaskGetIdleTaskHandle() Idle Stateにいるタスクのハンドルを取得する
xTaskGetHandle() 名前を指定して るタスクのハンドルを取得する
uxTaskGetNumberOfTasks() タスク数を取得する
vTaskGetRunTimeStats() タスクの統計情報を取得する (タスク名、CPU時間、CPU時間の割合)
xTaskGetSchedulerState() スケジューラの状態を取得する (開始していない、実行中、サスペンド中)
uxTaskGetStackHighWaterMark() タスクの残りスタック量を取得する
eTaskGetState() タスクの enumerated type な状態を取得する
uxTaskGetSystemState() 複数タスクの詳細な状態を取得する。
vTaskGetTaskInfo() ある一つのタスクの詳細な状態を取得する。
pvTaskGetThreadLocalStoragePointer() タスクの Thread local storage のポインタを取得する
pcTaskGetName() タスクの名前を取得する
xTaskGetTickCount() タスクが消費したtickcountを取得する
xTaskGetTickCountFromISR() タスクが消費したtickcountを取得する
vTaskList() タスクの状態を読みやすい形式で表示する
xTaskNotify() タスクにNotify (32bitの値)を送る
xTaskNotifyAndQuery() タスクにNotify (32bitの値)を送る 以前の値を使う
xTaskNotifyAndQueryFromISR() タスクにNotify (32bitの値)を送る 以前の値を使う
xTaskNotifyFromISR() タスクにNotify (32bitの値)を送る
xTaskNotifyGive() タスクにNotifyを送る 値はインクリメントする
vTaskNotifyGiveFromISR() タスクにNotifyを送る 値はインクリメントする
xTaskNotifyStateClear() タスクのpending notificationをクリアする。 notification valueはクリアしない
ulTaskNotifyTake() タスクにNotifyを送る 値はデクリメントする
xTaskNotifyWait() タスクに指定tickcout後にNotifyを送る
uxTaskPriorityGet() タスクのプライオリティを取得する
vTaskPrioritySet() タスクのプライオリティを設定する
vTaskResume() タスクの状態をSuspendからReadyに復帰する
xTaskResumeAll() すべてのSuspendのタスクを Activeに復帰する
xTaskResumeFromISR() タスクの状態をSuspendからReadyに復帰する
vTaskSetApplicationTaskTag() タスクにタグを割り当てる
vTaskSetThreadLocalStoragePointer() タスクの Thread local storage のポインタを設定する
vTaskSetTimeOutState() タイムアウトの構造体を設定する
vTaskStartScheduler() スケジューラを開始する
vTaskStepTick() tiklessの場合にtickを進ませる。
vTaskSuspend() タスクをsuspendする
vTaskSuspendAll() すべてのタスクをsuspendする
taskYIELD() タスクのコンテキストスイッチを強制する

キュー

API Comment
vQueueAddToRegistry() キューに読みやすい名前を割り当てる
xQueueAddToSet() キューセットにキューまたはセマフォを追加する
xQueueCreate() キューを生成する
xQueueCreateSet() キューセットを生成する
xQueueCreateStatic() 静的なメモリを使ってキューを生成する
vQueueDelete() キューを削除する
pcQueueGetName() キューの名前を取得する
xQueueIsQueueEmptyFromISR() キューが空かどうか確認する
xQueueIsQueueFullFromISR() キューが満杯かどうか確認する
uxQueueMessagesWaiting() キューが保持しているアイテム数を取得する
uxQueueMessagesWaitingFromISR() キューが保持しているアイテム数を取得する
xQueueOverwrite() キューが満杯でも、値を詰め込み上書きする。
xQueueOverwriteFromISR() キューが満杯でも、アイテムを詰め込み上書きする
xQueuePeek() キューからアイテムを取り出す、取り出したアイテムはキューにそのまま残す
xQueuePeekFromISR() キューからアイテムを取り出す、取り出したアイテムはキューにそのまま残す
xQueueReceive() キューからアイテムを取り出す、取り出したアイテムはキューから削除する
xQueueReceiveFromISR() キューからアイテムを取り出す、取り出したアイテムはキューから削除する
xQueueRemoveFromSet() キューセットからキューまたはセマフォを削除する
xQueueReset() キューを空の状態にリセットする
xQueueSelectFromSet() キューセットから利用可能なキューまたはセマフォをselectする
xQueueSelectFromSetFromISR() キューセットから利用可能なキューまたはセマフォをselectする
xQueueSend() キューの最後にアイテムを追加する。
xQueueSendToFront() キューの先頭にアイテムを追加する。
xQueueSendToBack() キューの最後にアイテムを追加する。
xQueueSendFromISR() キューの最後にアイテムを追加する。
xQueueSendToFrontFromISR() キューの先頭にアイテムを追加する。
xQueueSendToBackFromISR() キューの最後にアイテムを追加する。
uxQueueSpacesAvailable() キューの空きサイズを取得する

セマフォ

API Comment
vSemaphoreCreateBinary() バイナリセマフォを生成する [非推奨]
xSemaphoreCreateBinary() バイナリセマフォを生成する
xSemaphoreCreateBinaryStatic() 静的なメモリを使ってバイナリセマフォを生成する
xSemaphoreCreateCounting() カウンティングセマフォを生成する
xSemaphoreCreateCountingStatic() 静的なメモリを使ってカウンティングセマフォを生成する
xSemaphoreCreateMutex() ミューテックスを生成する
xSemaphoreCreateMutexStatic() 静的なメモリを使ってミューテックスを生成する
xSemaphoreCreateRecursiveMutex() 再帰ミューテックスを生成する
xSemaphoreCreateRecursiveMutexStatic() 静的なメモリを使って再帰ミューテックスを生成する
vSemaphoreDelete() セマフォ、ミューテックスを削除する
uxSemaphoreGetCount() セマフォのカウント値を取得する
xSemaphoreGetMutexHolder() ミューテックスを保持するタスクのハンドルを取得する
xSemaphoreGive() セマフォを解放する
xSemaphoreGiveFromISR() セマフォを解放する
xSemaphoreGiveRecursive() 再帰ミューテックスを解放する
xSemaphoreTake() セマフォを獲得する
xSemaphoreTakeFromISR() セマフォを獲得する
xSemaphoreTakeRecursive() ミューテックスを獲得する

ソフトウェアタイマ

API Comment
xTimerChangePeriod() タイマの周期を設定する
xTimerChangePeriodFromISR() タイマの周期を設定する
xTimerCreate() タイマを生成する
xTimerCreateStatic() 静的なメモリを使ってタイマを生成する
xTimerDelete() タイマを削除する
xTimerGetExpiryTime() タイマがexpireする時刻 を取得する
pcTimerGetName() タイマの名前を取得する
xTimerGetPeriod() タイマの周期を取得する
xTimerGetTimerDaemonTaskHandle() タイマデーモンタスクのハンドルを取得する
pvTimerGetTimerID() タイマのIDを取得する
xTimerIsTimerActive() タイマを有効にする
xTimerPendFunctionCall() タイマのファンクションコールを設定
xTimerPendFunctionCallFromISR() タイマのファンクションコールを設定
xTimerReset() タイマをリスタートする
xTimerResetFromISR() タイマをリスタートする
vTimerSetTimerID() タイマのIDを設定する 複数のタイマで同じコールバック関数を呼ぶ場合に使う
xTimerStart() タイマをスタートする
xTimerStartFromISR() タイマをスタートする
xTimerStop() タイマをストップする
xTimerStopFromISR() タイマをストップする

イベント

API Comment
xEventGroupClearBits() イベントグループのbitsをクリアする
xEventGroupClearBitsFromISR() イベントグループのbitsをクリアする
xEventGroupCreate() イベントグループを生成する
xEventGroupCreateStatic() 静的なメモリを使ってイベントグループを生成する
vEventGroupDelete() イベントグループを削除する
xEventGroupGetBits() イベントグループの値を取得する
xEventGroupGetBitsFromISR() イベントグループの値を取得する
xEventGroupSetBits() イベントグループの値を設定する
xEventGroupSetBitsFromISR() イベントグループの値を設定する
xEventGroupSync() ある値になるまでかタイムアウトを待って、イベントグループに値を設定する。
xEventGroupWaitBits() イベントグループがある値になるかタイムアウトまで待つ

参照元
* https://www.freertos.org/Documentation/FreeRTOS_Reference_Manual_V9.0.0.pdf
* https://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html