SoEZ

学习使用SkyEye仿真

0
阅读(3163)

SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。

以下操作均在Fedora Core 1.0里通过。

Skyeye项目资源列表
http://gro.clinux.org/projects/skyeye/


文档摘要:
1、什么是SkyEye?
2、SkyEye可以做什么事情?
3、安装SkyEye
4、安装arm-elf交叉编译器
5、测试你的arm-elf-gcc编译器
6、执行你的hello程序
7、一个应用程序的开发实例
8、编译并运行uClinux-dist-20030909.tar.gz
9、加入网络功能
10、安装完成SkyEye后,下一步将做什么?


1、什么是SkyEye?

SkyEye是开源软件的一个项目,SkyEye的目标是在Linux和Windows操作系统里提供一个完全的仿真环境。SkyEye仿真环境相当于一个嵌入式计

算机系统,你可以在SkyEye里运行一些嵌入式Linux操作系统,如ARMLinux,uClinux,uc/OS-II(ucos-ii)等,并能分析和调试它们的源代码。

如果你想知道关于SkyEye和嵌入式系统更详细的信息,请访问下面的站点:
www.SkyEye.org
http://www.skyeye.org/index_cn.html

通过SkyEye能仿真下面的硬件:
CPU核心:ARM7TDMI, ARM720T, ARM9, StrongARM, XScale
CPU: Atmel AT91/X40, Cirrus CIRRUS LOGIC EP7312, Intel SA1100/SA1110, Intel XScale PXA 250/255, CS89712, samsung 4510B,

samsung 44B0(还不全)
内存: RAM, ROM, Flash
周边设备: Timer, UART, ne2k网络芯片, LCD, 触摸屏等

目前能在SkyEye上运行下面的操作系统和系统软件:
uC/OSII-2.5.x(支持网络)
uClinux(基于Linux2.4.x内核, 支持网络)
ARM Linux 2.4.x/2.6.x
lwIP on uC/OSII
基于uC/OSII, uClinux, ARM Linux的应用程序


2.SkyEye可以做什么事情?
1. 通过SkyEye可以帮助促进嵌入式系统的学习,在不需要额外硬件的情况下学习和分析uclinux操作系统和其它嵌入式操作系统,如ucosII等


2. SkyEye可用于嵌入式系统的教学。
3. 希望通过skyeye促进操作系统的研究,如ucosII,uclinux+RTAI,uclinux2.5.x等。
4. 可以基于SkyEye进行仿真特定硬件模块的研究。
5. SkyEye可以作为嵌入式集成开发环境开发嵌入式系统(当然需要对SkyEye做大量的工作)。
注:引自陈渝《SkyEye Project FAQ》


3、安装SkyEye

http://gro.clinux.org/projects/skyeye/下载skyeye-0.7.0.tar.bz2包:

tar jxvf skyeye-v0.7.0.tar.bz2

进入解压后的skyeye目录,如果SkyEye的版本低于0.6.0,则运行下面的命令:

./configure --target=arm-elf --prefix=/usr/local --without-gtk-prefix --without-gtk-exec-prefix --disable-gtktest

如果SkyEye的版本高于0.6.0,则运行下面的命令:

./configure --target=arm-elf --prefix=/usr/local

接下来执行:

make
make install

安装完成后执行skyeye

注意:
a.如果你使用的是Mandrake Linux发行版,那么你在编译SkyEye时遇到错误,并且错误与readline, ncurse, termcap等有关,你可以试试下面

的方法:

ln -s /usr/include/ncurses/termcap.h /usr/local/include/termcap.h

接着再make和make install看能否成功!
b.如果你的Linux发行版是Debian Linux,那么不要使用gcc 2.95或是gcc 3.0,请使用gcc 3.2+
c.gcc的版本要在2.96或以上
d.如果SkyEye的版本大于0.6.0,那么使用LCD仿真需要在Linux系统里安装GTK软件。


4、安装arm-elf交叉编译器

下载arm-elf-tools-20030314.sh
ftp://166.111.68.183/pub/embed/uclinux/soft/tools/arm
或到
ftp://166.111.8.229/OS/Embeded

执行:
chmod a+x arm-elf-tools-20030314.sh
然后:
./arm-elf-tools-20030314.sh

ls /usr/local/bin/

你应能看到以arm-elf开头的可执行文件,其中arm-elf-gcc就是用来编译你目标平台的编译器的,当然还有一些小工具,后面将一一讲来。


