目次
FreeRTOS 完全ガイド v2.0
マイクロコントローラー向けリアルタイム OS・AWS IoT Core 統合
概要
FreeRTOS は、マイクロコントローラー(MCU)向けのオープンソース・リアルタイム OS(RTOS)と AWS IoT Core 接続ライブラリを提供するプロジェクト です。15年以上の開発期間を経て、現在 170秒ごとにダウンロードされ、数百万のエンベデッドシステムで採用されています。
初心者向けメモ:FreeRTOS は「数百円の小型マイコン(ESP32・STM32)から AWS IoT Core に直接接続するためのリアルタイム OS + ライブラリ」です。Greengrass と異なり、MCU レベルの超低リソース環境対応が特徴。マイコン上でタスクスケジューリング・同期・セキュア通信を実現します。
FreeRTOS が解決する課題
| 課題 | 従来の方法 | FreeRTOS での解決 |
|---|---|---|
| MCU からの AWS 接続困難 | 自前で TCP・TLS・MQTT 実装が必要。複雑・脆弱 | FreeRTOS SDK が証明書認証・MQTT・TLS を提供。安全・簡単 |
| MCU での リアルタイム処理とクラウド通信の両立 | RTOS なし。割り込み処理が複雑・メモリ管理が手作業 | FreeRTOS Kernel でマルチタスキング・セマフォ・キュー管理を効率化 |
| MCU の低リソース環境対応 | Linux・Windows:RAM 数百MB 必要。MCU には不適切 | FreeRTOS:RAM 数KB で動作。Flash 記憶領域も最小化 |
| IoT デバイスの OTA ファームウェア更新が複雑 | 手動再プログラミング・難しい。スケールしない | FreeRTOS OTA ライブラリ + AWS IoT Jobs で安全・自動化 |
| IoT デバイスのセキュリティが弱い | TLS・証明書の実装が不完全・更新困難 | X.509 証明書・TLS 1.2・AWS IoT Core ポリシーで多層セキュリティ |
| 複数 MCU 間の同期・メッセージング が ad hoc | グローバル変数・共有メモリで race condition | FreeRTOS ミューテックス・セマフォ・キューで安全な同期 |
主な特徴
| 特徴 | 説明 |
|---|---|
| MIT オープンソースライセンス | 商用・個人プロジェクト双方で自由に使用可能・改変も許可 |
| マイクロコントローラー向け超軽量 | Kernel:最小 3KB、Device SDK:100KB 前後。MCU でも動作可能 |
| リアルタイムOS機能 | タスク管理・セマフォ・ミューテックス・キュー・タイマー・メモリ管理 |
| 200+ ハードウェアプラットフォーム対応 | ESP32・STM32・Nordic nRF・Texas Instruments・Renesas・NXP など |
| AWS IoT Device SDK for Embedded C | MQTT・HTTPS・Device Shadow・Jobs・OTA・Fleet Provisioning ネイティブサポート |
| OTA(Over-The-Air)ファームウェア更新 | AWS Signer でコード署名・AWS IoT Jobs で配信・失敗時ロールバック機能 |
| TLS 1.2 + X.509 証明書 | mbedTLS・wolfSSL で暗号化通信・相互認証実現 |
| Device Connectivity Kit | 開発ボード(認定品)で即座にテスト開始可能 |
| AWS IoT Greengrass 連携 | ゲートウェイ(Greengrass)経由での通信も可能 |
| 長期サポート(LTS) | LTS バージョン:3年間の維持・セキュリティパッチ提供 |
アーキテクチャ
graph TB
subgraph "MCU Device Layer"
Sensors["センサー読み取り<br/>(温度・湿度・GPS)"]
Motor["モーター制御<br/>(PWM・割り込み)"]
Memory["Flash / RAM<br/>(最小: 256KB / 32KB)"]
end
subgraph "FreeRTOS Kernel"
TaskMgr["Task Manager<br/>(スケジューラ・プリエンプション)"]
Sync["Synchronization<br/>(Semaphore・Mutex)"]
Queue["Queue Management<br/>(タスク間通信)"]
MemMgr["Memory Management<br/>(Heap・Stack)"]
Timer["Timer Services<br/>(割り込みハンドラ)"]
end
subgraph "AWS IoT Device SDK"
MQTT["MQTT Client<br/>(Publish・Subscribe)"]
TLS["TLS 1.2<br/>(mbedTLS / wolfSSL)"]
Shadow["Device Shadow<br/>(状態管理)"]
Jobs["IoT Jobs<br/>(OTA・リモートコマンド)"]
OTA["OTA Agent<br/>(ファームウェア更新)"]
end
subgraph "AWS IoT Core / Cloud"
Broker["MQTT Message Broker"]
JobsService["IoT Jobs Service"]
ShadowService["Device Shadow Service"]
end
subgraph "AWS Services"
S3["S3<br/>(OTA Image)"]
Lambda["Lambda<br/>(ルール処理)"]
DynamoDB["DynamoDB<br/>(デバイス状態)"]
SNS["SNS<br/>(通知)"]
end
Sensors --> TaskMgr
Motor --> TaskMgr
Memory --> MemMgr
TaskMgr --> Queue
TaskMgr --> Sync
TaskMgr --> Timer
MQTT --> TLS
TLS --> Broker
Shadow --> ShadowService
Jobs --> JobsService
OTA --> S3
Broker --> Lambda
ShadowService --> DynamoDB
JobsService --> SNS
style TaskMgr fill:#ff9999
style MQTT fill:#99ccff
style Broker fill:#99ff99
コアコンポーネント
1. FreeRTOS Kernel
タスク管理・割り込み処理・メモリ管理を担当する核。
タスク管理:
// タスク作成
TaskHandle_t xHandle = NULL;
xTaskCreate(
vTaskFunction, // タスク関数
"TaskName", // タスク名(デバッグ用)
configMINIMAL_STACK_SIZE, // スタックサイズ
NULL, // パラメータ
1, // 優先度(0:最低 ~ configMAX_PRIORITIES-1:最高)
&xHandle // タスクハンドル
);
// タスク削除
vTaskDelete(xHandle);
// タスク遅延
vTaskDelay(pdMS_TO_TICKS(1000)); // 1秒待機
セマフォ・ミューテックス(同期・排他制御):
// 二値セマフォ作成
SemaphoreHandle_t xSemaphore = xSemaphoreCreateBinary();
// セマフォ取得(ブロッキング)
xSemaphoreTake(xSemaphore, portMAX_DELAY);
// 処理...
xSemaphoreGive(xSemaphore); // セマフォ解放
// ミューテックス作成
SemaphoreHandle_t xMutex = xSemaphoreCreateMutex();
// 排他制御
xSemaphoreTake(xMutex, portMAX_DELAY);
{
// 共有リソース操作
sharedVariable++;
}
xSemaphoreGive(xMutex);
キュー(タスク間通信):
// キュー作成(最大 10 要素)
QueueHandle_t xQueue = xQueueCreate(10, sizeof(int));
// キューに送信
int value = 42;
xQueueSend(xQueue, &value, portMAX_DELAY);
// キューから受信
int receivedValue;
if (xQueueReceive(xQueue, &receivedValue, pdMS_TO_TICKS(1000))) {
printf("Received: %d\n", receivedValue);
}
2. AWS IoT Device SDK for Embedded C
MCU から AWS IoT Core に接続するライブラリ群。
MQTT パブリッシュ・サブスクライブ:
#include "core_mqtt.h"
// MQTT コンテキスト
MQTTContext_t mqttContext = {0};
MQTTFixedBuffer_t networkBuffer = {0};
// MQTT 接続(TLS)
MQTTStatus_t status = MQTT_Connect(&mqttContext, &connectInfo);
// トピックへの購読
MQTTSubscribeInfo_t subscribeInfo = {
.pTopicFilter = "device/command",
.topicFilterLength = 14,
.qos = MQTTQoS1
};
MQTT_Subscribe(&mqttContext, &subscribeInfo, 1, MQTT_GetPacketId(&mqttContext));
// メッセージ発行
char payload[] = "{\"temperature\": 23.5}";
MQTTPublishInfo_t publishInfo = {
.pTopicName = "device/data",
.topicNameLength = 11,
.pPayload = payload,
.payloadLength = strlen(payload),
.qos = MQTTQoS1
};
MQTT_Publish(&mqttContext, &publishInfo, MQTT_GetPacketId(&mqttContext));
Device Shadow(デバイス状態管理):
#include "shadow.h"
// Shadow 更新(desired 状態設定)
{
"state": {
"desired": {
"brightness": 80,
"mode": "auto"
}
}
}
// Shadow delta を監視(desired と reported の差分)
// delta が存在 → デバイス未同期 → reported を更新してから delta を削除
IoT Jobs(OTA・リモートコマンド):
#include "jobs.h"
// ジョブ取得
char jobId[128] = {0};
char statusDetails[256] = {0};
Jobs_GetPendingJobsResponse_t jobsResponse = {0};
// ジョブ情報解析...
// ジョブの開始
Jobs_UpdateJobStatus(jobId, "IN_PROGRESS", statusDetails);
// ファームウェアダウンロード・検証...
// ジョブ完了
Jobs_UpdateJobStatus(jobId, "SUCCEEDED", statusDetails);
OTA Agent(ファームウェア更新):
#include "ota.h"
// OTA Agent 初期化
OTA_EventProcessingTask_t otaTaskDef = {0};
xTaskCreate(OTA_EventProcessingTask, ...);
// OTA アップデート開始イベント
// 1. IoT Jobs からジョブ取得
// 2. S3 からファームウェアイメージダウンロード
// 3. ハッシュ・署名検証(AWS Signer)
// 4. Flash に書き込み
// 5. 再起動・新ファームウェア起動
// 6. 動作確認後に確定(失敗時ロールバック)
3. サポートプラットフォーム(200+)
主要マイコン・ボード:
Espressif:
- ESP32(デュアルコア・WiFi・BLE)
- ESP32-S2(シングルコア・WiFi)
- ESP32-S3(WiFi・BLE・USB-OTG)
- ESP32-C3(RISC-V・WiFi・BLE)
STMicroelectronics:
- STM32F4 シリーズ
- STM32H7 シリーズ
- STM32U5 シリーズ(超低電力)
Nordic Semiconductor:
- nRF52840(Bluetooth 5.0・NFC)
- nRF5340(マルチコア・最新 Bluetooth)
Texas Instruments:
- CC3220(WiFi + MCU)
- MSP432(超低消費電力)
NXP / Freescale:
- LPC54xxx(USB・Ethernet)
- K6x / KL2x(コスト最適)
その他:
- Renesas RX・RA・RL シリーズ
- Microchip PIC32
- Infineon XMC
- Marvell MW320・MW322
4. LTS(Long-Term Support)と Backports
FreeRTOS バージョン管理:
Mainline(継続開発)
↓ 定期リリース(3-6月ごと)
Stable Release(v10.x・v11.x)
↓ 選定版
LTS Release(v202006・v202012等、3年保証)
↓
Backports(重大バグ・セキュリティパッチのバックポート)
LTS 版の選択(本番環境推奨):
- FreeRTOS 202406.00 LTS(2024年6月、サポート終了2027年6月)
- FreeRTOS 202012.00 LTS(2020年12月、サポート終了2023年12月)
5. Modular Library Architecture
FreeRTOS 202406.0+ より、モジュラー構成に:
FreeRTOS-Kernel
├── Task Management
├── Memory Management
├── Synchronization
└── Timer Management
AWS IoT Device SDK
├── core-mqtt
├── core-http
├── device-shadow
├── jobs
├── ota-for-aws-iot-embedded-sdk
├── device-defender
└── fleet-provisioning
Protocol & Security
├── mbedTLS(TLS・暗号化)
├── tinyCBOR(JSON・Binary)
├── coreJSON(JSON パース)
└── tracingForMqtt(MQTT トレース)
必要なモジュールのみ統合可能 → メモリ削減。
主要ユースケース
1. スマートホーム・IoT デバイス
シナリオ:
スマート照明・温度計・ロック(ESP32 MCU)
↓ WiFi + MQTT
AWS IoT Core
↓ Rules Engine
Lambda(制御ロジック)
↓
Device Shadow(デバイス状態)
↓
モバイルアプリ・Voice Assistant
FreeRTOS の価値:
- WiFi とセンサ読み取りを並行処理(マルチタスク)
- TLS で安全に通信
- OTA Jobs でファームウェア遠隔更新
2. 産業 IoT・工場センサ
システム:
工場機械のセンサ(温度・振動・電流)→ STM32 MCU
↓ LoRaWAN / Ethernet / 4G
AWS IoT Core
↓
CloudWatch(リアルタイム監視)
↓
SageMaker(異常検知・予知保全)
↓
Lambda → Email・SMS アラート
FreeRTOS のメリット:
- リアルタイム割り込み処理で 高精度なセンサデータ採取
- ローカルキューで一時バッファリング
- オフラインモード対応(接続失敗時も動作)
3. スマートメーター・計測器
構成:
電力メーター(NB-IoT/LoRaWAN対応MCU)
↓
AWS IoT Core
↓
DynamoDB(計測履歴)
↓
QuickSight(消費量分析)
↓
請求システム連携
FreeRTOS 特性活用:
- 超低電力:バッテリー 5-10年動作
- リアルタイム タイマで正確な計測
- OTA で検針算出ロジック更新
4. ウェアラブル・健康管理デバイス
例:スマートウォッチ・血糖値計・心拍計
センサ読み取り(BLE・加速度)→ Nordic nRF52840
↓
FreeRTOS(マルチタスク)
↓
スマートフォン(BLE 経由)
↓ WiFi
AWS IoT Core
↓
HealthLake / Personalize(健康データ AI 分析)
5. ロボット・ドローン制御
リアルタイム要件:
IMU センサ(ジャイロ・加速度)
↓ FreeRTOS(< 10ms 制御サイクル)
モーター制御(PWM)
↓
AWS IoT Core(状態通知・遠隔操作指示受信)
↓
クラウド AI(ナビゲーション最適化)
設定・操作の具体例
ESP32 + FreeRTOS + AWS IoT Core
セットアップ(Arduino IDE + ESP32):
# 1. Arduino IDE に ESP32 ボード定義を追加
# File → Preferences → Board Manager URLs に下記を追加
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
# 2. Board Manager で esp32 をインストール
# Tools → Board → Board Manager → "esp32" 検索・インストール
# 3. Amazon IoT Device SDK for Embedded C をクローン
git clone https://github.com/aws/aws-iot-device-sdk-embedded-c.git
# 4. スケッチを作成
Arduino IDE スケッチ(MQTT + AWS IoT Core):
#include <WiFi.h>
#include "core_mqtt.h"
#include "core_mqtt_agent.h"
// WiFi 設定
const char* ssid = "MySSID";
const char* password = "MyPassword";
// AWS IoT 設定
const char* awsEndpoint = "xxxxx.iot.ap-northeast-1.amazonaws.com";
const int awsPort = 8883;
const char* clientId = "esp32-device-001";
// 証明書(Device Certificate・Private Key・CA Certificate)
extern const uint8_t certificate_pem_start[] asm("_binary_certificate_pem_start");
extern const uint8_t certificate_pem_end[] asm("_binary_certificate_pem_end");
extern const uint8_t private_key_pem_start[] asm("_binary_private_key_pem_start");
extern const uint8_t private_key_pem_end[] asm("_binary_private_key_pem_end");
extern const uint8_t ats_root_ca_pem_start[] asm("_binary_ats_root_ca_pem_start");
extern const uint8_t ats_root_ca_pem_end[] asm("_binary_ats_root_ca_pem_end");
// MQTT コンテキスト
MQTTContext_t mqttContext;
NetworkContext_t networkContext;
void setup() {
Serial.begin(115200);
delay(1000);
// WiFi 接続
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected!");
// AWS IoT Core に接続
connectToAWS();
// FreeRTOS タスク作成
xTaskCreate(vSensorTask, "SensorTask", 4096, NULL, 5, NULL);
xTaskCreate(vMqttTask, "MqttTask", 8192, NULL, 4, NULL);
}
void loop() {
// loop() は使わず、FreeRTOS タスクで処理
vTaskDelete(NULL);
}
// センサータスク
void vSensorTask(void *pvParameters) {
while (1) {
// センサー読み取り
float temperature = readTemperatureSensor();
float humidity = readHumiditySensor();
// JSON ペイロード作成
char payload[256];
snprintf(payload, sizeof(payload),
"{\"temperature\": %.1f, \"humidity\": %.1f, \"timestamp\": %ld}",
temperature, humidity, millis());
// IoT Core に発行(キューで安全に)
publishToIoTCore("device/data", payload);
vTaskDelay(pdMS_TO_TICKS(10000)); // 10秒ごと
}
}
// MQTT タスク
void vMqttTask(void *pvParameters) {
while (1) {
// MQTT Keep Alive / Message 受信処理
mqtt_process();
vTaskDelay(pdMS_TO_TICKS(100));
}
}
void connectToAWS() {
// TLS セットアップ
// MQTT コネクト
// サブスクライブ設定
// ...(詳細は AWS IoT Device SDK for Embedded C 実装例参照)
}
void publishToIoTCore(const char* topic, const char* payload) {
MQTTPublishInfo_t publishInfo = {
.pTopicName = topic,
.topicNameLength = strlen(topic),
.pPayload = payload,
.payloadLength = strlen(payload),
.qos = MQTTQoS1
};
MQTT_Publish(&mqttContext, &publishInfo, MQTT_GetPacketId(&mqttContext));
}
float readTemperatureSensor() {
// DHT11・BME680 等で読み取り
return 23.5;
}
float readHumiditySensor() {
return 65.0;
}
FreeRTOS Kernel Simulator(PC で開発・テスト)
# Windows 版 FreeRTOS Simulator
# Visual Studio でコンパイル・デバッグ可能
# 実デバイスなしでマルチタスク・同期処理をテスト
git clone https://github.com/FreeRTOS/FreeRTOS.git
cd FreeRTOS/FreeRTOS/Demo/WIN32-MSVC
# Visual Studio で open
# Linux 版 Simulator
cd FreeRTOS/FreeRTOS/Demo/Posix_GCC
make
./build/RTOSDemo # 実行
AWS IoT Jobs(OTA Update)
# 1. 新ファームウェアビルド
./build-firmware.sh
# 2. AWS Signer でコード署名
aws signer start-signing-job \
--source 's3://my-bucket/firmware-v2.0.bin' \
--signing-profile-name default-signing-profile
# 3. AWS IoT Jobs でデバイスに配信
aws iot create-job \
--job-id "ota-firmware-v2" \
--targets "[\"arn:aws:iot:ap-northeast-1:123456789012:thing/esp32-device-001\"]" \
--document '{
"operation": "ota",
"s3_url": "https://s3.amazonaws.com/my-bucket/firmware-v2.0.bin",
"checksum": "abc123def456"
}'
# 4. デバイスが自動ダウンロード・更新・確認・ロールバック可能
CloudWatch・Logs 統合
import boto3
import json
from datetime import datetime
logs_client = boto3.client('logs')
cloudwatch = boto3.client('cloudwatch')
def log_device_status(device_id, temperature, humidity, error=None):
"""デバイスステータスを CloudWatch Logs に送信"""
log_group = f"/aws/iot/devices/{device_id}"
log_stream = f"{device_id}-status"
# CloudWatch Log Group・Stream 作成
try:
logs_client.create_log_group(logGroupName=log_group)
except logs_client.exceptions.ResourceAlreadyExistsException:
pass
try:
logs_client.create_log_stream(logGroupName=log_group, logStreamName=log_stream)
except logs_client.exceptions.ResourceAlreadyExistsException:
pass
# ログ送信
log_message = {
"timestamp": datetime.utcnow().isoformat(),
"device_id": device_id,
"temperature": temperature,
"humidity": humidity,
"error": error
}
logs_client.put_log_events(
logGroupName=log_group,
logStreamName=log_stream,
logEvents=[{
"timestamp": int(datetime.utcnow().timestamp() * 1000),
"message": json.dumps(log_message)
}]
)
def publish_device_metric(device_id, temperature, humidity):
"""CloudWatch メトリクスに送信"""
cloudwatch.put_metric_data(
Namespace='FreeRTOS/IoT',
MetricData=[
{
'MetricName': 'Temperature',
'Value': temperature,
'Unit': 'Celsius',
'Dimensions': [{'Name': 'DeviceId', 'Value': device_id}]
},
{
'MetricName': 'Humidity',
'Value': humidity,
'Unit': 'Percent',
'Dimensions': [{'Name': 'DeviceId', 'Value': device_id}]
}
]
)
類似 RTOS 比較表
| 特徴 | FreeRTOS | Zephyr | Mbed OS | ThreadX | VxWorks | Embedded Linux(Yocto) |
|---|---|---|---|---|---|---|
| ライセンス | MIT(自由) | Apache 2.0 | Apache 2.0 | Microsoft(自由) | 商用 | GPL・各種 |
| メモリ要件 | 最小 3KB | 10-50KB | 20-50KB | 10-50KB | 100KB+ | 数MB〜 |
| マイコン対応数 | 200+ | 500+ | 100+ | 50+ | 50+ | 特定プロセッサ |
| AWS IoT SDK | ✅ ネイティブ | △ 別途統合 | △ | ✗ | ✗ | ✅(Linux SDK) |
| OTA 更新 | ✅ IoT Jobs | △ | △ | ✗ | ✅ | ✅ |
| リアルタイム度 | ✅ 高(予測可能) | ✅ 高 | ✅ 高 | ✅ 非常に高 | ✅ 非常に高 | △ 制限あり |
| 学習曲線 | 低 | 中 | 中 | 高 | 高 | 高 |
| デバイス管理 | IoT Core | 別途必要 | ARM Cortex M | 別途必要 | Wind River 製品 | 別途必要 |
| コミュニティ | ✅ 大規模 | ✅ 大規模 | ✅ 中 | △ | △ | ✅ |
ベストプラクティス
✅ 推奨
-
LTS バージョンを使用
- Mainline ではなく LTS(202406.00 等)
- 3年間のセキュリティパッチ・バグ修正保証
- 本番環境必須
-
Device Shadow + IoT Jobs で安全な OTA
- AWS Signer でコード署名
- Rollback 機能で失敗時復旧
- ステージドロールアウトで段階的更新
-
マルチタスク設計で応答性確保
- センサー読み取り・通信・制御を分離タスク
- 優先度適切に設定(リアルタイム要件に応じて)
- デッドロック回避
-
TLS 証明書の安全管理
- Device Certificate を Device Provisioning で自動発行
- Private Key を Flash に暗号化保存
- Credential rotation を定期実施
-
CloudWatch Logs・Metrics で監視
- エラーログを CloudWatch Logs に送信
- Temperature・Humidity 等メトリクスを定期送信
- CloudWatch Alarms でアラート設定
❌ アンチパターン
-
コード署名なしの OTA 更新
- 改ざんリスク高い
- 必ず AWS Signer 使用
-
Device Private Key をコード埋め込み
- リバースエンジニアリング・盗難リスク
- JTAG・Flash Dump で抽出可能
- Device Provisioning で自動生成・安全保存
-
シングルタスクでの無理な処理
- 割り込み処理が複雑化
- 応答遅延・デッドロック
-
Mainline バージョンを本番使用
- 定期的な API 変更
- LTS を選択
-
CloudWatch 統合なし
- デバイス状態が見えない
- 故障検知困難
2025-2026 最新動向
2025年
- Modular Architecture 完全定着: コンポーネント統合の簡素化・メモリ削減
- Matter・Thread サポート拡大: 低電力ネットワーク標準への対応
- AI/ML エッジ推論: TinyML ライブラリ統合(オンデバイス推論)
- セキュリティ強化: Trusted Execution Environment(TEE)対応拡大
2026年
- IPv6 ネイティブ対応: IoT Core IPv6 通信の完全サポート
- Energy Efficient Communications: 5G NR-Light 等次世代通信対応
- 分散 AI: エッジデバイス間の ML 協調学習
- Quantum-Ready Security: 量子耐性暗号への段階的移行
学習リソース
AWS 公式
- AWS IoT Device SDK for Embedded C
- FreeRTOS Kernel
- FreeRTOS Documentation
- AWS IoT Core Device Provisioning
オープンソース・コミュニティ
- FreeRTOS GitHub
- FreeRTOS Community Forums
- Zephyr Project - 代替 RTOS 参考
- Mbed OS - ARM MCU 向け
ハードウェア開発キット
- AWS Device Qualification Program
- ESP32 Development Boards
- STM32 Discovery Kits
- Nordic nRF Development Kits
実装チェックリスト
- [ ] FreeRTOS LTS バージョン選定(202406.00 推奨)
- [ ] MCU・開発ボード選定(ESP32・STM32 等)
- [ ] AWS IoT Device SDK for Embedded C ダウンロード
- [ ] AWS IoT Thing・Certificate・Policy 作成
- [ ] サンプルスケッチで基本的な MQTT 接続テスト
- [ ] Device Shadow でデバイス状態管理テスト
- [ ] IoT Jobs で OTA ファームウェア更新テスト
- [ ] CloudWatch Logs・Metrics 統合テスト
- [ ] セキュリティ監査(TLS・証明書・ポリシー)
- [ ] 本番環境への段階的デプロイ計画
まとめ
FreeRTOS は、マイコンレベルの低リソース環境から AWS IoT Core への安全・確実な接続を実現するリアルタイム OS + ライブラリ です。
MIT ライセンスの自由度・15 年以上の開発実績・200+ のハードウェア対応により、IoT デバイス開発の基盤として採用されています。
AWS IoT Core との深い統合により、Device Shadow・IoT Jobs・Fleet Provisioning・OTA 更新を MCU レベルで実装可能。セキュアで スケーラブルな IoT システム構築に不可欠なテクノロジーです。
最終更新:2026-04-27
バージョン:v2.0