Raisonance Ride7 & ARM Tools (20) ― 2015年04月14日 21時09分42秒
RKit-ARM が STM32F7 をサポートしたので私の環境でも動作確認をしてみる。
RKit-ARM_1.58.15.0093 がサポートしているのは以下の MPU 。
STM32F746xE
STM32F746xG
STM32F756xE
STM32F756xG
スクリプトを書き換え HFARM.XML と registry と sim に STM32F746xE を追加する。
スタートアップは startup_stm32f7xx.s の .cpu を cortex-m7 に変更するだけにしておこう。
さっそく New Project で STM32F746xE のプロジェクトを作り、ダミーの main を入れコンパイルしてみる。
問題なくコンパイルが通る。
こういう場合うまく行っているように見えてけっこういろいろ問題があったりするものだ。
まず ApplicationDirectory の中を見ていこう。
リンカースクリプトは
sections_FLASH.ld
STM32F746_512K_192K_DEF.ld
STM32F746_512K_192K_FLASH.ld
STM32F74x_COMMON.ld
ができている。
中身も問題ないようだ。
次に Application0.elf.ld (ApplicationName.elf.ld)を見るとライブラリが
"smallprintf_thumb.a"
"STM32x_io_putchar_thumb.a"
になっている。ここは
"smallprintf_thumb_fpu.a"
"STM32x_io_putchar_thumb_fpu.a"
でなければならないはずだ。
まだスクリプトにおかしな所があるようだ。
GNUtools.js を調べてみると (corename=="Cortex-M4+FPU") はあるのに (corename=="Cortex-M7+FPU") が無い。
(corename=="Cortex-M7+FPU") を追加する。
ところで、ライブラリは Cortex-M4 で作ってあるが Cortex-M7 と共通と見てよいのだろうか?
そうでなければ Cortex-M7 用にライブラリの種類を増やさなければならない。
それ以前に、そもそも io_putchar と small_printf は STM32F7xx で動くのだろうか?
振り返ってみれば Raisonance は何かと抜けていることが多い。
このコアチェックの部分では corename と core をチェックしているが registry には core の項目が無いので有効なのは corename だけだ。
こういったちぐはぐな所がいたるところにある。
だいたい デバイスに関係する物が HFARM.XML 、sim file 、registry と多すぎるのも問題だ。
今回のテストでは Cortex-M7 の設定でコンパイルが通ったと言うことだけでそれ以外の部分は見直しが必要だろう。
いや、ローカルライブラリを使わない設定ならば問題ないのかもしれない。
この際ついでなので STM32L476xC も試してみよう。
同様に関係する部分のスクリプトを書き換え HFARM.XML と registry と sim に STM32L476xC を追加する。
スタートアップは startup_stm32f4xx.s をリネームして startup_stm32l4xx.s にし .cpu を cortex-m4 に変更する。(この際 startup_stm32f4xx.s も cortex-m4 に修正しておこう)
STM32L4x_COMMON.ld を作成して C:\Program Files\Raisonance\Ride\lib\ARM に入れる。
確認のため New Project で STM32L476xC のプロジェクトを作り、ダミーの main を入れコンパイルしてみる。
問題なくコンパイルが通る。
というわけで STM32 の場合 Raisonance が力を入れていることもあってデバイスの追加も比較的簡単だ。
RKit-ARM_1.58.15.0093 がサポートしているのは以下の MPU 。
STM32F746xE
STM32F746xG
STM32F756xE
STM32F756xG
スクリプトを書き換え HFARM.XML と registry と sim に STM32F746xE を追加する。
スタートアップは startup_stm32f7xx.s の .cpu を cortex-m7 に変更するだけにしておこう。
さっそく New Project で STM32F746xE のプロジェクトを作り、ダミーの main を入れコンパイルしてみる。
問題なくコンパイルが通る。
こういう場合うまく行っているように見えてけっこういろいろ問題があったりするものだ。
まず ApplicationDirectory の中を見ていこう。
リンカースクリプトは
sections_FLASH.ld
STM32F746_512K_192K_DEF.ld
STM32F746_512K_192K_FLASH.ld
STM32F74x_COMMON.ld
ができている。
中身も問題ないようだ。
次に Application0.elf.ld (ApplicationName.elf.ld)を見るとライブラリが
"smallprintf_thumb.a"
"STM32x_io_putchar_thumb.a"
になっている。ここは
"smallprintf_thumb_fpu.a"
"STM32x_io_putchar_thumb_fpu.a"
でなければならないはずだ。
まだスクリプトにおかしな所があるようだ。
GNUtools.js を調べてみると (corename=="Cortex-M4+FPU") はあるのに (corename=="Cortex-M7+FPU") が無い。
(corename=="Cortex-M7+FPU") を追加する。
ところで、ライブラリは Cortex-M4 で作ってあるが Cortex-M7 と共通と見てよいのだろうか?
そうでなければ Cortex-M7 用にライブラリの種類を増やさなければならない。
それ以前に、そもそも io_putchar と small_printf は STM32F7xx で動くのだろうか?
振り返ってみれば Raisonance は何かと抜けていることが多い。
このコアチェックの部分では corename と core をチェックしているが registry には core の項目が無いので有効なのは corename だけだ。
こういったちぐはぐな所がいたるところにある。
だいたい デバイスに関係する物が HFARM.XML 、sim file 、registry と多すぎるのも問題だ。
今回のテストでは Cortex-M7 の設定でコンパイルが通ったと言うことだけでそれ以外の部分は見直しが必要だろう。
いや、ローカルライブラリを使わない設定ならば問題ないのかもしれない。
この際ついでなので STM32L476xC も試してみよう。
同様に関係する部分のスクリプトを書き換え HFARM.XML と registry と sim に STM32L476xC を追加する。
スタートアップは startup_stm32f4xx.s をリネームして startup_stm32l4xx.s にし .cpu を cortex-m4 に変更する。(この際 startup_stm32f4xx.s も cortex-m4 に修正しておこう)
STM32L4x_COMMON.ld を作成して C:\Program Files\Raisonance\Ride\lib\ARM に入れる。
確認のため New Project で STM32L476xC のプロジェクトを作り、ダミーの main を入れコンパイルしてみる。
問題なくコンパイルが通る。
というわけで STM32 の場合 Raisonance が力を入れていることもあってデバイスの追加も比較的簡単だ。
コメント
トラックバック
このエントリのトラックバックURL: http://syslab.asablo.jp/blog/2015/04/14/7613583/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。