5、测试你的arm-elf-gcc编译器

先写一个小程序hello.c

PHP 代码:
#i nclude <stdio.h>

int main(void)
{
    int i;

    for(i = 0; i < 6; i++){

        printf("i = %d  ",i);

        printf("Hello, embedded linux!\n");
    }

    return 0;
}

然后执行:

arm-elf-gcc -Wl,-elf2flt -o hello hello.c

-elf2flt参数是将elf文件格式转为flat文件格式,这个工具是在你安装交叉编译器产生的。

或者你可以写个Makefile文件,执行:

make

这里是我的Makefile文件,仅供参考:

PHP 代码:
# begin

CC = arm-elf-gcc

CFLAGS = -D__PIC__ -fpic -msingle-pic-base -O2 -pipe -Wall -g
LDFLAGS = -Wl,-elf2flt

LIBS =
OBJS = hello.o

all:    hello

hello:  $(OBJS)
        $(CC) $(CFLAGS) $(LDFLAGS) -o hello $(OBJS) $(LIBS)

clean:
        rm -rf *.o *.elf *.gdb hello

# end

如果编译通过,就会产生hello可执行文件。用下面的命令:

file hello

你会发现,它是BFLT(binary FLAT),你目标平台所支持的文件格式。


6、执行你的hello程序

这里,我们将借助genromfs这个小工具来完成测试,这个工具就是你在安装交叉编译器时产生的,你可以直接使用它。

http://gro.clinux.org/projects/skyey...-1.0.4.tar.bz2包:

tar jxvf skyeye-binary-testutils-1.0.4.tar.bz2

cd testsuits/at91/uclinux2(当然你还可以用别的)

mkdir romfs(建一个目录,后面用)

mount -o loop boot.rom /mnt/xxx

cp -r /mnt/xxx/* romfs

另外,把你编译好的可执行程序拷贝到/romfs/bin目录里,这里就是hello了!

genromfs -f boot.rom -d romfs/

注:可以用genromfs -h来获得帮助!

OK!执行下面的命令:

skyeye linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

很熟悉了吧。。。

cd /bin

hello

可以看到结果了吗?

其实到了这一步,你就可以开发自己的程序了!


7、一个应用程序的开发实例

下面介绍的程序主要是完成一个网络应用,网络应用的标准模型是客户机-服务器模型,它的主要执行过程如下:
(1)系统启动服务器执行。服务器完成一些初始化操作,然后进入睡眠状态,等待客户机请求;
(2)在网络的某台机器上,用户执行客户机程序;
(3)客户机进程与服务器进程建立一条连接;
(4)连接建立之后,客户机通过网络向服务器发出请求,请求某种服务;
(5)服务器接收到客户机请求后,根据客户机请求的内容进行相应的处理,然后将处理结果返回;
(6)服务器断开与客户机的连接,继续睡眠,等待其他客户机的请求;

Linux系统中的很多服务器是在系统初启时启动的,如时间服务器、打印服务器、文件传输服务器和电子邮件服务器等。大多数时间这些服务器

进程处于睡眠状态,等待客户机的请求。

下面这两个客户机-服务器程序比较简单,主要是对网络客户机-服务器模型的实际运行有大致印象。这个客户机-服务器的操作过程非常简单:

客户机与服务器建立连接之后,服务器向客户机返回一条消息。

服务器程序的源代码如下:

PHP 代码:
/* tcpserver.c */
#i nclude <stdlib.h>
#i nclude <stdio.h>
#i nclude <errno.h>
#i nclude <string.h>
#i nclude <netdb.h>
#i nclude <sys/types.h>
#i nclude <netinet/in.h>
#i nclude <sys/socket.h>

#define WAITBUF 10

