doxygenとPlantUMLの組み合わせ

■doxygenとPlantUMLの組み合わせ
doxygen のドキュメント生成ツールと PluntUML の作図ツールを組み合わせてみました。
言葉だけでは理解困難なケースや誤解を招くため、doxygen生成ドキュメントに図を取り入れよう。
その方法を簡単に記載する。
(1)まずは、doxygenのコンフィグファイルを生成してカスタマイズする。
(2)次にドキュメント生成元のソースファイルにPlantUMLの記載を入れる。
(3)最後にPlantUMLによる図の.pngファイルを生成する。

◆Doxyfileコンフィグファイル生成
doxygen-1.8.12> doxygen.exe -g

◆Doxyfileコンフィグファイル設定例
・関連する設定項目
DOXYFILE_ENCODING = CP932   #Doxyfileの文字コード指定:拡張SHIFT_JIS
OUTPUT_DIRECTORY = ./out_dir  #Doxygen出力フォルダ指定
INPUT = ./in_dir          #(入力)ソースファイルのフォルダ指定
INPUT_ENCODING = CP932    #(入力)ソースファイルの文字コード指定
HAVE_DOT = YES         #graphvizを使う場合 YES
DOT_PATH = ../PlantUML/graphviz-2.38/bin
PLANTUML_JAR_PATH = ../PlantUML

・その他設定項目
PROJECT_NAME = “NewProject”
PROJECT_NUMBER = Rev 0.10
PROJECT_BRIEF = プロジェクトの概要をココに記載する
BRIEF_MEMBER_DESC = NO
REPEAT_BRIEF = NO
STRIP_FROM_PATH = in_dir
STRIP_FROM_INC_PATH = in_dir
OPTIMIZE_OUTPUT_FOR_C = YES
IDL_PROPERTY_SUPPORT = NO
GENERATE_LATEX = NO

◆doxygenの.batファイルの内容
—————————
echo *** JREパス ***
set PATH=%PATH%;D:\User\070_Document\PlantUML\jre7\jre1.7.0\bin
echo *** Graphviz起動 ***
set GRAPHVIZ_DOT=D:\User\070_Document\PlantUML\graphviz-2.38\bin\dot.exe
echo *** doxygen起動 ***
doxygen.exe
—————————

◆ソースファイルsource.cの記載例
・source.cをin_dirフォルダ下に置き、doxygenを実行する
※この時点ではPlantUMLが出力するXXXX.pngは生成されない(PlantUMLは.batで動作させるため.pngが生成されない方が利便性が良い)
—————————
/**
* @brief 大分類ステートメントテーブル
*
* 大分類の状態テーブルである
* 大分類を細分化した状態は中分類の状態テーブルを参照の事
* @note
* @startuml XXXX.png
database LargeStateTable as ”
LARGE_S1

LARGE_S2

LARGE_S3

LARGE_S4

LARGE_STATE_MAX

* @enduml
*/
—————————

・doxygenで出力されたout_dir\htmlフォルダ下の.htmlファイル抜粋
 @startuml~@endumlの部分が、img src=”XXXX.png” に成っているから、
カレントフォルダにXXXX.pngが有れば(生成されれば)、図がドキュメントに表示される。

◆PlantUMLの.batファイルの内容
・PlantUML.batを実行すると、XXXX.puが読み込まれ XXXX.pngが生成される
文字コードは、doxygenにより UTF-8で出力されてるため -charset UTF-8を指定。
(javeへのPATHが通っていない場合、javaへの相対パスを記載した例)
—————————
echo *** Graphviz起動 ***
set GRAPHVIZ_DOT=D:\User\070_Document\PlantUML\graphviz-2.38\bin\dot.exe
echo *** PlantUML起動 ***
PlantUML\jre7\jre1.7.0\bin\java -jar PlantUML\plantuml.jar -v -charset UTF-8 doxygen-1.8.12\out_dir\html\*.pu
—————————

STM32F303K8のブートプログラム

[コンテンツ]
STM32F303K8内蔵クロック(HSI 8MHz)だけを使用するのであれば、ブートプログラムは IARのEWARMの場合はSTM32CubeF3 内のProjectsフォルダ下を利用すればmain関数まで実行できるようになります。
必要なファイルは以下の通り。
・startup_stm32f303x8.s :無修正で利用
・system_stm32f3xx.c :無修正で利用
・stm32f3xx_it.c :無修正で利用
・main.c :main関数内は空でも良い
・stm32f3xx_it.h
・stm32_assert.h
・main.h

次のステップとしては、クロックアップさせる事になると思います。
STM32CubeF3では、HALまたはLLペリフェラルドライバを提供しています。
HALドライバは、少々ソフトウェア的な作りとなっており、該当MCU以外の処理ロジックが含まれていて理解し辛いです。
LLドライバは、該当MCU以外の処理ロジックはコンパイルフラグにより排除できる形となっています。

ローカルな実装では、動作クロックはPLLを用いて48MHzにしました。
以下のようにmain関数でLLドライバを使用してます。

#include "stm32f3xx_ll.h"

int main(void)
{
	/* クロック設定の確認のためにクロックをMCOポート(18pin:PA8)に出力する */
	LL_RCC_ConfigMCO( LL_RCC_MCO1SOURCE_PLLCLK, LL_RCC_MCO1_DIV_1 );

	/* Configure the system clock to 48 MHz */
	SystemClock_Config();

	/* Infinite loop */
	while (1);
}

次のステップでFreeRTOSを実装します。
STM32CubeF3に含まれているver9.0とオフィシャル ver7.6の消費リソース具合を調べようと思ってます。
組み込みシステムで使用するRTOSの機能は、セマフォとメッセージがあれば事足りるからです。

サイト公開

[ブログ]
ゴールデンウィークを利用して当サイトを立ち上げました。ブログのサイトは放置する方向で考えてます。このサイトのコンテンツ構成が定まっていませんので流動的ですが、サイトのコンテンツを列挙します。

  • FreeRTOS (記載途中)

バージョンごとのアップデート内容を記載する予定です。

  • STM32F3 Discovery (記載予定)

既に別サイトのブログにて、FreeRTOSを用いて幾つかのMPC内コントローラについて記載済みです。
当サイトに整理してアップする予定です。

  • PICマイコン (まだまだ記載します)
    • MPLAB X IDE
    • MPLAB XC8
    • PICkit 3

Profile01