So-net無料ブログ作成

STM32FをArduino iDEで開発的なメモメモメモ [STM32F]

以下はまったく未保証なので注意してね。何かあれば戻せるようにした上でどうぞ。

1.gccのバージョンを上げてみる。

流石にバージョンが4.8.何某はないんじゃないかと思って最新のバージョンにしてみる。
arm-none-eabi-gccはすでに2018バージョンがリリースされているので、それをまずPCにインストールする。
が!このままではArduinoから呼ばれない。STM32-Arduinoが呼んでいるarm-none-eabi-gccはArduino15フォルダー以下に存在する。Arduino IDEの環境設定からArduino15フォルダーを開くと便利。
C:\Users\hamayan\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc
このフォルダーの下に、先ほどインストールしたarm-none-eabi-gccをまるっとコピー。

次にboards.txtを編集する。たぶん33行目辺りにarm-none-eabi-gccのツールチェインバージョンが書かれた行が有るので、それを編集する。
nucleo_f103rb.build.gcc_ver=gcc-arm-none-eabi-7 2018-q2-update
※nucleo_f103rbとなっているが、他のボードにも適用される模様。

一旦Arduino IDEを再起動してビルドすると上記の変更が反映される。

2.duplicate 'inline' errorが出るようになっちゃった!
もうARM関連は色々いじり過ぎて、何をやっているのかさっぱり。上記エラーがSTM32 Arduinoで出るようになってしまったので、対策を探す。
以下の内容がとても近い、AVR-GCCの話だけれど。
https://www.avrfreaks.net/forum/avrgnu-c-compiler-duplicate-inline-error

そこでエラーの出ているソースを編集してみる。
元は
static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port)
だったものを
__attribute__( ( always_inline ) ) static inline void afio_exti_select(exti_num exti, exti_cfg port)
とした、、、微妙だなぁ。



多分2週間もしたらきっと忘れるので、こうやってメモしておこう。

※arm-none-eabi-gccの2018バージョンは、STM32Fの開発でCoIDEでデバッガーを起動すると問題が起きるので、その一つ前の2017年バージョンに落とした。

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。