使用SkyEye仿真

全数字实时仿真平台SkyEye实现了与虚拟FPGA协同仿真 1. 可与虚拟FPGA的协同仿真 全数字实时仿真平台SkyEye实现了与虚拟FPGA的协同仿真,可以支持UVM的验证方法。虚拟的FPGA通过协同仿真总线与SkyEye相连,用户可以自主的控制仿真运行速度,提高较大规模嵌入式系统的测试效率。SkyEye本身是多架构的功能级别仿真平台,且有丰富的调试功能,可以对多核的嵌入式系统进行调试。 2. 基于可视化图形的硬件建模 基于可视化图形的硬件建模,有效降低了硬件工程师和软件工程师之间的沟通成本。软件工程师可以不依赖于硬件工程师,而根据需要对硬件的配置进行改动。通 阅读详情
 

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

#include <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文件,仅供参考:

# 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系统中的很多服务器是在系统初启时启动的,如时间服务器、打印服务器、文件传输服务器和电子邮件服务器等。大多数时间这些服务器进程处于睡眠状态,等待客户机的请求。下面这两个客户机-服务器程序比较简单,主要是对网络客户机-服务器模型的实际运行有大致印象。这个客户机-服务器的操作过程非常简单:客户机与服务器建立连接之后,服务器向客户机返回一条消息。服务器程序的源代码如下:

/* tcpserver.c */
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <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文件,如下:

# 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

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

/* tcpclient.c */
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <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技术与应用》这本书。网络部分没有完全解决,现在只是主机与skyeye间的网卡行了,而uClinux内的网卡没成,我觉得是不是要重新编译uClinux的内核,请大家指教。

这个文档不算完整,但还是贴上来了,大家一起讨论吧。我觉得SkyEye仿真环境很好,这个贴子就算是个引子吧,大家可以先从这个地方入手。

skyeye仿真工具的使用 skyeye仿真工具的使用 过程详细 立即下载

相关推荐

skyeye硬件模拟平台

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

2024年最全细数SkyEye异构仿真的5大特色_同构仿真和异构仿真,腾讯架构师首发

SkyEye提供的协同仿真总线,能够将多个目标系统和虚拟的FPGA通过自定义的接口联系起来,进行统一管理,保证时间同步和数据同步,并且可以自主的控制仿真运行速度,提高较大规模嵌入式系统的测试效率。在SkyEye中存在仿真模型层,其他类型的仿真平台或matlab动力学模型通过协同仿真工具的模型适配层与SkyEye的仿真模型层连接在一起,从而进行多平台或多模型的协同仿真,且能够保证时间同步和数据同步。大规模的异构系统的测试,难度在于环境构建,一是数量众多,二是关系复杂,构建物理环境时难免出错。

2401_84910911的博客 447

LPDDR4x 深度解析(3) - SDRAM核心操作机制

本文深入解析LPDDR4x SDRAM的核心操作机制,包括基础架构、刷新操作、读写流程及低功耗设计。详细介绍了存储阵列、地址解码器等关键模块,以及自刷新与自动刷新模式的区别。通过实测数据和技术细节,揭示LPDDR4x在性能优化和功耗控制方面的创新设计,为硬件工程师提供实用参考。

weixin_29278805的博客 308

嵌入式系统实时仿真解决方案SkyEye

SkyEye介绍 SkyEye,中文全称天目全数字实时仿真软件,应用软件仿真技术,逼真地模拟出被测软件的物理环境。用图形化方式构建虚拟目标系统,有效降低了硬件工程师和软件工程师之间的沟通成本,软件工程师可以不依赖硬件工程师,根据需求对虚拟硬件的配置进行改动,并可以在虚拟硬件模型上运行与真实硬件相同的二进制文件,可以大大缩短产品研发周期,提高软件测试效率。 功能 更灵活快速的虚拟目标系统搭建–通过可视化图形界面拖拽虚拟硬件组件快速搭建 仿真状态可控性、确定性和重复性–在虚拟系统上运行的二进制文件与实际目标

digiproto2020的博客 794

如何判断一个程序员的技术比你强?

技术大佬与普通程序员之间存在明显的认知差异:前者善于将复杂问题抽象为经典计算机科学问题,用声明式代码替代过程式逻辑;对异常和边界条件极度敏感,具备系统化的排查方法论;代码追求高可读性而非炫技,且执着于底层原理研究。这种技术压制体现在解决问题的确定性上——通过扎实的理论功底和工程直觉,快速定位问题本质,而非依赖试错或搜索。真正的技术实力源于对底层逻辑的深刻理解和对系统稳定性的敬畏。

wldtzzming的专栏 1088

Verilog的综合指令

Synopsys综合指令

烟花一时的博客 5445

学习和使用skyeye

其实想学习某种技术不一定非要买到环境,网络中就有很多现成的模拟环境给我们使用,以前是我从linuxsir中转过来的,原来的文章中有点错误,我改了一下!实在懒得写太多,就转一下,呵呵!SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。CODE:[Copy to clipboard]以下操作均在Fedora Core 1.0里通过。这个是原作者的

neily的专栏 3043

UFS 3.1协议分析(第一至四章) -- UFS概述

