こちらは内容が古く、修正しました。
ファームウエアーのカスタマイズ/iNavFlight編 最終版を参照して下さい。
------------------------------------------------------------------------------------------
とうとうここまで来てしまいましたね~。
幸い、自分の世代はDOSやUNIXを使っていたので、Linuxには抗体があります。
ちゅ~か、Windows95の時代はLinuxでサーバー構築していたので・・・。
で、まず参考文献ですが、以下のページが役に立ちます。
ちなみに使用したPCは64ビットWindows7です。
(C)https://github.com/cleanflight/cleanflight/blob/master/docs/development/Building%20in%20Windows.md
ファームウエアーのカスタマイズの大まかな作業流れを説明すると、
1)ファームウエアーをコンパイルするソフトのインストール
(カスタマイズ化の作業はLinux上で行います)
2)gitコマンドでiNavのソールファイルをPCに取り込みます。
3)target(フライトコントローラーの種類:自分の場合はSPRACINGF3EVOです)の
target.h (フライトコントローラーの設定)
target.mk (ドライバーの設定)
という2つのファイルを自分好みに編集(カスタマイズ化)
4)makeコマンドでコンパイル、リンク。 ファームウエアー(.hex)が作成されます。
5)上記のファームウエアー(.hex)をConfiguratorでフライトコントローラーにインストール。
と見かけ上は結構簡単ですな。
それでは個別に見ていくと、
<1)ソフトのインストール>
iNavFlightのファームウエアー作成には以下の3つのファイルをインストールします。
・Cygwin(Linux環境の構築)
・GNU ARM Toolchain(コンパイラー)
・Ruby(プログラミング言語):iNavFlightのみ必要。
インストール方法は参考文献の(B)(C)に詳しく説明されています。
<注意点>
a)Cygwinは参考文献(C){内容は(B)と同じですが(C)の方がアップデートされている}で記載されたコンポーネントを選択するのですが、
Cygwin 3.0.7では、Devel/bash-completionはDevelの下ではなくShellsの下、Shells/bash-completionにありました。
各コンポーネントのバージョンは一番新しいものを選択しました。
b)GNU ARM Toolchainは既にコンパイルされたファイルとリンクの相性でインストールするバージョンが限定されるようです。 バージョンが合っていないとmakeでエラーになります。
自分の場合、参考文献(C)のバージョン(gcc-arm-none-eabi-5_4-2016q2-20160622-win32)でOKでした。
c)Rubyのバージョンはrubyinstaller-devkit-2.5.5-1-x64がOKでした。
と言う感じでソフトをインストールします。
<2)Cygwinを開いてgitコマンドでiNavのソールファイルをPCに取り込みます。>
参考文献(B)の通りです。
コピー(クローン)されるとCygwinの/cygdrive/c/devの下にinavフォルダーが作られ、その下にソースファイルが入っています。
<3)target.hのカスタマイズ>
Cygwin上でtarget.hの内容を編集します。 編集はLinuxのvimエディターを使用。
自分の場合、target.mkのドライバーは既に組み込まれていたのでtarget.hのUART2をI2C1に変更するだけになります。
target.hとtarget.mkは変更したいtargetの下にあります。
Cygwinでcd /cygdrive/c/dev/inav/src/main/target/SPRACINGF3EVO(SPRACINGF3EVOの場合)
target.hの変更箇所(赤色)は
#define USE_VCP
#define USE_UART1
//#define USE_UART2
#define USE_UART3
#define USE_SOFTSERIAL1
#define UART1_TX_PIN PA9
#define UART1_RX_PIN PA10
//#define UART2_TX_PIN PA14 // PA14 / SWCLK
//#define UART2_RX_PIN PA15
#define UART3_TX_PIN PB10 // PB10 (AF7)
#define UART3_RX_PIN PB11 // PB11 (AF7)
#ifdef SPRACINGF3EVO_1SS
// #define SERIAL_PORT_COUNT 5
#define SERIAL_PORT_COUNT 4
#define SOFTSERIAL_1_RX_PIN PB0
#define SOFTSERIAL_1_TX_PIN PB1
#else
#define USE_SOFTSERIAL2
// #define SERIAL_PORT_COUNT 6
#define SERIAL_PORT_COUNT 5
#define SOFTSERIAL_1_RX_PIN PA6
#define SOFTSERIAL_1_TX_PIN PA7
#define SOFTSERIAL_2_RX_PIN PB0
#define SOFTSERIAL_2_TX_PIN PB1
#endif
#define USE_I2C
#define USE_I2C_DEVICE_1
#define I2C1_SDA_PIN PA14
#define I2C1_SCL_PIN PA15
になります。
<4)makeコマンドでファームウエアー(.hex)を作成>
Cgywinでcd /cygdrive/c/dev/inav(inav上に移動して)
make TARGET=SPRACINGF3EVO
(SPRACINGF3EVOの場合)
するとコンパイルが始まり、リンクが終了するとinavのobjの下に
inav_2.2.1_SPRACINGF3EVO.hex
というカスタマイズされたファームウエアーが作成されます。
Windows上ではC:/dev/inav/objに上記ファイルが作成されます。
<5)カスタムファームウエアーをConfiguratorでFCにインストール>
上記ファイルを適当な場所に移動させ、
ファームウエアーのアップデートの要領でFCにインストールさせます。 カスタマイズされたファームウエアーは右下のLoad firmware [Local]をクリックしてファイルを指定します。
ふう~、やっと終了ですだ~!
さて、カスタマイズされたファームウエアーは上手く作動するのでしょうか?