• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

ちーぎゅうのブログ一覧

2026年10月03日 イイね!

第3回|ROMって何? ECUの中に入っている「プログラム」と「設定データ」の話

前回は、

**「そもそもECUって何?」**

というところから、

ECUが燃料、点火、スロットル、ブーストなどをどうやって制御しているのかを書きました。

今回は、そのECUの中に入っているデータの話です。

ECUチューンを調べていると、

**ROM**

という言葉がかなり頻繁に出てきます。

「ROMを書き換える」

「純正ROM」

「ROMデータ」

「ROMを吸い出す」

みたいな言い方ですね。

自分も最初は、

「ROMって結局なんなん?」

って感じでした。

今回はそこをできるだけ簡単に書いていきます。

---

## ROMって何?

ものすごく簡単に言うと、

**ECUを動かすためのプログラムや設定データが保存されている場所**

です。

ECUはただの箱ではなく、

中にコンピューターが入っています。

コンピューターなので、

「どういう条件の時に、何をするか」

というプログラムが必要です。

例えば、

エンジン回転数がこのくらいで、

アクセル開度がこのくらいで、

吸い込んでいる空気量がこのくらいなら、

燃料をどのくらい噴射するか。

点火時期をどうするか。

スロットルをどれくらい開くか。

そういう判断をするためのプログラムやデータが、ECUの中に保存されています。

その保存されている内容を、

ECUチューンの世界ではまとめて

**ROM**

と呼ぶことが多いです。

---

## 本当は「ROM」という言葉にも少し注意が必要

ここはちょっとだけ細かい話です。

ROMは本来、

**Read Only Memory**

の略です。

直訳すると、

**読み取り専用メモリ**

です。

つまり本来の意味では、

簡単には書き換えないメモリを指します。

ただし、現在の自動車ECUでは、

実際には書き換え可能なフラッシュメモリが使われていることが多いです。

それでもECUチューンの世界では昔からの呼び方が残っていて、

ECUから読み出したデータ全体を

「ROM」

と呼ぶことがよくあります。

なのでこのブログでも、

分かりやすさを優先して、

**ECU内部に保存されているプログラムや設定データをまとめたもの**

という意味でROMと書いていきます。

---

## ROMの中には何が入ってるの?

ROMの中には、大きく分けると、

**プログラム**

と

**設定データ**

が入っています。

まずプログラム。

これはECUそのものの動き方を決める部分です。

例えば、

「このセンサーを読み取る」

「この条件になったら、この計算をする」

「異常が出たら、この処理をする」

みたいな内容です。

次に設定データ。

こっちは、

燃料や点火時期などを決めるための数値が入っている部分です。

よく聞く、

**燃料マップ**

**点火マップ**

なんかも、この設定データの一部です。

---

## 「マップ」って何?

ECUチューンでよく出てくる、

「マップ」

という言葉。

地図のことではありません。

簡単に言うと、

**条件ごとに使う数値を並べた表**

です。

例えば点火時期なら、

エンジン回転数が何回転で、

エンジン負荷がどのくらいなら、

点火時期を何度にするか。

そういう数値が表のような形で並んでいます。

ECUは走行中、

今のエンジン回転数や負荷を見て、

その表の中から必要な数値を使います。

燃料の量、

点火時期、

ブースト目標、

スロットル制御など、

ECUの中にはいろんな設定データがあります。

---

## ECUチューンは「ROMを書き換える」ことが多い

例えば、

もっとブーストをかけたい。

点火時期を調整したい。

燃料を少し増減したい。

回転数制限を変更したい。

こういう場合、

ECUの中にある設定データを変更します。

変更したデータをECUへ書き戻せば、

ECUの動きも変わります。

これが一般的に、

**ROM書き換え**

と呼ばれているものです。

---

## でも、マップを書き換えるだけではできないこともある

ここがBEASTの話につながってきます。

例えば、

点火時期を変える。

ブースト目標を変える。

燃料補正を変える。

