マルチコア用のプログラムを,1つのブート・ローダ・プロジェクトと複数のアプリケーション・プロジェクトに分けて構成する場合,ブート・ローダ・プログラムからアプリケーション・プログラムの情報を参照するために,最適化リンカの-fsymbolオプションを使用します。
最適化リンカに-fsymbolオプションを指定してアプリケーション・プロジェクトをリンクすると,オプションに指定したセクション内に存在するpublicラベルの名前とアドレス値を,シンボル・アドレス・ファイル(.fsyファイル)に出力します。各アプリケーション・プロジェクトから出力したシンボル・アドレス・ファイルをブート・ローダ・プロジェクトの入力とすることで,情報の参照が可能になります。
;; cstart.asm .section ".text.cmn", text .public __cstart_pm1 ; .fsy に出力するためにpublic指定する __cstart_pm1: |
アプリケーション・プロジェクトのリンク時に,-fsymbolオプションで__cstart_pm1ラベルの存在する.text.cmnセクションを指定します。この場合,pm1.fsyファイルを生成します。
ブート・ローダ・プロジェクトで,アプリケーション・プロジェクト側のラベルを参照します。
ブート・ローダ・プロジェクトのコンパイル時に,各アプリケーション・プロジェクトから生成した.fsyファイルを一緒に入力することで,.fsyファイル内のアドレス値でラベルの参照解決を行います。
.fsyファイルに出力したラベルは,ブート・ローダ・プロジェクトでもpublicラベルの定義として扱います。このため,複数のアプリケーション・プロジェクトから同名のラベルを.fsyファイルに出力していたり,ブート・ローダ・プロジェクトで同名のラベルを定義していると,ブート・ローダ・プロジェクトのリンク時に多重定義エラーになります。 |