移植u-boot-2010.03问题 --- 网卡DM9000

发布者:EnchantedMagic最新更新时间:2024-10-18 来源: cnblogs关键字:移植  u-boot 手机看文章 扫描二维码
随时随地手机看文章

1,找到u-boot-2010.03/include/configs/smdk6410.h


//#define CONFIG_NET_MULTI

//#define CONFIG_CS8900 /*we have aCS8900on-board*/

//#define CONFIG_CS8900_BASE 0x18800300

//#define CONFIG_CS8900_BUS16 /*follow the Linux driver*/


/**然后添加DM9000网卡的宏定义---ip以及子网掩码等根据自己的需要修改***/


#defineCONFIG_NET_MULTI 1

#defineCONFIG_DM9000_NO_SROM 1

#defineCONFIG_dm9000

#defineCONFIG_DRIVER_DM9000 1

#defineCONFIG_DM9000_BASE 0x18800300

#defineDM9000_IO CONFIG_DM9000_BASE

#defineDM9000_DATA (CONFIG_DM9000_BASE+4)

#defineCONFIG_DM9000_USE_16BIT

#defineCONFIG_ETHADDR 00:40:5c:26:0a:5b

#defineCONFIG_NETMASK 255.255.255.0

#defineCONFIG_IPADDR 192.168.1.20

#defineCONFIG_SERVERIP 192.168.1.10

#defineCONFIG_GATEWAYIP 192.168.1.1

//#define CONFIG_DM9000_DEBUG


2,打开u-boot-2010.03/net/eth.c,找到int eth_initialize(bd_t *bis)函数:


#if defined(CONFIG_DB64460) || defined(CONFIG_P3Mx)

    mv6446x_eth_initialize(bis);

#endif

/**

add here

*/

#if defined(CONFIG_DRIVER_DM9000)

    dm9000_initialize(bis);

#endif

/**

add over

*/


3,打开u-boot-2010.03/net/net.c:

第一处:

//# define ARP_TIMEOUT        5000UL    /* Milliseconds before trying ARP again */

# define ARP_TIMEOUT        5    /* Milliseconds before trying ARP again */

第二处:

