H8でもC++
以前行列のライブラリをC++で作成したのですが、それをH8用に移植したい。ということでH8でC++を使えるようにしてみました。ターゲットは秋月の3069F(増設RAM 2M)です。
結果はこのとおり。Eclipseの画面に表示されているのがソース。HTermはH8での実行結果。
C++での開発環境は以前に作成しました。あとは、Cで使用していたリンカスクリプトを少々変更し、h8300-elf-g++でlibstdc++.aを組み込むようにすればOKでした。
今回のソース等はここにおいておきます。
細かい話になりますが、リンカスクリプトの修正のこつというかなんというかを。修正にあたって参考にした資料は3つほどあります。
まずは、標準のリンカスクリプト(-Tオプションがないときに利用されるリンカスクリプト)です。GCCのコンパイラを作成すると、標準のリンカスクリプトが例えば/usr/local/h8300-elf/lib/ldscripts/の中に生成されますので、これが参考になりました。
次に、コンパイラのコンパイルレベルをアセンブラまでにとどめる、すなわち
$ gcc target.c -S -o target.S
とかすると、アセンブラに翻訳された結果がでてくるので、それの.sectionという部分をみると実際にどのようなセクションが生成されるのがわかります。
最後はmapファイルで-Map (出力ファイル名)とすると、どセクションがどの領域がわりあてられたのか、ファイルに書き出されます。
以上3つの資料を眺めれば、どのセクションをどの位置に配置すればよいか、なんとかなると思います。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。