こちらは内容が古く、修正しました。
 
 
 
------------------------------------------------------------------------------------------
 
 
 

とうとうここまで来てしまいましたね~。

 
 
 
幸い、自分の世代はDOSやUNIXを使っていたので、Linuxには抗体があります。
ちゅ~か、Windows95の時代はLinuxでサーバー構築していたので・・・。
 
 
 
で、まず参考文献ですが、以下のページが役に立ちます。 
ちなみに使用したPCは64ビットWindows7です。
 
 
 
 
 
ファームウエアーのカスタマイズの大まかな作業流れを説明すると、
 
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)の方がアップデートされている}で記載されたコンポーネントを選択するのですが、
 
 
git2.jpg
 
 
Cygwin 3.0.7では、Devel/bash-completionはDevelの下ではなくShellsの下、Shells/bash-completionにありました。
 
 
bash3.jpg
 
 
各コンポーネントのバージョンは一番新しいものを選択しました。
 
 
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にインストール>
上記ファイルを適当な場所に移動させ、
 
 
iNav220-L.jpg
 
 
ファームウエアーのアップデートの要領でFCにインストールさせます。 カスタマイズされたファームウエアーは右下のLoad firmware [Local]をクリックしてファイルを指定します。
 
 
 
 
 
 
 
ふう~、やっと終了ですだ~!
 
 
 
さて、カスタマイズされたファームウエアーは上手く作動するのでしょうか?