020 project内のいろいろなファイルの中身はどうなっているか?
元のフォルダをどのように簡素化したか?
こんなポリシーです.
●SYM32-DISCOVERYとは無関係なファイルを削除
●周辺回路のUSB,RTOS,COM,virtual COM portなどの機能に関連するファイルを削除
●DFU関連ファイルを削除
●デバッガ関連ファイルを削除
●libフォルダの構造をフラットに改造
●ファイルの中身も、STM32-DISCOVERYに関係する部分だけを残して削除
その結果、project folderペインに見えている下記のファイルが全てになっています.
これ以上はビタ一文削除できません.
フォルダ構成
STM32 projectフォルダです.
bin ビルドした結果できたバイナリファイルが格納されます.
lib ライブラリファイルが格納されています.
lib\STM32F10x_StdPeriph_Driver STMicro社による周辺回路ライブラリが格納されています.
各ファイルの位置づけ
★★★ いじる可能性あり.理解必要.
★★ いじる可能性は少ないが、参照することはあるだろう.
★ ブラックボックスで放置してよい
★★ boardinit.c platform_config.h
STM32-DISCOVERYのreset直後に走らせる初期化ルーチンです.
クロックとかの設定をしているようです.
ARM coretex-M3 CPUを動かすハードウエアに密着したルーチンです.
★★ startup_stm32f10x_md_vl_nortos.s
アセンブラソースファイルです.割り込み処理のようなCPUに密着したルーチンです.
割り込みルーチンの名前がこのファイルの中で定義されています.
抜粋するとこんなかんじの名前です.
.word FLASH_IRQHandler .word RCC_IRQHandler .word EXTI0_IRQHandler .word EXTI4_IRQHandler .word DMA1_Channel1_IRQHandler .word DMA1_Channel2_IRQHandler .word TIM1_BRK_TIM15_IRQHandler .word TIM3_IRQHandler .word TIM4_IRQHandler .word I2C1_EV_IRQHandler .word SPI1_IRQHandler .word USART1_IRQHandler .word RTCAlarm_IRQHandler .word CEC_IRQHandler
★★ STM32_VLD.h
STM32-DISCOVERYのプリント基板固有の定義をするファイルです.
たとえば、LEDはどのポートに接続されているかが記述されていますので、頻繁に参照する場面がありそうです.
STMicro社による周辺回路ライブラリをインクルードするファイルです.
★★ stm32f10x.h
STM32F100RB 固有の定義をするファイルです.
クロック周波数、IRQ番号、uint32_tのようなよく見かける型宣言、周辺回路レジスタの命名、などをやっています.
★★ system_stm32f10x.c system_stm32f10x.h
STM32-DISCOVERYのreset直後に走らせるクロック設定ルーチンがこのファイルに集中的に書かれています.
いちおう内容を知っておきたいファイルです.
★ 128_8.ld
コンパイル後にリンカでリンクしますが、そのリンカスクリプトです.
★★★ main.c
ユーザープログラムなので、自分で記述します.
★★★ makefile
ビルドするためのmake fileです.
コマーシャルベースの統合開発環境では、makeを自分で書く必要はなく、裏でやってくれてるので楽です.
しかしフリー版の統合開発環境であるeclipseでは、makeを自分で書いてビルドするのだと思ってだいたい正解のようです.
素人には少々敷居が高くて困ったものですが、フリーなので仕方ないでしょう.
makefileの意味がわからない人はこれから勉強しましょう.
各ファイルの相関関係
下図は下から上へ流れて行くように描いてあります.