Keil MDK-ARM v5.14 Project Generator (1)2015年05月01日 21時22分04秒

Keil.STM32F2xx_DFP.2.2.0.pack
MDK5 Software Packs の一部は GCC がサポートされている。
今回はそれをどうやって使うのか調べてみよう。
テストのために使うだけなのでできるだけ小さなパッケージにしたい。
Keil.STM32F2xx_DFP.2.2.0.pack が 67,991,464 と比較的小さいのでこれにしよう。
さっそく Pack Installer から Keil.STM32F2xx_DFP をインストール。
ちなみに Keil.STM32F2xx_DFP.2.0.0.pack から STMicroelectronics STM32CubeF2 Firmware Package がベースになっている。

さてインストールが終わったので New uVision Project で新規プロジェクトを作成する。
デバイスは STM32F205RBTx だ。
STM32F205RBTx


OK をクリックすると Run-Time Environment の画面になる。
特に ARMCC と GCC の選択項目はない。
どこで切り替えるのだろう。
CMSIS CORE と Device Startup にチェックして OK 。
STM32F205RBTx


startup_stm32f205xx.s と system_stm32f2xx.c がプロジェクトに入っている。
Project の Options for Target を見ると GCC になっている。デフォルトが GCC なのだろうか?
それとも何か設定を見逃したのか?
Test Project


Source Group 1 にダミーの main を入れてコンパイルしてみる。
いつものエラーだ。
RTE/Device/STM32F205RBTx/system_stm32f2xx.c(1): error: target CPU does not support ARM mode
Project の Options CC Tab Compile Thumb Code にチェックを入れる。


再度コンパイル
RTE/Device/STM32F205RBTx/system_stm32f2xx.c(65): error: fatal error: 
stm32f2xx_hal.h: No such file or directory
どうやら Path が通っていないらしい。
Project の Options CC Tab Include Paths に
C:\Keil_v5\ARM\PACK\Keil\STM32F2xx_DFP\2.2.0\Drivers\STM32F2xx_HAL_Driver\Inc を追加。


再再度コンパイル
C:/Keil_v5/ARM/PACK/Keil/STM32F2xx_DFP/2.2.0/Drivers/STM32F2xx_HAL_Driver/Inc/stm32f2xx_hal.h:48:32: fatal error: 
stm32f2xx_hal_conf.h: No such file or directory
stm32f2xx_hal_conf.h が無い。これは自分で用意しなければならないらしい。
C:\Keil_v5\ARM\Pack\Keil\STM32F2xx_DFP\2.2.0\Drivers\STM32F2xx_HAL_Driver\Inc に stm32f2xx_hal_conf_template.h があるので名前を変えてそのまま使うことにしよう。


再再再度コンパイル
C:/Keil_v5/ARM/PACK/Keil/STM32F2xx_DFP/2.2.0/Drivers/STM32F2xx_HAL_Driver/Inc/stm32f2xx_hal_def.h:48:23: fatal error: 
stm32f2xx.h: No such file or directory
Path が通っていない。
Project の Options CC Tab Include Paths に
C:\Keil_v5\ARM\PACK\Keil\STM32F2xx_DFP\2.2.0\Drivers\CMSIS\Device\ST\STM32F2xx\Include を追加。


再再再再度コンパイル
c:/program files/raisonance/ride/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld.exe: 
warning: cannot find entry symbol _start; defaulting to 00008000
これはリンカースクリプトが無いときのエラーだ。
Project の Options Linker Tab Linker Script File: に stm32_flash.ld を登録。

 





再再再再再度コンパイル
c:/program files/raisonance/ride/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-init.o): In function `__libc_init_array':
init.c:(.text.__libc_init_array+0x20): undefined reference to `_init'
Project の Options Linker Tab [Do not use Standard System Startup Files] のチェックをはずし
Misc controls に -Xlinker --gc-sections を指定する。


再再再再再再度コンパイル
コンパイルが通る。


プロジェクトジェネレータに GCC が復活したのはいいことだが、パスとデファインとリンカースクリプトを何とかしたいところだ。
そして、ARMCC と GCC の切り替え方法はどうなっているんだ?


参照:
 MDK5 Software Packs
環境:Keil MDK-ARM V5.14
    + GCC ARM/embedded-4_9-branch revision 218278
    + Keil.STM32F2xx_DFP.2.2.0.pack