//  if ((t - NetArpWaitTimerStart) > ARP_TIMEOUT) {

    if ((t - NetArpWaitTimerStart) > ARP_TIMEOUT*CONFIG_SYS_HZ) {

第三处:

//  NetSetTimeout (10000UL, PingTimeout);

    NetSetTimeout (10*CONFIG_SYS_HZ, PingTimeout);


 

4,打开u-boot-2010.03/net/tftp.c,找到void TftpStart (void)函数:


#if 0

    /*

     * Allow the user to choose TFTP blocksize and timeout.

     * TFTP protocol has a minimal timeout of 1 second.

     */

    if ((ep = getenv('tftpblocksize')) != NULL)

        TftpBlkSizeOption = simple_strtol(ep, NULL, 10);


    if ((ep = getenv('tftptimeout')) != NULL)

        TftpTimeoutMSecs = simple_strtol(ep, NULL, 10);


    if (TftpTimeoutMSecs < 1000) {

        printf('TFTP timeout (%ld ms) too low, '

            'set minimum = 1000 msn',

            TftpTimeoutMSecs);

        TftpTimeoutMSecs = 1000;

    }


    debug('TFTP blocksize = %i, timeout = %ld msn',

        TftpBlkSizeOption, TftpTimeoutMSecs);

#endif


完成后重新编译。


5,测试网卡

开发板上通过命令 printenv 查看网卡信息。


WU_SMDK6410 # printenv                                                          

bootargs=console=ttySAC,115200                                                  

bootcmd=nand read 0x50018000 0x60000 0x1c0000;bootm 0x50018000                  

bootdelay=10                                                                    

baudrate=115200                                                                 

ethaddr=00:40:5c:26:0a:5b                                                       

ipaddr=192.168.1.123                                                            

serverip=192.168.1.127                                                          

gatewayip=192.168.1.1                                                           

netmask=255.255.255.0                                                           

stdin=serial                                                                    

stdout=serial                                                                   

stderr=serial                                                                   

ethact=dm9000    


setenv serverip 192.168.X.XX --- 设置主机ip,该命令只是把设置保存到ram中,如果重启的话设置会重新回到原来的设置


saveenv --- 保存到flash中。


这时,我主机的ip:192.168.1.127,通过ping命令测试是否能连通:


WU_SMDK6410 # ping 192.168.1.127                                                

dm9000 i/o: 0x18800300, id: 0x90000a46                                          

DM9000: running in 16 bit mode                                                  

MAC: 00:40:5c:26:0a:5b                                                          

operating at 100M full duplex mode                                              

Using dm9000 device                                                             

host 192.168.1.127 is alive         


这里成功连通,但也有时会出现开发板能ping通主机,但是主机却ping不通开发板的奇怪现象,但不影响开发板通过tftp下载主机上的文件,暂时没想通。


关键字:移植  u-boot 引用地址:移植u-boot-2010.03问题 --- 网卡DM9000

上一篇:移植u-boot-2010.03问题 --- 支持dnw
下一篇:移植u-boot-2010.03问题 --- No oob scheme defined for oobsize 32

推荐阅读最新更新时间:2026-03-23 11:10

U-Boot在FL2440上移植(四)----支持网卡DM9000和烧写yaffs文件系统
一 支持网卡芯片DM9000 在driver下,有网卡驱动DM9000x.c 和 DM9000x.h DM9000接在BANK4,位宽16 在include/configs/TX2440.h中设置网卡基地址: 在56行处,将CS8900的定义改成: #define CONFIG_DRIVER_DM9000 1 #define CONFIG_DM9000_BASE 0x20000300 #define DM9000_IO CONFIG_DM9000_BASE #define DM9000_DATA (CONFIG_DM9000_BASE + 4) #define CONFIG_DM9000_USE_16BIT
[单片机]
ARM-Linux驱动移植--DM9000网卡驱动移植
硬件平台:FL2440 内核版本:2.6.39 主机平台:Ubuntu 11.04 内核版本:2.6.35 交叉编译器:arm-linux-gcc 4.3.2 原创作品,转载请标明出处 http://blog.csdn.net/yming0221/article/details/6641579 1、DM9000网卡驱动的分析请见 http://blog.csdn.net/yming0221/article/details/6609742 2、如果想自己调试DM9000网卡驱动,那么在编译内核之前将网卡驱动不要编译进内核,启动后自己编译并加载内核 由于一般的驱动或者程序是通过NFS挂载到开发板上的,所以,如果没有网卡
[单片机]
s3c2440的网卡接口扩展DM9000
网络对于嵌入式系统来说必不可少。可是s3c2440没有集成以太网接口,所以要想使s3c2440具备以太网的功能,就必须扩展网卡接口。在这里,我们外接DM9000,使其可以与以太网相连接。 DM9000可以直接与ISA总线相连,也可以与大多数CPU相连。在这里,我们当然是要让DM9000与s3c2440相连接了。DM9000对外来说只有两个端口——地址口和数据口,地址口用于输入内部寄存器的地址,而数据口则完成对某一寄存器的读写。DM9000的CMD引脚用来区分这两个端口,当CMD引脚为0时,DM9000的数据线上传输的是寄存器地址,当CMD引脚为1时,传输的是读写数据。我们把DM9000的A8和A9接为高电平,把A4~A7接为低
[单片机]
u-boot 移植 --->2、在u-boot新增SOC和板子
本次主要是要新增一个samsung的芯片到u-boot中,网上查阅资料发现s5pc1xx是与手上的S5PV210的友善的Tiny版子寄存器兼容的比较多,所以就准备以他为基础增加一个我的板子的支持到u-boot中。 step1 拷贝archarm目录下的mach-s5pc1xx目录修改名称为mach-s5pv210,注意这里的mach-xxx后面的xxx的命令是和Kconfig文件一会的修改相关的。 step2 在archarmKconfig 文件中增加新的芯片这里参考s5pc1xx的内容 。 。 。 config ARCH_S5PC1XX bool Samsung S5PC1XX select CPU_V7 sele
[单片机]
u-boot 移植 --->5、友善之臂Tiny210底板王网卡驱动移植
网卡芯片的工作原理 DM9000AE具有以下主要性能: ①48管脚的LQFP封装,管脚少体积小; ②支持8/16位数据总线; ③适用于10Base-T和100Base-T,10/100M自适应,适应不同的网络速度要求 ④内置16KB的SRAM,用于收发缓冲,降低对主处理器的速度要求; ⑤支持IP /TCP /UDP加速,减轻了CPU负担,提高网络速度;⑥支持Back pressure半双工流量控制,与IEEE802.3u兼容,支持IEEE802.3x全双工流量控制; ⑦20ns响应时间,2.5V/3.3V低功耗。下图是DM9000网卡芯片常用在嵌入式网络系统上的结构框图。 数据支持8位和16位,不同模式下的PIN脚定义是不
[单片机]
<font color='red'>u-boot</font> <font color='red'>移植</font> --->5、友善之臂Tiny210底板王<font color='red'>网卡</font>驱动<font color='red'>移植</font>
u-boot 移植 --->3、S5PV210启动序列
S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf,了解到S5PVS10这款芯片的复位过程启动序列。芯片在出厂时就在内部固化了一段程序internal ROM简称iROM,这段代码在芯片复位一后会自动运行,他主要负责初始化系统的时钟等具体如下: 1. Disable the Watch-Dog Timer \关闭看门狗 2. Initialize the instruction cache \关闭指定cache 3. Initialize the stack region (see “memory map” on chap 2.5) \设置不同模式的栈指针 4. Init
[单片机]
tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动
我们知道 s5pv210启动方式有非常多种,sd卡和nand flash 启动就是当中的两种,前面我们实现的都是基于sd卡启动,这节我们開始实现从nand flash 启动: 从 NAND 启动 u-boot,须要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存。这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-boot.bin。在 u-boot.bin 中的 NAND 驱动比較大,它包括了非常多功能,而 u-boot-spl.bin 中仅仅须要从 NAND 拷贝BL2 到 DDR 即可了,因此我们能够在 u-boot-spl.bin 进行简单的 N
[单片机]
tiny210(s5pv210)<font color='red'>移植</font><font color='red'>u-boot</font>(基于 2014.4 版本号)——NAND 启动
基于Ok6410开发板u-boot移植
前提环境:Win7+VirsualBox+ok6410+u-boot-2010.03 一,下载u-boot-2010.03源码 ftp://ftp.denx.de/pub/u-boot 解压,我这里为了避免麻烦,更改了所有文件的权限 tar jxvf u-boot-2010.03.tar.bz2 sudo chmod -R 777 u-boot-2010.03/* 二,修改源码 为了方便修改,查找代码,你看到u-boot下包含了支持众多CPU和不同架构的代码,这里我根据Ok6410开发板的自身情况,将u-boot下代码进行精简: 1,进入u-boot-2010.03/board,把除samsu
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved