Giter Site home page Giter Site logo

cfg's Introduction

	TOPPERS新世代カーネル用コンフィギュレータ(Release 1.9.7)


TOPPERS新世代カーネル用コンフィギュレータは、カーネルやソフトウェア部品
の構成や初期状態を定義したシステムコンフィギュレーションファイルを解釈し、
システムを構築する上で必要なファイル類を生成するTOPPERS新世代カーネル用
のツールです。

コンフィギュレータは、コンパイラやアセンブラを初めとする開発ツールと同様、
PC等の開発用コンピュータ上で動作するコマンドラインプログラムです。したが
って、コンフィギュレータそのものが最終的な製品に組み込まれることは、原則
としてありません。コンフィギュレータはコマンドラインツールなので、コンパ
イラを初めとした他のコマンドラインツールと組み合わせて使用することを前提
としています。しかし、ユーザーが適切に設定を行うことで、多くの統合開発環
境から呼び出せます。 


【コンフィギュレータの構築方法(ITRON系)】

カーネルを構築する前に、まず、コンフィギュレータをコンパイルする必要が
あります(コンフィギュレータをバイナリで入手した場合には、このステップ
は必要はありません)。
コンフィギュレータの構築にはBoost C++ Libraries 1.48.0以上が必要です。
開発時点でのBoost C++ Librariesの最新版は1.58.0、であり、それ以降のバー
ジョンについては動作確認を行っていません。

Boost C++ Librariesは、下記URLから入手することができます。
http://www.boost.org/

・動作確認済みの環境
Windows 7 (x64) SP1 + Cygwin 1.7.17 + GCC 4.5.3 + Boost 1.48.0

Windows XP SP3 + MinGW 1.0.17 + GCC 4.6.2 + Boost 1.48.0 

Windows 7 (x64) SP1 + MinGW 1.0.17 + GCC 4.6.1 + Boost 1.52.0

=== GNU開発環境を用いた構築方法 ===

コンフィギュレータ(cfgプログラム)を構築するには、cfgディレクトリに移動
し、configureおよびmakeコマンドを実行します。

	% cd cfg
	% ./configure
	% make

ただし、Boostをインストールしたディレクトリおよび名称が、標準で想定して
いるものと違う場合には、configureに--with-headersおよび--with-libraries
オプションによりインクルードおよびライブラリのディレクトリを指定してくだ
さい。
また、ホストシステムによっては、最適化レベルを上げると正しくコンパイルで
きないことが知られています。そのような場合には、最適化レベルを下げるか、
最適化を抑止するように、Makefileを修正する必要があります。

複数のバージョンのBoost C++ Librariesがインストールされている場合(中途
半端にアンインストールされた場合を含む)、configureに失敗する可能性があ
ります。その場合は手作業でMakefile.configを修正してください。
また、一度コンフィギュレータの構築を行った後、コンパイラやライブラリの
アップデートを行った場合には、make realcleanを実行し、configureからやり
直してください。


【コンフィギュレータの構築方法(AUTOSAR系)】

カーネルを構築する前に、まず、コンフィギュレータをコンパイルする必要が
あります(コンフィギュレータをバイナリで入手した場合には、このステップ
は必要はありません)。
コンフィギュレータの構築にはBoost C++ Libraries 1.48.0以上およびXerces C++
3.1.1以上が必要です。
開発時点でのBoost C++ Librariesの最新版は1.52.0、Xerces C++の最新版は3.1.1
であり、それ以降のバージョンについては動作確認を行っていません。

Boost C++ Librariesは、下記URLから入手することができます。
http://www.boost.org/

Xerces C++は、下記URLから入手することができます。
http://xerces.apache.org/xerces-c/

・動作確認済みの環境
Windows 7 (x64) SP1 + Cygwin 1.7.17 + GCC 4.5.3 + Boost 1.48.0
	+ Xerces C++ 3.1.1 + ICU 4.8.1

Windows XP SP3 + MinGW 1.0.17 + GCC 4.6.2 + Boost 1.48.0 
	+ Xerces C++ 3.1.1 + ICU 49.1

Windows 7 (x64) SP1 + MinGW 1.0.17 + GCC 4.6.1 + Boost 1.52.0
	+ Xerces C++ 3.1.1 + ICU 50.1

=== GNU開発環境を用いた構築方法 ===

コンフィギュレータ(cfgプログラム)を構築するには、cfgディレクトリに移動
し、configureおよびmakeコマンドを実行します。
configureに--with-xmlを指定することで、AUTOSAR XML対応機能を追加する
ことができます。

	% cd cfg
	% ./configure --with-xml
	% make

ただし、Boostをインストールしたディレクトリおよび名称が、標準で想定して
いるものと違う場合には、configureに--with-headersおよび--with-libraries
オプションによりインクルードおよびライブラリのディレクトリを指定してくだ
さい。
また、ホストシステムによっては、最適化レベルを上げると正しくコンパイルで
きないことが知られています。そのような場合には、最適化レベルを下げるか、
最適化を抑止するように、Makefileを修正する必要があります。

複数のバージョンのBoost C++ Librariesがインストールされている場合(中途
半端にアンインストールされた場合を含む)、configureに失敗する可能性があ
ります。その場合は手作業でMakefile.configを修正してください。
また、一度コンフィギュレータの構築を行った後、コンパイラやライブラリの
アップデートを行った場合には、make realcleanを実行し、configureからやり
直してください。


【Mekefile.configの説明】

configureコマンドによって生成されるMakefile.configでは次のパラメータが
定義されます。

・LIBBOOST_SUFFIX
Boost C+ Librariesのライブラリファイルのサフィックス
たとえば、ライブラリファイルがlibboost_system-mt.aのような形式であれば、
LIBBOOST_SUFFIXには-mtが設定されます。