int main(int argc, char *argv[])
{
    int sockfd, new_fd;
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    unsigned int sin_size, portnumber;
    char hello[]="Hello! Socket communication world!\n";

    if(argc != 2)
    {
        fprintf(stderr, "Usage:%s portnumber\a\n", argv[0]);
        exit(1);
    }

    if((portnumber = atoi(argv[1])) < 0)
    {
        fprintf(stderr, "Usage: %s portnumber error\a\n", argv[0]);
    }

    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        fprintf(stderr, "Socket error:%s\n\a", strerror(errno));
        exit(1);
    }

    bzero(&server_addr, sizeof(struct sockaddr_in));
    server_addr.sin_family = AF_INET;

    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    server_addr.sin_port = portnumber;

    if(bind(sockfd,(struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)
    {
        fprintf(stderr, "Bind error:%s\n\a", strerror(errno));
        exit(1);
    }

    if(listen(sockfd, WAITBUF) == -1)
    {
        fprintf(stderr, "Listen error:%s\n\a", strerror(errno));
        exit(1);
    }

    while(1)
    {
        sin_size = sizeof(struct sockaddr_in);
        if((new_fd = accept(sockfd, (struct sockaddr *)(&client_addr), &sin_size)) == -1)
        {
            fprintf( stderr, "Accept error:%s\n\a", strerror(errno));
            exit(1);
        }
        fprintf(stderr, "Server get connection from %s\n", inet_ntoa(client_addr.sin_addr));
        if(send(new_fd, hello, strlen(hello), 0) == -1)
        {
            fprintf(stderr, "Write Error:%s\n", strerror(errno));
            exit(1);
        }

        close(new_fd);
    }
    close(sockfd);
    exit(0);
}


给服务器程序写一个Makefile文件,如下:

PHP 代码:
# start

CC = arm-elf-gcc

CFLAGS = -D__PIC__ -fpic -msingle-pic-base -O2 -pipe -Wall -g
LDFLAGS = -Wl,-elf2flt

LIBS =
OBJS = tcpserver.o

all:    tcpserver

tcpser:  $(OBJS)
    $(CC) $(CFLAGS) $(LDFLAGS) -o tcpserver $(OBJS) $(LIBS)

clean:
    rm -rf *.o *.elf *.gdb hello

# end


客户机程序的源代码如下:

PHP 代码:
/* tcpclient.c */
#i nclude <stdlib.h>
#i nclude <stdio.h>
#i nclude <errno.h>
#i nclude <string.h>
#i nclude <netdb.h>
#i nclude <sys/types.h>
#i nclude <netinet/in.h>
#i nclude <sys/socket.h>

#define RECVBUFSIZE 1024

int main(int argc, char *argv[])
{
    int sockfd;
    char buffer[RECVBUFSIZE];
    struct sockaddr_in server_addr;
    int portnumber, nbytes;
    
    if(argc != 3)
    {
        fprintf(stderr, "Usage:%s hostname portnumber\a\n", argv[0]);
        exit(1);
    }

    if((portnumber=atoi(argv[2])) < 0)
    {
        fprintf(stderr,"Usage:%s hostname portnumber\a\n", argv[0]);
        exit(1);
    }
    
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        fprintf(stderr, "Socket Error:%s\a\n", strerror(errno));
        exit(1);
    }
    
    bzero(&server_addr, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = portnumber;
    server_addr.sin_addr.s_addr = inet_addr(argv[1]);
    
    if(connect(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1)
    {
        fprintf(stderr, "Connect Error:%s\a\n", strerror(errno));
        exit(1);
    }
    
    if((nbytes = recv(sockfd, buffer, RECVBUFSIZE, 0)) == -1)
    {
        fprintf(stderr, "Read Error:%s\n", strerror(errno));
        exit(1);
    }
    buffer[nbytes]='\0';
    printf("I have received:%s\n", buffer );
    close(sockfd);
    exit(0);
}


最后,skyeye-binary-testutils-1.1.0.tar.bz2/at91x40/uclinux1包里提取boot.rom,用步聚6中的方法,把tcpserver程序放在boot.rom的

bin目录中

在目标板上运行tcpserver 2000

在主机上运行./tcpclient 10.0.0.2 2000

看看结果!

程序的源码的注释因篇幅不在这给出,大家可以参考一些Linux网络编程的书籍,我也会在我的主页上更新一些资料,有需要的朋友可以去下载


8、编译并运行uClinux-dist-20030909.tar.gz

ftp://166.111.68.183/pub/embed/uclinux/soft/
或到ftp://166.111.8.229/OS/Embeded/uclinux/pub/uClinux/dist下载
uClinux-dist-20030909.tar.gz

假设把它下载到/usr/src/目录下,然后依次执行下面的命令:

tar zxvf uClinux-dist-20030909.tar.gz
cd uClinux-dist/

在图形方式下可用命令make xconfig

在命令行方式下用命令make menuconfig

vendor/product中选择GDB/ARMulator
kernel版本选择2.4
然后save and exit

运行下面这两条命:
make dep
make

此时在/usr/src/uClinux-dist/linux-2.4.x目录下会生成可执行文件linux
在/usr/src/uClinux-dist/images/会生成romfs.img等文件

在uClinux-dist目录下建立仿真AT91的skyeye配置文件skyeye.conf,内容如下:
cpu: arm7tdmi
mach: at91
mem_bank: map="M", type="RW", addr="0x00000000", size="0x00004000"
mem_bank: map="M", type="RW", addr="0x01000000", size="0x00400000"
mem_bank: map="M", type="R", addr="0x01400000", size="0x00400000", file="images"/romfs.img
mem_bank: map="M", type="RW", addr="0x02000000", size="0x00400000"
mem_bank: map="M", type="RW", addr="0x02400000", size="0x00008000"
mem_bank: map="M", type="RW", addr="0x04000000", size="0x00400000"
mem_bank: map="I", type="RW", addr="0xf0000000", size="0x10000000"


这个时候就可以用skyeye来调试运行kernel了,在/usr/src/uClinux-dist执行如下命令:

skyeye linux-2.4.x/linux

(skyeye)target sim

(skyeye)load

(skyeye)run

kernel start.....

注意:
要在skyeye.conf所在目录下执行skyeye linux-2.4.x/linux


9、加入网络功能
a.用root用户进行操作。
b.你要看你的/lib/modules/'uname -r'/kernel/drivers/net/目录里有没有tun.o
如果没有的话你就需要编译你的linux内核来获得tun.o了。
c.(1)运行tun设备模块:

#insmod /lib/modules/'uname -r'/kernel/drivers/net/tun.o

如果你没有该设备,那你就要用下面的命令来创建它:

#mkdir /dev/net
#mknod /dev/net/tun c 10 200

(2)运行vnet(虚拟集线器)设备模块(这一步不是必需的):
获取vnet的源码,然后创建设备:

#mknod /dev/net/vnet c 10 201
#chmod 666 /dev/net/vnet

创建vnet.o
#make vnet.o

插入模块vnet.o
#insmod vnet.o

进入test目录,用test来测度vnet.o
#cd test
#make
#./testvnet1

d.配置skyeye.conf文件

cpu: arm7tdmi
mach: at91
mem_bank: map="M", type="RW", addr="0x00000000", size="0x00004000"
mem_bank: map="M", type="RW", addr="0x01000000", size="0x00400000"
mem_bank: map="M", type="R", addr="0x01400000", size="0x00400000", file="images"/romfs.img
mem_bank: map="M", type="RW", addr="0x02000000", size="0x00400000"
mem_bank: map="M", type="RW", addr="0x02400000", size="0x00008000"
mem_bank: map="M", type="RW", addr="0x04000000", size="0x00400000"
mem_bank: map="I", type="RW", addr="0xf0000000", size="0x10000000"
# format: state="on"/off mac="xx":xx:xx:xx:xx:xx ethmod="tuntap"/vnet hostip="dd".dd.dd.dd
net: state="on", mac="0":4:3:2:1:f, ethmod="tun", hostip="10".0.0.1


下面将对上面的一些参数作下说明:
state=on/off意思是仿真的NIC(网络接口板)是有线的还是无线的;
mac=仿真适配器的MAC地址;
ethmod=tuntap/vnet在主机环境里使用的虚拟设备;
hostip=意思是主机环境与keyeye交互用的IP
格式: state="on"/off mac="xx":xx:xx:xx:xx:xx ethmod="tuntap"/vnet hostip="dd".dd.dd.dd

For example:
#set nic info state="on"/off mac="xx":xx:xx:xx:xx:xx ethmod="tuntap"/vnet hostip="dd".dd.dd.dd
net: state="on", mac="0":4:3:2:1:f, ethmod="tun", hostip="10".0.0.1

net: state="on", mac="0":4:3:2:1:f, ethmod="vnet", hostip="10".0.0.1

注意:
如果你想在同一时刻运行两个或更多的skyeye,那么请为每一个skyeye使用不同的skyeye.conf

e.运行skyeye linux-2.4.x/linux

10、安装完成SkyEye后,下一步将做什么?

1、对于嵌入式操作系统的初学者和入门者和入门的学生而言,他们可以先看一些有关操作系统和嵌入式操作系统方面的教材和书籍,如与

uC/OS、Minix、uClinux、Linux相关的书籍等。然后可以在Skyeye上开发一些简单的应用程序例子(如进程间通信、进程优先级、死锁情况、网

络应用等),对某些操作系统功能(如进程调度、内存管理、网络子系统、文件子系统等)进行简单的修改和扩展,并通过Skyeye进行运行和调试

,看看会发生什么情况。

2、对于有一定经验的软件工程师而言,在SkyEye上完成一定的应用系统原型开发是值得一做的事情。比如移植或开发一个文件子系统或网络子

系统到一个特定的操作系统中,相信比在一个真实的开发板上开发要容易一些。在Skyeye上进行一些操作系统的移植和开发(如移植RTLinux、

RTAI等其它操作系统到Skyeye上)也是很有挑战性的工作。

3、对于硬件工程师而言,对Skyeye进行扩充,设计新的硬件仿真(如USB、IDE硬盘等)使得Skyeye的硬件仿真功能更加强大,支持更多功能的软

件,是很有意义的事情。

参考:
SkyEye项目站点里的一篇中文文档;
陈渝《SkyEye Project FAQ》;
skyeye-0.7.0中的README文档。

后记:
为了让大家能快速上手,进行实际的开发工作,我赶凑了一篇文档,很粗糙。但我坚信随着更多的有经验的人的加入;随着我们自己水平的提

高,一定会出现更多、更好的文章来。就让我们快点行动起来吧!

最后,我再次建议大家看一下《嵌入式Linux技术与应用》这本书。

可以到http://www.skyeye.org/document.htm或是
ftp://166.111.68.183/pub/embed/skyeye/document/或是
http://www.huihoo.org/mirrors/skyeye/
下载文档,可以获得更多有关skyeye和嵌入式Linux开发的知识和经验。

网络部分没有完全解决,现在只是主机与skyeye间的网卡行了,而uClinux内的网卡没成,我觉得是不是要重新编译uClinux的内核,请大家指教。

这个文档不算完整,但还是贴上来了,大家一起讨论吧。我觉得SkyEye仿真环境很好,这个贴子就算是个引子吧,大家可以先从这个地方入手。
如果大家有什么好的资料也尽可能的传上来,与大家分享!!!

附件有一篇陈渝写的《Skyeye Project FAQ》我也一并贴上来,大家可以看看。

上传的附件 skyeyefaq.tar.bz2 (6.9 KB, 385 次查看)

 
uClinux make不了。。。。
照着贴子弄的
uClinux在make dep后make时就出错
make[1]: arm-elf-gcc: Command not found
 
 
 


可能需要安装arm-elf交叉编译器,到
ftp://166.111.68.183/pub/embed/uclinux/soft/tools/arm
或到
166.111.8.229/OS/Embeded
下载arm-elf-tools-20030314.sh

执行一下:
chmod a+x arm-elf-tools-20030314.sh
然后:
./arm-elf-tools-20030314.sh

感谢兄弟测试,这个工具是把gcc编译的文件格式转换成uCLinux可执行的文件格式flat用的。
 
tun1.1不知 这个对大家有用否
我在debian下安装没问题,但是fedora下通不过
[~/tun-1.1] ./configure
loading cache ./config.cache
checking host system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
checking for gcc... (cached) gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gawk... (cached) gawk
checking for a BSD compatible install... (cached) /usr/bin/install -c
creating ./config.status
creating Makefile
configuring in linux
running /bin/sh ./configure --cache-file=.././config.cache --srcdir=.
loading cache .././config.cache
checking for gcc... (cached) gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for kgcc... gcc
checking for gawk... (cached) gawk
checking for a BSD compatible install... (cached) /usr/bin/install -c
configure: error: Linux kernel /usr/src/linux is not configured
configure: error: ./configure failed for linux
[~/tun-1.1]

我想这个东西是不是可以解决网卡的问题?

下面是安装程序
上传的附件 tun-1.1.tar.gz (86.0 KB, 20 次查看)

 
兄弟到/usr/src里做个链接试试
ln -s linux-x.x.x linux

后面有句提示是按/usr/src/linux来找内核的:
configure: error: Linux kernel /usr/src/linux is not configured
你先确定你的/usr/src目录里有没有linux目录

 

谢谢,可是确实连了
ln -s linux-2.4.22-1.2115.nptl linux

是不是linux-2.4.22-1.2115.nptl 不是源代码文件?

 

不是的,你可以去改configure文件,找到(一般在前面)内核路径,把linux改为你真实的内核路径,作用是一样的。

 

请兄弟们一块弄一下在SkyEye里加入网络功能。仔细阅读附件文档,我大致翻译了一下:

在Skyeye仿真平台的uClinux操作系统里使用8012AS(NE2k comptible)网络适配器指南

2003-08-01
陈渝

注意:在uClinux-dist-20020816,20030305,20030522里已经通过测试的,能够支持nfs客户端,ftp客户端/服务器,telnet客户端/服务器,请使用最新的uClinux-dist-xxxx!

我们给uClinux加一个ne2k的网络设备驱动,这样运行在Skyeye里的uClinux就具有网络功能了。

2a.第一种方法很简单:
拷贝examples/uclinux-dist-xxxx/*到uclinux-dist-xxxx's版本目录
进到uClinux-dist目录里
拷贝vendors__GDB__ARMulator/*到vendors/GDB/ARMulator
拷贝linux-2.4.x__drivers__net/*到linux-2.4.x/drivers/net/


2b.第二种方法:
2b1.加一些东西到下面的文件里
选择文件
-------------------------------
uClinux-dist/vendors/GDB/ARMulator/config.vendor-2.4.x
……
(加入一些选项)
uClinux-dist/vendors/GDB/ARMulator/config.vendor-2.4.x文件里有以下句子
CONFIG_NET=y
CONFIG_NET_ETHERNET=y
CONFIG_SKYEYENE2k=y

(如果你想使用NFS,那么你将要把NFS项加进去)

uClinux-dist/linux-2.4.x/drivers/net/Makefile文件里加上以下句子
obj-$(CONFIG_NET) += Space.o setup.o net_init.o loopback.o
obj-$(CONFIG_SKYEYENE2k) += skyeyene2k.o

uClinux-dist/linux-2.4.x/drivers/net/Config.in文件里有以下句子
if [ "$CONFIG_NET_ETHERNET" = "y" ]; then
#chy 2003-02-18
#add for skyeye
if [ "$CONFIG_ARCH_ATMEL" = "y" ]; then
tristate ' SkyEye ne2k ethernet support(for ARMUlator)' CONFIG_SKYEYENE2k
fi

2b2.把skyeyene2k.[ch]文件加到uClinux-dist/linux-2.4.x/drivers/net/,然后为gdb/armulator创建uclinux。

你不能使用默认的内核配置,那么在最下面的四个选择中,将第二个选项选为“Y”,即:定制内核设置,接下来选择“保存退出”,这样会出现一些选项让你选,其中以下选项为真

Network device support-->Ethernet (10 or 100Mbit)
SkyEye ne2k ethernet support(for ARMUlator)'

3.运行uclinux
注意:请读下ucosii/installguide.txt安装skyeye和tun.o
你将把文件“skyeye.conf”放到你的工作目录里。你也能给不同的网络选项选择skyeye.conf,例如:

net: state="on", mac="0":4:3:2:1:f, ethmod="tuntap", hostip="10".0.0.1

state=on/off : means the nic is connectd or not on skyeye when uclinux running
mac=xx:xx:xx:xx:xx:xx : means the nic's mac addr
ethmod=tuntap/vnet : means the host's virtual net device method used by skyeye
hostip=dd.dd.dd.dd : means the host's virtual ip addr uesed by skyeye

现在uclinux4skyeye能ping主机系统,并且主机系统也能ping uclinux4skyeye。
如果你的uclinux4skyeye和skyeye编译并安装成功,那么试试以下的命令。
在一个linux终端下,你使用root用户。运行:

inmod tun.o

然后:

#skyeye linux-2.4.x/linux
>target sim
>load
>run
.....

>ifconfig eth0 10.0.0.2 //如果你使用uClinux-20020816或以下的版本

...

在另一个终端输入:

$/sbin/ifconfig

你将会发现一个网络设备tap0 10.0.0.1

$ping 10.0.0.2

然后你能看到一些信息……

或你能用root,guest,bin,nobody等用户试试telnet命令,所有的用户都不用密码。

$telnet 10.0.0.2
.....

nfs -t nfs 10.0.0.1/target /var/log
.....

做一下参考吧,从文档中可以看出,要是配置uClinux的内核,主要与vendors/GDB/ARMulator里的文件有关,这下就明白了在 选择内核配置选项时为什么选择“GDB/ARMulator”了。当然如果你在选择了别的,那么就在vendors目录里找相应的目录即可。


我还没有通过,主要出现以下错误:
make[3]: Entering directory `/usr/src/uClinux-dist/linux-2.4.x/scripts'
cat header.tk >> ./kconfig.tk
./tkparse < ../arch/armnommu/config.in >> kconfig.tk
-: 222: unknown define_bool value
make[3]: *** [kconfig.tk] Error 1
make[3]: Leaving directory `/usr/src/uClinux-dist/linux-2.4.x/scripts'
make[2]: *** [xconfig] Error 2
make[2]: Leaving directory `/usr/src/uClinux-dist/linux-2.4.x'
make[1]: *** [linux_xconfig] Error 2
make[1]: Leaving directory `/usr/src/uClinux-dist'
make: *** [xconfig] Error 2


我的uClinux-dist是20030909的,uClinuxskyeye是20030522的。

./tkparse < ../arch/armnommu/config.in >> kconfig.tk
这个脚本是什么意思,我看到tkparse是一个二进制文件。

是不是版本不一样的过,还请大家指教,先谢过了!

上传的附件 installguide.txt (3.1 KB, 67 次查看)
 


--------------------------------------------------------------------------------
此帖于 04-05-24 12:27 被 renbagshoes 编辑.

感谢版主的辛勤工作!

--------------------------------------------------------------------------------

 


感谢版主对SkyEye的大力支持!
SkyEye-0.7.3已经出了。对带MMU的CPU支持得更好了。
大家可以试试!
 
skyeye-testsuit-1.0.x中有关at91的编译好的内核和filesystem已经有支持网络的功能,可以试试!

 

文档已经更新,现在你可以用Skyeye进行程序开发了。这里用了一种变通的方法,详情可阅读文档。

网络虽然成了,但是通过网络传上去的执行文件总不能正确编译,现在还在弄着,希望大家能把自己的开发经验写出来,在这里表示感谢!
--The error info above mean that you need to configure the source tree

--------------------------------------------------------------------------------
----------------------------------------------------------------------
checking for gawk... (cached) gawk
checking for a BSD compatible install... (cached) /usr/bin/install -c
configure: error: Linux kernel /usr/src/linux is not configured
configure: error: ./configure failed for linux
[~/tun-1.1]

我想这个东西是不是可以解决网卡的问题?

下面是安装程序
------------------------------------------------------------------------

这个需不需要安装图形库?
我的rh只有文本模式 

ps:有没有图形化的?

怎么挂不上那个boot.rom阿
提示说kernel不认识romfs这个类型的设备。。。

我在装Skyeye的时候出现以下错误,请问怎么解决?
我的GTK+-2.4.7安装的时候也是用源码装的,装在默认的
/usr/local目录下, pkg-config在/usr/local/lib/pkgconfig下,
我还要设置什么才能编译成功?
谢谢.

...............
checking for executable suffix... (cached) no
checking for unistd.h... (cached) yes
checking for gtk-config... /usr/bin/pkg-config
checking for GTK - version >= 1.1.3... Must specify package names on the command line
Must specify package names on the command line
no
*** Could not run GTK test program, checking why...
*** The test program failed to compile or link. See the file config.log for the
*** exact error that occured. This usually means GTK was incorrectly installed
*** or that you have moved GTK since it was installed. In the latter case, you
*** may want to edit the gtk-config script: /usr/bin/pkg-config
configure: error: Cannot find GTK: Is gtk-config in path?
configure: error: ./configure failed for arm
Configure in /home/dreamwaylai/skyeye/sim failed, exiting.

 

skyeye-0.8.5.1 发布!
一个配合skyeye的IDE环境(skyeye-0.8.5.1+insight-0.5.3)也发布了!
欢迎下载!
http://gro.clinux.org/frs/download.p...ht-0.8.5.1.tar
http://gro.clinux.org/frs/download.p....8.5.1.tar.bz2

演示视频可到下面下载:
http://gro.clinux.org/frs/download.p...ovideo.tar.bz2

 

运行出错如下,

(SkyEye) target sim
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name at91, mach_init addr 0x8161460
nic[0] info: state="1", ethmod num="1", mac addr="0":4:3:2:1:f, hostip="10".0.0.1
log_info: log is off.
log_info:log file is /tmp/test.log, fd is 0x82a6118
log_info: log start clock 3200000
log_info: log end clock 3330000
nic_init_begin
tapif_init begin
tapif_init: fd -1
tapif_initpen: 没有那个文件或目录