ecos DM9000网卡在MINI2440 QEMU的测试

2023-10-06 22:08

本文主要是介绍ecos DM9000网卡在MINI2440 QEMU的测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(原创文章,欢迎转载,请注明出处,谢谢。)


1. 中断部分的修改

 

加入中断配置,严格按照原来的架构。

 

ricky@ricky-laptop:/opt/ecos/ecos-hg$ hg diff
diff -r 62c4efcc7b5b packages/devs/eth/arm/mini2440/current/include/mini2440_eth_driver.inl
--- a/packages/devs/eth/arm/mini2440/current/include/mini2440_eth_driver.inl    Mon Mar 14 23:13:43 2011 +0800
+++ b/packages/devs/eth/arm/mini2440/current/include/mini2440_eth_driver.inl    Tue Mar 15 17:17:37 2011 +0800
@@ -63,7 +63,8 @@
     mac_address: CYGDAT_DEVS_ETH_ARM_MINI2440_ETH0_ESA,
 #endif
     io_addr: (volatile unsigned char *)0x20000300,
-    io_data: (volatile unsigned char *)0x20000304
+    io_data: (volatile unsigned char *)0x20000304,
+    interrupt: CYGNUM_HAL_INTERRUPT_EINT4_7
 };
 
 ETH_DRV_SC(dm9000_sc0,
diff -r 62c4efcc7b5b packages/hal/arm/arch/current/src/vectors.S
--- a/packages/hal/arm/arch/current/src/vectors.S    Mon Mar 14 23:13:43 2011 +0800
+++ b/packages/hal/arm/arch/current/src/vectors.S    Tue Mar 15 17:17:37 2011 +0800
@@ -393,7 +393,7 @@
 
         LED 4
 
-#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM)
+#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM) ||defined(CYG_HAL_STARTUP_QEMU)
         // Set up reset vector
         ldr     r0,=CYGHWR_HAL_VECTOR_TABLE_BASE
         ldr     r1,.__exception_handlers
@@ -405,6 +405,8 @@
         str     r2,[r0,#HAL_ARM_RESET_VECTOR_ADDR]
 #  endif
 # endif
+#endif
+#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM)
         // Relocate [copy] data from ROM to RAM
         ldr     r3,.__rom_data_start
         ldr     r4,.__ram_data_start
diff -r 62c4efcc7b5b packages/hal/arm/arm9/mini2440/current/src/mini2440_misc.c
--- a/packages/hal/arm/arm9/mini2440/current/src/mini2440_misc.c    Mon Mar 14 23:13:43 2011 +0800
+++ b/packages/hal/arm/arm9/mini2440/current/src/mini2440_misc.c    Tue Mar 15 17:17:37 2011 +0800
@@ -307,6 +307,13 @@
     HAL_WRITE_UINT32(EXTINT0, 0x12222222);    // EINT[7:0]
     HAL_WRITE_UINT32(EXTINT1, 0x22222222);    // EINT[15:8]
     HAL_WRITE_UINT32(EXTINT2, 0x22222222);    // EINT[23:16]
+
+
+    //ENABLE EXTERN INT
+    //EINT DM9000 INT UNMASK
+    HAL_READ_UINT32(EINTMASK, reg);
+    reg &= (~(1<<7));
+    HAL_WRITE_UINT32(EINTMASK, reg);
 }


2. 网络测试

 

ecosconfig new mini2440 net

ecosconfig tree

make

 

make tests

 

在install目录里面的tests有网络部分的测试,但是ping_lo_test失败,感觉不太像我移植的错误。

 

我把ping_lo_test拉了出来重新编译,发现可以用了。

 

[cyg_net_init] Init: loopattach(0x00000000)
[cyg_net_init] Init: ifinit(0x00000000)
[cyg_net_init] Init: domaininit(0x00000000)
[cyg_net_init] Init: cyg_net_add_domain(0x000465c8)
New domain internet at 0x00000000
[cyg_net_init] Init: cyg_net_add_domain(0x00046038)
New domain route at 0x00000000
[cyg_net_init] Init: call_route_init(0x00000000)
[cyg_net_init] Done
Start PING test
BOOTP[eth0] op: REPLY
       htype: Ethernet
        hlen: 6
        hops: 0
         xid: 0x0
        secs: 0
       flags: 0x0
       hw_addr: 00:31:2d:78:81:01
     client IP: 192.168.1.2
         my IP: 192.168.1.2
     server IP: 192.168.1.101
    gateway IP: 192.168.1.1
  options:
        subnet mask: 255.255.255.0
       IP broadcast: 192.168.1.255
            gateway: 192.168.1.1
[eth_drv_ioctl] Warning: Driver can't set multi-cast mode
[eth_drv_ioctl] Warning: Driver can't set multi-cast mode
[eth_drv_ioctl] Warning: Driver can't set multi-cast mode
PING server 127.0.0.1
NIC collision bug detected!
64 bytes from 127.0.0.1: icmp_seq=0, time=10ms
64 bytes from 127.0.0.1: icmp_seq=1, time=0ms
64 bytes from 127.0.0.1: icmp_seq=2, time=0ms
64 bytes from 127.0.0.1: icmp_seq=3, time=0ms
64 bytes from 127.0.0.1: icmp_seq=4, time=0ms
64 bytes from 127.0.0.1: icmp_seq=5, time=0ms
64 bytes from 127.0.0.1: icmp_seq=6, time=0ms
64 bytes from 127.0.0.1: icmp_seq=7, time=0ms
64 bytes from 127.0.0.1: icmp_seq=8, time=0ms
64 bytes from 127.0.0.1: icmp_seq=9, time=0ms
64 bytes from 127.0.0.1: icmp_seq=10, time=0ms
64 bytes from 127.0.0.1: icmp_seq=11, time=0ms
64 bytes from 127.0.0.1: icmp_seq=12, time=0ms
64 bytes from 127.0.0.1: icmp_seq=13, time=0ms
64 bytes from 127.0.0.1: icmp_seq=14, time=0ms
64 bytes from 127.0.0.1: icmp_seq=15, time=0ms
Sent 16 packets, received 16 OK, 0 bad
PING server 127.0.0.33
NIC collision bug detected!
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
Sent 16 packets, received 0 OK, 0 bad
PING server 127.0.0.1
64 bytes from 127.0.0.1: icmp_seq=0, time=0ms
64 bytes from 127.0.0.1: icmp_seq=1, time=0ms
64 bytes from 127.0.0.1: icmp_seq=2, time=0ms
64 bytes from 127.0.0.1: icmp_seq=3, time=0ms
64 bytes from 127.0.0.1: icmp_seq=4, time=0ms
64 bytes from 127.0.0.1: icmp_seq=5, time=0ms
64 bytes from 127.0.0.1: icmp_seq=6, time=0ms
64 bytes from 127.0.0.1: icmp_seq=7, time=0ms
64 bytes from 127.0.0.1: icmp_seq=8, time=0ms
64 bytes from 127.0.0.1: icmp_seq=9, time=0ms
64 bytes from 127.0.0.1: icmp_seq=10, time=0ms
64 bytes from 127.0.0.1: icmp_seq=11, time=0ms
64 bytes from 127.0.0.1: icmp_seq=12, time=0ms
64 bytes from 127.0.0.1: icmp_seq=13, time=0ms
64 bytes from 127.0.0.1: icmp_seq=14, time=0ms
64 bytes from 127.0.0.1: icmp_seq=15, time=0ms
Sent 16 packets, received 16 OK, 0 bad
PING server 127.0.0.33
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
recvfrom: Operation timed out
Sent 16 packets, received 0 OK, 0 bad
PASS:<Done pinging loopback>
EXIT:<done>

这篇关于ecos DM9000网卡在MINI2440 QEMU的测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/154174

相关文章

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题