この辺は、もともとECUの中に用意されている設定を変更することで対応できる場合があります。

でも、

フラットフットシフトや、

オートブリッピング、

新しい条件による制御切り替え、

複数機能の優先順位管理、

みたいなものは、

最初からその処理がECUの中に存在していなければ、

数字を書き換えるだけでは実現できません。

例えば、

「クラッチを踏んだ」

「アクセルを一定以上踏んでいる」

「車速が一定以上」

「エンジン回転数が一定以上」

この条件が全部そろった時だけ、

一時的に点火制御を変える。

こんな動きを追加したい場合、

単純なマップ変更ではなく、

**新しい判断処理そのものを追加する**

必要が出てきます。

これが、

一般的なECUセッティングと、

BEASTでやろうとしていることの大きな違いです。

---

## 自分のGRBからも実際にROMを読み出している

自分のGRBでも、

ECU内部のデータを実際に読み出しています。

そこで出てくるのが、

**バイナリファイル**

です。

バイナリという言葉もそのうち詳しく書きますが、

簡単に言えば、

**コンピューターが扱う形のまま保存されたデータ**

です。

人間が普通に開いて、

文章として読めるものではありません。

メモ帳で開いても、

まともな文章には見えません。

じゃあそんなデータをどうやって調べるのか。

そこで、

RomRaiderや、

Ghidra、

バイナリエディター、

といったソフトを使います。

---

## 同じ「ROM」でも中身が違うことがある

ここも重要です。

同じ車種だからといって、

ECUの中身が全部同じとは限りません。

年式、

型式、

仕様、

市場、

ECUのバージョン、

メーカー側の更新、

こういう違いでROMの内容が変わることがあります。

つまり、

「同じGRBだから、このROMで大丈夫」

とは限りません。

自分の車に実際に入っているROMが何なのか。

そのデータが本当に対象車両のものなのか。

そこを確認する必要があります。

この辺は後でかなり重要になってきます。

---

## ROMを読み出しただけでは、まだ何も分からない

ここが一番面白いところです。

ECUからROMを読み出せたとしても、

それだけでは、

「どこに何が入ってるのか」

は全部分かりません。

例えば、

この数字は燃料なのか。

点火なのか。

車速なのか。

エンジン回転数なのか。

プログラムなのか。

ただの空き領域なのか。

それを一つずつ調べないといけません。

つまり、

**ROMを読み出すことはゴールではなく、解析のスタート地点**

です。

---

## NEXUSでは何をしてるの?

NEXUSでは、

このROMの中身を解析しながら、

「この処理は本当にここにあるのか」

「この信号は本当に使えるのか」

「この部分を変更して大丈夫なのか」

「まだ証拠が足りない部分はどこなのか」

を整理しています。

見た目だけで、

「たぶんこれだろう」

では進めません。

特に、実際にECUを書き換える可能性がある以上、

推測と確認済み情報を分けることはかなり重要です。

---

## ここまでのまとめ

今回の話をかなり簡単にまとめると、

**ECU**

エンジンを制御しているコンピューター。

**ROM**

ECUを動かすプログラムや設定データが保存されているもの。

**マップ**

条件ごとに使う数値を並べた設定データ。

**ROM書き換え**

ECU内部のデータを変更して、制御内容を変えること。

という感じです。

そして、

普通のECUチューンでは、

もともと用意されている設定データを変更することが多い。

一方でBEASTでは、

場合によっては、

**プログラムそのものの動きを理解して、新しい処理を追加する必要がある。**

だからNEXUSを使って、

ROMの中身を一つずつ調べています。

次回は、

**「RAMって何? ROMとの違いは?」**

について書こうと思います。

ROMが、

「ECUに保存されているデータ」

だとしたら、

RAMは、

「エンジンが動いている今この瞬間に使っているデータ」

に近い存在です。

ここが分かると、

ECUログを見る意味や、

走行中の信号をどうやって解析するのかも、

