トップページ 会社概要 営業案内 製品 Web Shop サポート サイトマップ
Movie Flash Converter LED電光掲示板

セルフ開発環境

N-Cardは200MHzのCPUと64Mbyteのメモリを搭載した コンピュータなので、 充分な容量のファイルシステムさえあれば、N-Card上で アプリケーションプログラムのコンパイルや gdbをつかったソースレベルデバッグを行うことができます。

N-Cardで大容量のファイルシステムを使用するには 以下の2つの方法があります。

  1. NFSを使用し、ネットワーク経由でホストマシンのファイルシステムを マウントする。
  2. MMCカードやUSBメモリなどを接続する。

ここでは、1のNFSを使用して セルフ開発環境を 構築するする方法について説明します。

ホストマシン上でプログラムのクロスコンパイルを行う環境の 作り方については、 ソフト開発環境のページを 御覧下さい。

ホスト側:NFSサーバの準備

まず、linuxホストマシンがnfsサーバとして動作できるように、 必要であればRPMの導入、サービスの開始などを行って下さい。

linuxホスト上にNFSサーバを準備します。 exportするファイルシステムには N-Card用の 各種コマンドがある必要があります。

幸いなことに、mips用のRedhat7.1のファイルシステムの中身が 以下のurlでダウンロード可能ですので、 サイズは大きい(125Mbyte)のですが、 これを使用することにします。

ftp://ftp.mips.com/pub/linux/mips/rootfs_nfs/redhat7.1/nfsroot.mips.redhat7.1.el-01.00.tar.gz

このファイルをダウンロードし、 linuxホストマシン上の適当なディレクトリー以下に展開、 そのディレクトリーを /etc/exportsファイルに記述し、 exportします。 以下の例では /linux/mipsel 以下に展開し、exportしています。 /etc/exportsファイルの例を示します。 この例では IPアドレスが192.168.0.100であるn-cardからだけの アクセスを許可しています。

   # /etc/exportsの例
   /linux/mipsel    192.168.0.100(no_root_squash,rw)
   
ルートになり、exportfs -a コマンドを実行すれば、exportされます。 exportされたかどうかは、exportfsコマンドで表示されます。

n-card側の準備

n-card側では、マウントするディレクトリを作成し、 nfsマウント、 ダイナミックリンクの設定等を行います。

   % mount -o remount,rw /
   % mkdir /ex
   % mount 192.168.0.11:/linux/mipsel /ex -o nolock
   ...
   % mount
   /dev/mtdblock6 on / type jffs2 (rw)
   none on /proc type proc (rw)
   none on /proc/bus/usb type usbdevfs (rw)
   /dev/ram0 on /mnt/rw type minix (rw)
   192.168.0.11:/linux/mipsel on /ex type nfs (rw,v2,rsize=8192,wsize=8192,hard,udp,nolock,addr=192.168.0.11)
   % cp /ex/etc/ld.so.conf /etc
   % mv /lib /lib.sv
   % ln -s /ex/lib /lib
   % ln -s /ex/usr/lib /usr/lib
   % ln -s /ex/usr/include /usr/include
   % PATH="$PATH:/ex/bin:/ex/usr/bin:/ex/sbin"
   % which gcc
   /ex/usr/bin/gcc
   % gcc -v
   Reading specs from /ex/usr/bin/../lib/gcc-lib/mipsel-redhat-linux/2.96/specs
   gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-99.1)
   % mount -o remount,rw /
   
これで環境は完成です。

コンパイルとデバッグのテスト

実際にn-cardでプログラムのコンパイルとデバッグを行ってみます。 /tmpに移動し、hello.cをviで入力します。

   % cd /tmp
   % ls
   hello.c
   % cat hello.c 
   #include 
   
   int main()
   {
	int i;
	for(i=0;i<5;i++)
		printf("Hello %d.\n",i);
   }
   % gcc -o hello hello.c
   % ls -l
   -rwxr-xr-x    1 root     root        17303 Jan  1 00:10 hello
   -rw-r--r--    1 root     root           88 Jan  1 00:10 hello.c
   % ./hello
   Hello 0.
   Hello 1.
   Hello 2.
   Hello 3.
   Hello 4.
   % gcc -o hello -g hello.c
   % gdb hello
   GNU gdb Red Hat Linux 7.x (5.0rh-12.6) (MI_OUT)
   Copyright 2001 Free Software Foundation, Inc.
   GDB is free software, covered by the GNU General Public License, and you are
   welcome to change it and/or distribute copies of it under certain conditions.
   Type "show copying" to see the conditions.
   There is absolutely no warranty for GDB.  Type "show warranty" for detail2s.
   This GDB was configured as "mipsel-redhat-linux"...
   (gdb) list
   1	#include 
   2	
   3	int main()
   4	{
   5		int i;
   6		for(i=0;i<5;i++)
   7			printf("Hello %d.\n",i);
   8	}
   (gdb) b main
   Breakpoint 1 at 0x4007a4: file hello.c, line 6.
   (gdb) run
   Starting program: /mnt/rw/tmp/hello 

   Breakpoint 1, main () at hello.c:6
   6		for(i=0;i<5;i++)
   (gdb) n
   7			printf("Hello %d.\n",i);
   (gdb) 
   Hello 0.
   6		for(i=0;i<5;i++)
   (gdb) 
   7			printf("Hello %d.\n",i);
   (gdb) 
   Hello 1.
   6		for(i=0;i<5;i++)
   (gdb) 
   7			printf("Hello %d.\n",i);
   (gdb) 
   Hello 2.
   6		for(i=0;i<5;i++)
   (gdb) 
   7			printf("Hello %d.\n",i);
   (gdb) 
   Hello 3.
   6		for(i=0;i<5;i++)
   (gdb) c
   Continuing.
   Hello 4.

   Program exited normally.
   (gdb) q
   

この通り n-card上で、コンパイルとデバッグができました。 動作は若干遅いですが、一応使用できます。


$Id: tail.rep,v 1.1 2003/10/06 02:27:45 nari Exp $