Contents协议规范规范参考术语和定义简单概述通用特性接口特性功能特性 协议规范     UFS3.1协议规定了UFS电气接口和存储器件的特性以及系统架构。 特性:低功耗、高数据吞吐量、低电磁干扰、大容量存储器子系统效率的优化 电气接口:使用基于MIPI M-PHY的高级差分接口;M-PHY作为物理层,MIPI UniPro作为链路层,二者结合形成UFS接口的互联。 架构模型:参考 INCITS T10(SCSI) SAM 标准,命令协议基于 INCITS T1

Frank_sample的专栏 1万+

使用 QEMU 模拟器运行 FreeRTOS 实时操作系统

使用 QEMU 模拟器运行 FreeRTOS 实时操作系统。

心若有所向往,何惧道阻且长。 5314

告别手动操作!用Python脚本批量处理Siemens NX零件文件(导入/导出/移除参数)

本文详细介绍了如何利用Python脚本实现Siemens NX零件文件的批量处理,包括导入、导出和移除参数等操作。通过NX Open API和Python UF接口,工业设计师可以大幅提升工作效率,告别繁琐的手动操作。文章提供了完整的实战指南,涵盖环境配置、核心功能实现以及性能优化技巧,特别适合需要进行Siemens-NXUG二次开发的工程师参考。

weixin_28222493的博客 260

【华为OD机试真题 2025双机位A卷】958、 高效的任务规划 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025双机位A卷】958、 高效的任务规划 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,

KJ.JK 1071

学习使用SkyEye仿真

学习使用SkyEye仿真 SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。 以下操作均在Fedora Core 1.0里通过。 Skyeye项目资源列表 http://gro.clinux.org/projects/skyeye/ 文档摘要: 1、什么是SkyEye? 2、SkyEye可以做什么事情?

大江的专栏 897

TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate

这篇被 ICLR 2026 接收的论文提出了一种名为TurboQuant的全新在线向量量化(Vector Quantization, VQ)算法。该研究的核心目标是解决大语言模型(LLM)在长上下文推理时面临的 KV Cache 显存消耗瓶颈,以及大规模向量数据库在近似最近邻检索中的存储与延迟问题。有别于现有技术,TurboQuant 是一种无需任何校准数据、无需训练的在线算法(Data-oblivious)。

c_cpp_csharp的专栏 118

arm仿真器Skyeye的安装及使用

arm仿真器Skyeye的安装及使用    SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式系统,可在SkyEye上运行μCLinux以及μC/OS-II等,以及各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测...

richu123的专栏 1238

开关电源中的高频振荡噪声及其抑制方法

在开关电源的工作过程中,随着开关管的开关动作,电流和电压波形会出现剧烈的波动,尤其是在开关管切换的瞬间,往往会导致较强的过冲现象。开关电源中的高频振荡噪声是导致电磁兼容问题的主要源头之一,尤其是MOS管的通断和整流二极管的反向恢复过程中,会产生较强的高频振荡噪声。通过合理调节R和C的值,可以大大缓解高频振荡带来的EMC问题,从而有效提升电源的电磁兼容性。整流二极管反向恢复时的振荡会导致高频噪声产生,这些高频噪声源可被传导到电源的输出端,甚至可能通过电源的共地路径扩散到其他电路,影响系统的稳定性和可靠性。

硬核科技 1530

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

收藏:学习使用SkyEye仿真

SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。 以下操作均在Fedora Core 1.0里通过。 文档摘要: 1、什么是SkyEye? 2、SkyEye可以做什么事情? 3、安装SkyEye 4、安装arm-elf交叉编译器 5、测试你的arm-elf-gcc编译器 6、执行你的hello程序 7、编译并运行uClinux-dist-2

Jarod's Blog 4484

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

学习使用SkyEye仿真(转)

 学习使用SkyEye仿真 SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。以下操作均在Fedora Core 1.0里通过。文档摘要:1、什么是SkyEye?2、SkyEye可以做什么事情?3、安装SkyEye4、安装arm-elf交叉编译器5、测试你的arm-elf-gcc编译器6、执行你的hello程序7、编译并运行uClinux-d

JofeeDong's Blog 2860

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

skyeye linux qt,ARM仿真器SkyEye的安装及使用

SkyEye是一个开源软件(OpenSource Software)项目,中文名字是"天目"。SkyEye的目标是在通用的Linux和Windows平台上实现一个纯软件集成开发环境,模拟常见的嵌入式系统,可在SkyEye上运行μCLinux以及μC/OS-II等,以及各种系统软件(如TCP/IP,图形子系统,文件子系统等),并可对它们进行源码级的分析和测试。目前SkyEye可以模拟的CPU主要是基...

weixin_39636176的博客 264

学习使用SkyEye仿真[2005年08月03日更新]

导读:    SkyEye是一个可以运行嵌入式操作系统的硬件仿真工具,这样就可以在没有硬件条件下来进行嵌入式系统的开发。以下操作均在Fedora Core 1.0里通过。Skyeye项目资源列表http://gro.clinux.org/projects/skyeye/文档摘要:1、什么是SkyEye?2、SkyEye可以做什么事情?3、安装SkyEye4、安装arm-elf交叉编译器5、测试

xu的blog 1073
上一篇: Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载
下一篇: cvsnt 配置完以后一定要加个用户
vrix
博客等级 码龄24年 673粉丝 167原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值