だんだん分かってきます。
Posted at 2026/10/03 01:35:24 | コメント(0) | トラックバック(0) | 日記
2026年10月02日 イイね!

第2回|そもそもECUって何? WRX STIのエンジンを動かしている小さなコンピューター

前回は、このブログでやっていくBEASTとNEXUSについてざっくり紹介しました。

今回はもっと基本に戻って、

**「そもそもECUって何?」**

というところから書いていきます。

ECUチューンとかECU書き換えって言葉は聞いたことがあっても、

「実際に何をしてるの?」

ってところまではよく分からない人も多いと思います。

自分も最初はそんな感じでした。

なんとなく、

「パソコンつないで馬力上げるやつ」

くらいのイメージでした。

でも実際は、かなりいろんなことをやってます。

---

## ECUは簡単に言うと「エンジンの司令塔」

ECUは、

**Engine Control Unit**

の略です。

日本語にすると、

**エンジン制御コンピューター**

みたいな意味です。

難しく考えなくても、

**エンジンをどう動かすかを決めてるコンピューター**

と思えば大体合ってます。

車にはいろんなセンサーが付いていて、

今エンジンが何回転してるのか、

アクセルをどれくらい踏んでるのか、

吸い込んでる空気はどれくらいか、

エンジンは冷えてるのか温まってるのか、

ノッキングしてないか、

いろんな情報をずっと見ています。

ECUはその情報を見ながら、

「じゃあ燃料はこれくらい入れよう」

「点火はこのタイミングにしよう」

「スロットルはこれくらい開けよう」

「ブーストはこのくらいにしよう」

みたいな判断をしています。

しかもこれを、走ってる間ずっと繰り返してます。

---

## 例えばアクセルを踏んだ時

アクセルを踏んだ時に、

単純にアクセルの踏み込み量=そのままスロットル開度、

ではない車もあります。

GRBも電子スロットルなので、

アクセルペダルの踏み込み量をセンサーで読み取って、

ECUが、

「今このくらいスロットルを開けよう」

と判断してモーターでスロットルを動かします。

つまり、

アクセルペダルとスロットルがワイヤーで直接つながってるわけではなく、

間にECUが入ってます。

だからECU側で、

・アクセルの反応を穏やかにする
・逆に鋭くする
・条件によってスロットル開度を制限する

みたいなこともできます。

---

## 燃料もECUが決めている

エンジンを動かすには、

空気と燃料が必要です。

でも燃料は、

「いつも同じ量を出せばいい」

わけじゃありません。

アイドリング中と、

全開加速中では、

必要な燃料の量は全然違います。

さらに、

エンジンが冷えてる時、

気温が高い時、

吸ってる空気が多い時、

ブーストがかかってる時、

こういう条件でも必要な燃料は変わります。

なのでECUは、

いろんなセンサーを見ながら、

その瞬間に必要な燃料噴射量を決めています。

---

## 点火時期もかなり重要

ガソリンエンジンは、

混ざった空気と燃料にスパークプラグで火をつけて燃やします。

でも、

「ピストンが一番上に来た瞬間に火をつければいい」

みたいな単純な話ではありません。

燃焼には時間がかかるので、

実際には条件に応じて少し早めに火をつけたり、

逆に遅らせたりします。

これを、

**点火時期**

と呼びます。

この点火時期もECUが決めています。

ここを変えると、

エンジンの出力やレスポンスだけじゃなく、

排気温度やノッキングの出やすさなんかにも影響します。

だから適当に触ると普通に危ない部分です。

---

## ターボ車ではブーストも見ている

GRBはターボ車なので、

過給圧も重要です。

ターボは排気ガスの力で回って、

エンジンにより多くの空気を送り込みます。

その空気の量を増やせば、

より多くの燃料を燃やせるので、

大きな出力を出せます。

ただし、

ブーストを上げれば上げるほどいいわけではありません。

タービン、

エンジン、

燃料系、

点火、

吸気温度、

ノッキング、