・BOOST_VERSION
Boost C++ Librariesのバージョン
バージョン1.48.0であれば、BOOST_VERSIONには1_48が設定されます。

・BOOST_DIR=/usr/include
Boost C++ Librariesのヘッダファイルがあるディレクトリ
自分でBoost C++ Librariesをインストールした場合、通常/usr/local/include
が設定されます。

・LIBBOOST_DIR
Boost C++ Librariesのライブラリファイルがあるディレクトリ
自分でBoost C++ Librariesをインストールした場合、通常/usr/local/libが設定
されます。

・XERCES_DIR
Xerces C++のヘッダファイルがあるディレクトリ

・LIBXERCES_DIR
Xerces C++のライブラリファイルがあるディレクトリ

・OPTIONS
コンパイラの追加オプション
普通は何も設定されません。

・HAS_CFG_XML
AUTOSAR XML対応の有無
configureに--with-xmlを指定した場合は1に定義されます。


【コンフィギュレータの使い方】

コンフィギュレータ(cfg)は、TOPPERS新世代カーネル統合仕様書の2.12.5節
の記述の通り、3つ(または4つ)のパスで構成されます。

コンフィギュレータは、システムコンフィギュレーションファイル名をパラメー
タに取り、以下のオプションを持ちます(重要なもののみ)。

	--help
		オプションのリストと説明を表示する。

	-v[--version]
		コンフィギュレータのバージョンを表示する。

	-k[--kernel]<カーネル名>
		カーネルの名称を指定する。デフォルトはasp。

	-p[--pass]<パス番号>
		パス番号を指定する。1〜3のいずれか。

	-I[--include-path]<インクルードパス名>
		INCLUDEディレクティブにおいて、インクルードするコンフィギュレー
		ションファイルを探すパス名を指定する。

	-T[--template-file]<テンプレートファイル名>
		テンプレートファイルの名称を指定する。パス2とパス3で有効。

	--api-table <静的APIテーブルファイル名>
		静的APIテーブルのファイル名を指定する。

	--cfg1-def-table <値取得シンボルテーブルファイル名>
		値取得シンボルテーブルのファイル名を指定する。

	-r[--rom-image]<ロードモジュール名>
		ロードモジュールをSレコードフォーマットの形に変換したファイルの
		名称を指定する。パス3でのみ有効。

	-s [--symbol-table] <シンボルファイル名>
		ロードモジュール中の各シンボルとアドレスの対応表を含むシンボル
		ファイルの名称を指定する。パス3でのみ有効。

	--id-output-file <ID番号出力ファイル名>
		オブジェクトのID番号の割付け結果を、指定した名前のファイルに書
		き出す。パス2でのみ有効。

	--id-input-file <ID番号入力ファイル名>
		オブジェクトのID番号の割付けを、指定した名前のファイルから取り
		込む。パス2でのみ有効。

	--external-id
		オブジェクトのID番号を保持する変数の定義を生成する。パス2でのみ
		有効。

	-M[--print-dependencies]<ターゲットシンボル>
		システムコンフィギュレーションファイルの依存関係を出力する。
		Makefile中の依存関係を生成する際に用いる。

	--ini-file <設定ファイル名>
		AUTOSAR XML対応時において、設定ファイルを指定する。

コンフィギュレータの詳細仕様については、別途PDFファイルの形で配布してい
る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照してください。
テンプレートファイルの作成にあたっては、「TOPPERS新世代カーネル用コンフ
ィギュレータ内蔵マクロプロセッサ仕様書」を参照してください。

○変更履歴
2023/01/22
・M1 Mac(+Homebrew)版向けの対応
2020/07/26
・Linux 64版向けの対応

以上

cfg's People

Contributors

mikoto2000 avatar mitsut avatar topame avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cfg's Issues

スタティックリンクのビルド方法が欲しい

セルフビルドして、ビルドしたPC上で利用する場合は問題ないが再配布したい場合には、
ライブラリのXerces-cのスタティックリンクビルドが必要になります。

xerces-cのスタティックリンクのビルド方法をREADMEに追記したい

スキーマの利用は必須にして、スキーマチェックをオプションでしないようにしてほしい

スキーマを設定しないと、スキーマが使われてない旨のワーニングが出力される。
しかしそのまま実行されてしまうので、ARXMLの文法が問題の場合は、cfg.exeが落ちる場合がある。
スキーマ利用は必須にして、スキーマが見つからない場合は実行しないで終了するようにしてほしい。
またどうしてもスキーマチェックをして欲しくない場合は、オプションファイル(.ini)でスキーマチェックをしない設定を追加して、明示的にスキーマ利用をしない設定ができるようにしてほしい

質問: ビルドするディストリビューション、gcc のバージョン指定はありますか?

いくつか PR を送らせていただきましたが、私のビルド環境は以下の通りです。

現状 Travis のビルドが失敗しているようですし、
「この環境でビルドできることを確認してくれ」といった条件があればお教えください。

ARXML の pass 2 でセグメンテーションフォルトになる直接原因の報告

workaround.hpp#L66 のようです。
この行を削除したところ、セグメンテーションフォルトが解消されました。

BOOST_SP_DISABLE_THREADSの参考ページ: shared_ptr の排他制御を抑止する。 | 株式会社きじねこ

xerces-c のビルドオプションで、スレッドを無効にすることでも解消できるかもしれません。
(https://xerces.apache.org/xerces-c/build-3.html) (未検証)

それとは別に、PR #3 のコメントにて、 5 系を使うようにすると話していたので、このワークアラウンドの根本的な見直しをすることも必要そうです。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.