So-net無料ブログ作成
検索選択

CodeWarrior for Microcontrollers Special Edition のコードサイズ制限を調べた [CodeWarrior]このエントリーを含むはてなブックマーク#

Simさんの所で 無償版コンパイラのコードサイズ制限を調べるプログラムを作成していただいたので、 CodeWarriorでも調べてみました。

DATAセグメントだけが大きい場合

Simさんによると、TICode Composer Essentials (CCE)では、 問題なくコンパイルできたケースだそうです。

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

static const char x[0x8000] = {1};

void main(void) {
    int i;

  EnableInterrupts; /* enable interrupts */
  /* include your code here */

  PTAD_PTAD7 = 1;
  PTADD_PTADD7 = 1;
  for (;;){
    for (i = 0; i < sizeof(x); i++) {
      PTAD_PTAD7 ^= x[i];
      __RESET_WATCHDOG(); /* feeds the dog */
    }
  } /* loop forever */
  /* please make sure that you never leave main */
}

実験に使用したマイコンは、MC9S08LC60です。 これをコンパイルすると、リンカがエラーメッセージを出しました。

Link Error   : L4025: This limited version allows only 32768 bytes of C code
Link Error   : Link failed

どうやら、Cで生成したコードのサイズに32Kバイトの制限がかかっているようで、 textセグメントのサイズでは無いようです。 アドレス・マップは、こんな具合になっています。

*********************************************************************************************
SECTION-ALLOCATION SECTION
Section Name                    Size  Type     From       To       Segment
---------------------------------------------------------------------------------------------
.init                            132     R     0x1870     0x18F3   ROM
.startData                        14     R     0x18F4     0x1901   ROM
.rodata                        32768     R     0x1902     0x9901   ROM
.text                             47     R     0x9902     0x9930   ROM
.copy                              2     R     0x9931     0x9932   ROM

という結果が出てしまったので、二つ目の実験は行っておりません。


CCEと言われると、Component Creation Editionを思い出してしまう。


nice!(0)  コメント(1)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 1

Sim

はやっ。さすがですね。
最初は配列をつけるだけでいいかと思ったのですが、アクセスしていない配列は消されてしまうみたいなので、順にアクセスするコードにしました。
コンパイラによって出力するコードに癖があるのがおもしろいですね。興味がわいてきました。

by Sim (2008-06-23 21:53) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。