いろんな条件とのバランスがあります。

ECUはその過給圧も見ながら、

必要に応じて制御しています。

---

## ECUチューンって何を変えてるの?

ここまで読むと、

ECUがかなりいろんなことを決めてるのが分かると思います。

ということは、

ECUの中にある設定や制御を変えれば、

車の動きも変えられます。

例えば、

・燃料の入れ方
・点火時期
・スロットルの反応
・ブーストのかけ方
・回転数制限
・各種補正

こういうものを変更できます。

これが一般的に言われる、

**ECUチューン**

の一部です。

ただ、

ここで大事なのは、

**全部が同じ種類の変更ではない**

ってことです。

設定値を変えるだけのものもあれば、

プログラムそのものに新しい処理を追加しないとできないものもあります。

この違いが、BEASTとNEXUSの話につながってきます。

---

## BEASTでやりたいのは「設定変更」だけじゃない

例えば、

点火時期を少し変える、

燃料を少し増やす、

ブースト目標を変える。

こういうものは、

もともとECUの中にある設定値を変えることで対応できる場合があります。

でも、

フラットフットシフトや、

オートブリッピング、

複数の制御を条件ごとに切り替える機能なんかは、

単純な数字の変更だけでは済まないことがあります。

その場合、

「この条件になったら、この処理をする」

という新しい判断や動作を追加する必要があります。

つまり、

**設定を書き換えるだけじゃなく、ECUの中で動く処理そのものを理解する必要が出てきます。**

ここから一気に難しくなります。

そして、そのためにNEXUSで中身を調べています。

---

## ECUは「箱」だけ見ても分からない

ECU本体を見ても、

中に何が入ってるかは分かりません。

大事なのは、

その中に保存されているプログラムや設定データです。

次回は、

**「ROMって何?」**

について書こうと思います。

ECUの中のデータをどうやって取り出して、

何を見て、

どこから解析が始まるのか。

その入口の話です。

今回の内容だけでも、

「ECUチューン=ただ馬力を上げる作業」

ではないってことは、少し分かると思います。

実際は、

センサーから情報を受け取って、

その時その時で、

燃料、

点火、

スロットル、

ブースト、

その他いろんな制御を決めてる。

その中身を理解して、

必要なところだけ変える。

自分が今やってるのは、そんな感じです。
Posted at 2026/10/03 00:27:22 | コメント(0) | トラックバック(0) | 日記
2026年10月01日 イイね!

第1回|AIと一緒にWRX STIの純正ECUを解析してみる。BEAST/NEXUS始動

はじめまして。
みんカラでは「ちーぎゅう」でやってます。

このブログでは、自分のGRB型WRX STIを使って、

**純正ECUをどこまで解析できるのか**

**純正ECUのままで、どこまで新しい制御を追加できるのか**

っていうのをやっていこうと思ってます。

ECUチューンって聞くと、

「点火マップ変える」

「燃料マップ変える」

「ブースト上げる」

みたいなイメージが強いと思うんですけど、自分がやりたいのはもう少し先の話です。

純正ECUの中身を実際に解析して、

・フラットフットシフト
・オートブリッピング
・ローンチコントロール
・点火カットを使った回転制御
・バブリングなどの排気音演出
・SI-DRIVEに連動した制御切り替え
・バレットモード
・複数機能が同時に動いた時の競合防止
・異常時に止めるための安全制御

こういうものを、できるだけ純正ECUの中でまとめて動かしたいと思ってます。

もちろん、現時点で全部完成してるわけじゃないです。

今は、

**どういう制御にするか決める**

↓

**純正ECUの中に必要な信号や処理があるか調べる**

↓

**本当に実装できるか確認する**

↓

**問題がないかテストする**

というところを一つずつ進めてます。

---

## そもそも、なんでこんなことを始めたのか

最初はもっと単純でした。

「純正ECUでフラットフットシフトとかできたら面白くない?」

「SI-DRIVEごとに全然違う車みたいな制御にできないかな?」

