ODrive ファームウェア UART ストリーム実装の解析

UART 周辺機器の初期化構成 ファームウェアの起動プロセスにおいて、UART 通信機能はボード初期化段階で設定されます。システム設定に基づき、複数の UART ポートの中から必要なものを選択し、ボーレートなどのパラメータを適用します。 // システム設定に基づき UART チャンネル A を有効化 if (sys_config.uart_ch_a_enabled) { uart_handle_ch1->Init.BaudRate ...

8月3日 00:14 投稿

FreeRTOSにおけるタスクハンドルの正体と二重ポインタの重要性

タスクハンドルとは何か? FreeRTOSを扱う際、タスクの作成には「タスクハンドル」が必要です。このハンドルは、タスクの制御情報を保持する「タスク制御ブロック(TCB)」へのポインタです。タスク作成APIの引数として、このハンドルを渡すことで、作成されたタスクの参照を取得できます。 タスクの動的生成例 以下は、FreeRTOSでタスクを動的に生成するコード例で ...

7月29日 02:02 投稿

STM32でのHTTPプロトコルの詳細と実装

STM32でのHTTPプロトコルの詳細と実装 HTTPプロトコルとは何か? HTTP(HyperText Transfer Protocol、ハイパーテキスト転送プロトコル)は、World Wide Web上のサーバーからクライアントブラウザへデータを転送するためのプロトコルです。TCP/IPプロトコルに基づいて動作し、クライアント-サーバーモデルを採用しています。アプリケーション層のプロトコルであり、テキ ...

7月21日 18:18 投稿

FreeRTOSにおけるタスク作成とクリティカルセクションの基礎

タスクとは何か FreeRTOSにおけるタスクは、戻り値を持たず、無限ループで実行されるC言語関数として定義される。この関数は一度開始されると終了せず、システムのシャットダウンまたは明示的な削除まで継続的に動作する。 タスクの構成要素 1. タスクスタック ベアメタル環境では全関数が共通のスタックを使用するが、RTOS環境では各タスクが独自のスタック領域を持つ。 ...

7月12日 18:57 投稿

ESP-IDFにおけるキュー処理の実践的な活用方法

FreeRTOSベースのESP-IDFキュー処理の実装 キューの基本概念 ESP-IDFで提供されるキュー(queue)は、タスク間および割込みコンテキスト間の安全なデータ交換を実現するための仕組みです。FIFO方式に基づき、構造体や基本型データのやり取りが可能です。 タスク間通信のためのデータパイプとして機能 ブロッキング/ノンブロッキングモードをサポート 割込みコンテキスト ...

6月17日 19:19 投稿

FreeRTOS主要API実践解説と最適化技術

タスク管理APIの選択基準 API機能ISRセーフ版適用シナリオ xTaskCreate動的タスク生成不可一般用途タスク作成 xTaskCreateStatic静的メモリ割り当てタスク不可メモリ制約環境 vTaskDeleteタスク削除不可動的ライフサイクル管理 vTaskDelay相対時間遅延不可簡易遅延処理 vTaskDelayUntil絶対時間同期遅延不可周期処理タスク xTaskNotifyGive軽量通知送信xTaskNotifyGive ...

6月14日 18:02 投稿

STM32におけるFreeRTOSタスク生成とスケジューリング動作の検証

FreeRTOSにおけるタスクスケジューリングの基礎 FreeRTOSでは、異なる優先度を持つタスク間では「優先度スケジューリング」が、同じ優先度を持つタスク間では「ラウンドロビン(タイムスライス)スケジューリング」が採用されます。ここでは、CMSIS-RTOS APIを用いたタスクの生成から、スケジューリングの挙動、およびタスクの待機状態への遷移までを実験を通じて確認しま ...

6月1日 21:03 投稿