FC2カウンター FPGAの部屋 The Simple MicroBlaze Microcontroller 15 (デバック)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

The Simple MicroBlaze Microcontroller 15 (デバック)

The Simple MicroBlaze Microcontroller 13 (16KB RAMのSMMでもう一度)”でソフトウェアをSDKでコンパイルできたので、今度はデバックを試みた。
デバックのやり方は”The Simple MicroBlaze Microcontroller 5(デバック機能)”を参照のこと。
デバックモードにすると、Consoleに”Could not find the frame base for "main".”と表示され、Variablesウインドウに変数値が表示されない。
SMM_58_101220.png

解決策を例によってXilinxのアンサーデータベースで検索したら、”12.1 EDK - SDK could not find the frame base for "main" in debugging”が引っかかった。
解決策としては、何のことはない、関数のプロトタイプ宣言をして、main関数を一番最初にしろとのことだった。

int func1(. . . ); //func1 prototype defined here

int main(void) //main defined here
{
:
:
}

int func1(. . . ) //func1 defined here
{
:
:
}


ソフトウェアを修正することにする。

int main(void)をCソースの一番上にして、下のインクルード・ファイルをインクルードした。

// lcd_rot_cont.h

void Timer_Wait (Xuint32 delay);
void lcd_init (void);
void lcd_print (Xuint32 Line, Xuint8 *Str);
void lcd_clear (void);
void timer_int_handler(void * arg);
void SCCB_reg_init(void);
char *ntoxn(char *str, unsigned short int x, int n);
char *strcpyc(char *s1, char *s2);
void SCCB_reg_status_disp(Xuint8 *Str);
void SCCB_cur_reg_disp(Xuint8 *Str);
void gain_level_reg_set(void);
void aec_level_h_reg_set(void);
void aec_level_l_reg_set(void);
int main(void);


すると、エラーが無くなって、変数が表示されるようになった。
SMM_60_101220.png
  1. 2010年12月20日 05:50 |
  2. SMM
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1667-e82a6815
この記事にトラックバックする(FC2ブログユーザー)