「オートブリッピングも入れたい」

「バブリングも自分の好きな条件で動かしたい」

みたいな感じです。

でも調べていくと、

当然ですけど、そんな簡単な話じゃなかったです。

例えばフラットフットシフト。

簡単に言うと、

**アクセルを戻さずにシフトアップする時、ECU側で一時的にエンジン出力を落として変速を助ける制御**

です。

最初だけ聞くと、

「シフトする時に点火切ればいいんじゃない?」

って思います。

でも実際は、

・車速は何km/h以上か
・エンジン回転数は何回転か
・アクセルをどれくらい踏んでるか
・クラッチを踏んだか
・今どの走行モードなのか
・他の機能が動いてないか
・異常が出てないか

みたいな条件をかなり見ないといけません。

しかも、別の制御まで同時に動いたらどうするのか。

どっちを優先するのか。

異常が出た時はどう止めるのか。

そういうところまで考え始めると、

「ただ点火を切ればいい」

では全然済まないんですよね。

それで、ちゃんと一つの仕組みとして作ろうという話になりました。

---

## BEASTって何?

この純正ECUで実現したい制御をまとめたプロジェクトを、

**BEAST**

と呼んでます。

名前は大げさですが、やってることは割と真面目です。

BEASTでは、機能を一個ずつ別々に作るんじゃなくて、

**全部同時に存在しても破綻しないこと**

をかなり重視してます。

例えば、

フラットフットシフト中に別の点火制御が割り込んだらどうするのか。

ローンチコントロール中に違うモードへ切り替わったらどうするのか。

何か異常が出た時に、そのまま制御を続けていいのか。

そういうところまで含めて設計してます。

なのでBEASTは、

**「欲しい機能を寄せ集めたもの」**

ではなく、

**「GRBの純正ECUの中で、複数の追加制御を一つのシステムとして成立させるためのプロジェクト」**

という感じです。

---

## NEXUSって何?

BEASTを作るためには、

「じゃあ純正ECUの中に必要なものが本当にあるの?」

っていうのを調べないといけません。

そのために作ってるのが、

**NEXUS**

です。

NEXUSは簡単に言うと、

**純正ECUを解析して、どこまで分かっていて、どこから先がまだ分からないのかを管理するための環境**

です。

ECUの中には、エンジンを動かすためのプログラムや設定データが入ってます。

その保存データを一般にROMと呼びます。

このROMを実際に見ながら、

・この処理はどこにあるのか
・この信号はどこで使われているのか
・この機能は本当に追加できるのか
・その判断に根拠はあるのか
・まだ確認できてないところはどこなのか
・書き換えまで進んで大丈夫なのか

を一個ずつ確認してます。

使ってるものは、

・Ghidra
・RomRaider
・EcuFlash
・OpenPort
・ROMのバイナリ解析
・ECUログ

などです。

Ghidraは、ECUの中に入ってる機械語のプログラムを、人間が追いやすい形にして見るためのソフト。

RomRaiderは、スバル系ECUのデータやログを見る時によく使われるソフト。

EcuFlashは、対応するECUのデータを読み出したり書き込んだりするソフト。

OpenPortは、車とパソコンをつなぐための機器です。

この辺も、今後の記事で一つずつちゃんと説明します。

---

## AIもかなり使ってます

このプロジェクトでは、AIもかなり使ってます。

コードを読ませたり、

大量の情報を整理したり、

解析方法を考えたり、

テスト項目を作ったり、

「ここ見落としてない?」

みたいな確認をしたり。

正直、これだけの量を一人で整理するのはかなり大変なので、かなり助けられてます。

ただ、

**AIが言ったことをそのまま信じてるわけではないです。**

ここはかなり重要です。

AIは普通に間違えます。

それっぽいことを言ってても、実際に確認したら違ってた、なんてこともあります。

なので、

「AIがそう言ったから正しい」

じゃなくて、

