P4:コンパイラ動作確認

| | トラックバック(0)
とりあえず H8OS 上で動く、シリアルポートから文字列を返すだけのプログラムを組んで動作確認をする。

#include    "../h8os/syscall.h"

int main()
{
//    sio_speed(57600,16000000);
    write_mode(SIO);
    write_string("CPU is HD64F3664\n");
    write_string("H8/OS is ready!!\n");
}
 まずは、3664 の RAM にプログラムの転送ではまる。H8OS のコマンドインタープリターにコマンドがあるもんだと思ったらない。FDT から書き込むのかと思ったら違う (FLASH development toolkit だから当たり前か (^^;)、ドキュメントを良く見ると、RAM 転送ツールを使うと書いてあって、HP を良く見るとそういう名前のツールがある。それを使って、RAM に転送は成功。

 RAM 上のプログラムをコマンドインタープリターから実行すると動かない。.mot ファイルを良く見ると、なぜか ROM のある 0100 からデータがある。マップファイルを良く見ると BSS 領域の初期値。なぜ?
 よくよく調べると、リンカのスクリプトファイルで 'rodata' となっているラベルが 'rodata.str1.1'となっている。'str1.1'ってなに?
 とりあえずスクリプトファイルの rodata の後ろに rodata.str1.1 を追加してコンパイルすると。ROM 領域のデータは消えた。str1.1 か。 1.2 とかも出てくるんだろうか?

.text :    {
    *(.text)
    *(.strings)
    *(.rodata)
    *(.rodata.str1.1)   <---- 追加
        _etext = . ;
    }  > ram

 再度実行するが、まだ動かない。

 念のためにと、シリアルポートのボーレート設定をコメントアウトして再挑戦。やっと動く。

H8/OS >exec f9c0CPU is HD64F3664
H8/OS is ready!!

 executed.
 なんで sio_speed がうまくいかないのかわからないが、今日はここで時間切れ。というか 30分ほどオーバー。

----
 今日見つけたページ
 
GNU リンカ LD の使い方

トラックバック(0)

このブログ記事を参照しているブログ一覧: P4:コンパイラ動作確認

このブログ記事に対するトラックバックURL: http://www.co-mind.info/cgi-bin/mt/mt-tb.cgi/1067

このブログ記事について

このページは、ytaroが2009年5月24日 11:30に書いたブログ記事です。

ひとつ前のブログ記事は「P4:開発環境整備」です。

次のブログ記事は「P4:本体作成中 LCD 周りを配線」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

track feed Subscribe in a reader
Powered by Movable Type 4.01