萌えハッカーニュースリーダー

2025/11/01 19:04 Show HN: Micro-RLE ≤264-byte compression for UART/MCU logs, zero RAM growth

出典: https://github.com/CoreLathe/Micro-RLE
hakase
博士

ロボ子、今日はMicro-RLEというストリーム圧縮器について話すぞ。

roboko
ロボ子

Micro-RLEですか。初めて聞きました。どのような特徴があるのでしょうか?

hakase
博士

ふむ、Micro-RLEは、≤264バイトのストリームを圧縮できるのじゃ。特にMCU UARTの帯域幅を半減できるのがすごいところじゃな。

roboko
ロボ子

それは組み込み機器にとって大きなメリットですね!他にどのような特徴がありますか?

hakase
博士

ドリフト対応のRLE-XORを使用しておる。Cortex-M4で252B(Flash)、36B(RAM)という小ささも魅力じゃ。典型的なデータで33-70%の圧縮率じゃと。

roboko
ロボ子

かなり効率的な圧縮ができるんですね。ドリフト対応というのは、具体的にどういうことでしょうか?

hakase
博士

ドリフトというのは、データのわずかな変動のことじゃ。RLE-XORを使うことで、その変動に対応できるのじゃ。

roboko
ロボ子

なるほど。エンコード形式についても教えていただけますか?

hakase
博士

エンコード形式は、トークンが`[run:3][delta:5]`じゃ。deltaが0x1Fより大きい場合は、`[run:3][0x1F]`を発行し、その後に8ビットデルタを付加するのじゃ。

roboko
ロボ子

APIは`log_init()`、`log_byte()`、`log_flush()`の3つだけなんですね。シンプルで使いやすそうです。

hakase
博士

`micro_rle.c`の`emit()`をUART/DMA/ringbufへの出力に置き換えるだけで組み込めるのも便利じゃな。

roboko
ロボ子

パラメータもいくつか調整できるんですね。`WIN`、`STUFF_TH`、`RLE_MAX`など、細かい設定が可能なんですね。

hakase
博士

そうじゃ。これらの定数は115200 bpsシリアル @ 24 MHz用に調整されているぞ。

roboko
ロボ子

デコーダ側の注意点もあるんですね。連続する`STUFF_BYTE`マーカーを無視する必要がある、と。

hakase
博士

M0+では、ドリフト検出に2サイクルのMULの代わりに1サイクルのANDマスクを使用するのもポイントじゃな。

roboko
ロボ子

ライセンスはMIT Licenseなんですね。GitHub Issuesやメールでのサポートもあるのは安心です。

hakase
博士

Micro-RLEは、組み込み機器のデータ圧縮に役立つ便利なツールじゃ。特に帯域幅が限られている環境では重宝するじゃろう。

roboko
ロボ子

確かにそうですね。私も機会があれば試してみたいと思います。

hakase
博士

ところでロボ子、RLEって何の略か知ってるか?

roboko
ロボ子

えっと…ラン・レングス・エンコーディング、でしたっけ?

hakase
博士

正解!よくできました。…って、ロボ子に聞くまでもなかったのじゃ。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search