・実際のROMに証拠があるか
・実際のコードと一致するか
・ログで確認できるか
・テストで再現できるか

を基準にしてます。

分からないものは分からない。

根拠が足りないものは、無理に進めない。

ここはかなり徹底してます。

実際、調べた結果、

「これまだ証拠足りないな」

ってなったものは、そのまま保留にしてます。

---

## なんでブログにするのか

ここまでやってくると、

調べたことも、

失敗したことも、

途中で考え直したことも、

かなり増えてきました。

で、思ったんです。

**これ、自分だけで終わらせるのもったいなくない?**

って。

ECUチューンに興味はあるけど、

「そもそも何やってるのか分からない」

って人、結構いると思うんです。

自分も最初はそうでした。

ROMって何?

RAMって何?

アドレスって何?

逆アセンブルって何?

マップ書き換えと、プログラム自体を変えるのは何が違うの?

最初はそんな感じです。

なのでこのブログでは、

できるだけ専門用語をそのまま並べず、

**初めて見る人でも分かるように、なるべく噛み砕いて書いていこうと思ってます。**

専門用語自体は使います。

ただ、意味を説明せずに略語だけ並べるようなことはしません。

---

## これから書いていくこと

まずはかなり基本的なところから始めます。

・ECUって何?
・ECUは何を制御してる?
・ROMって何?
・RAMって何?
・ECUチューンって実際何を変えてる?
・燃料マップって何?
・点火マップって何?
・RomRaiderって何?
・EcuFlashって何?
・OpenPortって何?
・Ghidraって何?
・ECUのプログラムってどうやって動いてる?

この辺から始めて、

少しずつ、

・フラットフットシフト
・オートブリッピング
・ローンチコントロール
・バブリング
・点火カット
・SI-DRIVE連動制御
・各機能の優先順位
・安全制御
・BEASTの設計
・NEXUSの解析方法
・開発を細かく区切って検証してる理由
・必要条件の整理
・根拠の取り方
・テスト方法
・実車確認

みたいなところまで書いていく予定です。

あと、成功した話だけを書くつもりもないです。

間違えた解析も、

AIが間違えた内容も、

証拠が足りなくて止めたところも、

途中で仕様を変えた理由も、

できなかったことも、

そのまま残そうと思ってます。

個人的には、

「最終的にこうなりました」

だけ見るより、

**どう考えて、どこで間違えて、どう直したのか**

まで見えた方が面白いと思うので。

---

## 最終的にどうしたいか

このシリーズを最初から読んだ人が、

最初は、

「ECUとか全然分からん」

って状態でも、

最後には、

「純正ECUに新しい機能を追加するって、設定値を変えるだけじゃなくて、入力信号、プログラム、安全条件、他の機能との競合、テスト、実車確認まで必要なんだな」

って分かるところまで持っていきたいです。

それと同時に、

BEASTとNEXUSが最終的にどこまで行けるのか。

GRBの純正ECUだけで、どこまで実現できるのか。

そこも全部残していきます。

うまくいくものもあると思います。

逆に、最後まで無理なものも出てくるかもしれません。

そこも含めて、そのまま書きます。

次回は、

**「そもそもECUって何?」**

から始めます。

エンジンを動かしてる小さいコンピューターが、

実際には何を見て、

何を判断して、

何を動かしてるのか。

本当に一番最初のところから書いていきます。
Posted at 2026/10/01 01:12:29 | コメント(0) | トラックバック(0) | クルマ

プロフィール

「第8回|ECUのプログラムってどうやって読むの? 逆アセンブルとGhidraの話 http://cvw.jp/b/3842811/49353653/」
何シテル?   10/09 02:01
きもおたぶるーはせいぎ
みんカラ新規会員登録

ユーザー内検索

<< 2026/10 >>

日 月 火 水 木 金 土
     1 2 3
4 5 6 7 8 910
11121314151617
18192021222324
25262728293031

愛車一覧

過去のブログ

2026年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ| 利用規約| サイトマップ
© LY Corporation