(toppers-users 4223) Re: GHSとCX用スタートアップルーチンの差について

石川 拓也 t_ishikawa @ ertl.jp
2014年 4月 14日 (月) 16:39:52 JST


ASTC 東島さま

お世話になっております。
名古屋大学の石川です。

私の方でも、ATK2-SC1をfl850fl4_ghsで使用しておりますが、
bssセクションの終了番地は、4バイト境界にアラインされます。
例えば、bssセクションの一番最後に1バイトや2バイトのデータ
を配置したとしても、__bss_endは、4の倍数となります。

これは、fl850fl4_ghs用のリンカスクリプトにおいて、__bss_end
をアラインする記述があるためです。
	.bss	   :
	{
	  . = ALIGN(4);
	  *(.bss)
	  *(COMMON)
	  . = ALIGN(4);
	  __bss_end = .;
	} > INTRAM

ご報告されたエラーは、ATK2-SC1にはじめから付属している
sampleでコンパイルしてみた結果、そのようなエラーとなった
ということでしょうか?

また、ご利用になっているGHSなどのバージョンによって振舞いが
異なっているのかもしれません。
ご利用になっているGHSなどのバージョンは、prc_user.txtに
記載されているものと同一でしょうか?

以上、よろしくお願い致します。


(2014/03/14 13:06), ASTC Higashijima wrote:
> 各位
> 毎々お世話になっております。
> 東島@ASTCです。
> 
> 時間が十分に当てられず、亀の歩きになっております。
> GHSを使ったビルドはできたのですが(ターゲットはfl850fl4_ghsです)、
> スタートアップルーチンで無限ループしています。
> 原因はbssセクションのクリアのようなのです。
>      be      bss_clear_end
> の条件に合わず、ループしているようです。
> マップファイルを確認するとbss領域がワード長に
> なっていないためのようです。
> 続くdataセクションの初期化(ROM化対応)のコードも
> 4バイト長を期待しているようです。
> 
> リンカに渡すオプションなどはデフォルトのまま
> 利用しており、変更しておりません。
> 何か指定する必要があるのでしょうか?
> 下にCXとGHSを比較するためにソースの一部とマップ
> ファイルの一部を添付します。
> また、CX用のリンカスクリプトを探すことができませんでした。
> どこにあるのか教えていただけたら助かります。
> 
> ご教示いただければ助かります。
> 以上、よろしくお願いします。
> 
> GHS用マップファイル
> .bss fedde5ea+000000 __bss_end
> .sbss feddc0c8+000000 __bss_start
> GHS用スタートアップルーチン
> /*
> * bssセクションのクリア
> * アラインされているので4ずつ行く
> */
> Lea __bss_start, ep
> Lea __bss_end, r6
> bss_clear_start:
> cmp ep, r6
> be bss_clear_end
> sst.w r0, 0[ep]
> add 4, ep
> br bss_clear_start
> bss_clear_end:
> 
> 
> 
> 
> CX用マップファイル
> 680 0xfedf90c8 0x4 Global Object __ssbss
> 681 0xfedfb6da 0x4 Global Object __esbss
> 682 0xfedfb6dc 0x4 Global Object __sbss
> 683 0xfedfc6dc 0x4 Global Object __ebss
> 
> 
> CX用スタートアップルーチン
> #
> *****************************************************************************
> # sbss領域のゼロクリア
> #
> *****************************************************************************
> mov #__ssbss, r13
> mov #__esbss, r12
> cmp r12, r13
> jnl .L11
> .L12:
> st.w r0, [r13]
> add 4, r13
> cmp r12, r13
> jl .L12
> .L11:
> 
> #
> *****************************************************************************
> # bss領域のゼロクリア
> #
> *****************************************************************************
> mov #__sbss, r13
> mov #__ebss, r12
> cmp r12, r13
> jnl .L14
> .L15:
> st.w r0, [r13]
> add 4, r13
> cmp r12, r13
> jl .L15
> .L14:
> 
> 
> 以上、よろしくお願いします。
> 

-- 
名古屋大学 大学院情報科学研究科
附属組込みシステム研究センター
研究員
石川 拓也
t_ishikawa @ ertl.jp