U-Boot移植(16)ylp2410网卡dm9000aep

发布者:真诚相伴最新更新时间:2023-08-28 来源: elecfans关键字:U-Boot  移植  网卡 手机看文章 扫描二维码
随时随地手机看文章

这几天真被dm9000aep折磨的受不了,在今晚12.5终于宣告对它的完美征服,回顾这几天的历程,真是一波三折。

1、首先我要说的是dm9000aep和dm9000是不一样的,虽是同一个公司的网卡,但是前者是后者的升级版,如果直接把u-boot下的网卡那部分程序拿来用,最终烧到优龙板里后在u-boot下是实现不了tftp的,因为之前我已经在pc机上搭建成功tftp平台了。

      注意下面的红体字

       一开始我真的以为dm9000aep和dm9000是一样的,所以其它部分移植成功后,就把u-boot直接烧到板里,结果出现如下错误:

OpenJTAG> ping 172.22.136.38
ERROR: resetting DM9000 -> not responding
dm9000 not found at 0x20000000 id: 0x2b2a2928
DM9000: Undefined IO-mode:0x3
MAC: 08:00:3e:26:0a:5b
could not establish link
## Warning: gatewayip needed but not set
transmission timeout
## Warning: gatewayip needed but not set
transmission timeout
ping failed; host 172.22.136.38 is not alive

从上面明显看出来是:根本没有找到网卡,所以一定是网卡的驱动不对,或者是基址不对。

2、后来我找到优龙光盘中所配套的开发板的电路原理图,找到网卡芯片的所在处,如下图所示:

图片

从上图可以看出片选CS#接的是nGCS5,16根数据线,CMD接addr2。

这下明白了,具体问题具体分析。嘛。

位宽16,访问地址:0x28000000~0x30000000,

于是(1)

vi  /u-boot-1.1.6/board/smdk2410/lowlevel_init.S进行修改,


#define BWSCON  0x48000000
/* BWSCON */
#define DW8                     (0x0)
#define DW16                    (0x1)
#define DW32                    (0x2)
#define WAIT                    (0x1<<2)
#define UBLB                    (0x1<<3)

#define B1_BWSCON               (DW16)
#define B2_BWSCON               (DW16)
#define B3_BWSCON               (DW16 + WAIT + UBLB)
//#define B3_BWSCON             (DW16 + UBLB)
#define B4_BWSCON               (DW16 + WAIT + UBLB)

//#define B5_BWSCON               (DW8)
#define B5_BWSCON               (DW16 + UBLB)
#define B6_BWSCON               (DW32)
#define B7_BWSCON               (DW32)
........................

#define B5_Tacs                 0x0     /*  0clk */
#define B5_Tcos                 0x3     /*  0clk */
#define B5_Tacc                 0x7     /* 14clk */
#define B5_Tcoh                 0x1     /*  0clk */
#define B5_Tah                  0x3     /*  0clk */
#define B5_Tacp                 0x6
#define B5_PMC                  0x0     /* normal */
.............................................

(2)vi  /u-boot-1.1.6/include/configs/100ask24x0.h

#if !defined(CONFIG_DRIVER_CS8900)
#define CONFIG_DRIVER_DM9000            1
#define CONFIG_DM9000_USE_16BIT         1
#define CONFIG_DM9000_BASE                      0x28000300 //nGCS5
#define DM9000_IO                       CONFIG_DM9000_BASE
#define DM9000_DATA                    (CONFIG_DM9000_BASE + 4)
#endif
顺便添加一个ping命令,这样在u-boot  下就可以使用该命令来测试网络。

#define CONFIG_COMMANDS
                        ((CONFIG_CMD_DFL |
                        CFG_CMD_CACHE    |
                    /* Start: by www.100ask.net */
                        CFG_CMD_PING     |
                        CFG_CMD_JFFS2    |
                        CFG_CMD_NAND     |
                    /* End: by www.100ask.net */
                        /*CFG_CMD_EEPROM |*/
                        /*CFG_CMD_I2C    |*/
                        /*CFG_CMD_USB    |*/
                        CFG_CMD_REGINFO  |
                        CFG_CMD_DATE     |
                        CFG_CMD_ELF))
(3)vi  /u-boot-1.1.6/drivers/dm9000x.c

eth_rx(void)
{
        u8 rxbyte, *rdptr = (u8 *) NetRxPackets[0];
        u16 RxStatus, RxLen = 0;
        struct board_info *db = &dm9000_info;

        /* Check packet ready or not, we must check
           the ISR status first for DM9000A */
        if (!(DM9000_ior(DM9000_ISR) & 0x01)) /* Rx-ISR bit must be set. */
                return 0;

        DM9000_iow(DM9000_ISR, 0x01); /* clear PR status latched in bit 0 */

        /* There is _at least_ 1 package in the fifo, read them all */
        for (;;) {
                DM9000_ior(DM9000_MRRH);
                DM9000_ior(DM9000_MRRL);//dm9000ae spencial
                DM9000_ior(DM9000_MRCMDX);      /* Dummy read */

 ................................................

上面的增加为dm9000ae特有的

至此修改完毕,保存,到顶层中进行编译,连接生成u-boot.bin, 烧到板里,进行验证。。。


关键字:U-Boot  移植  网卡 引用地址:U-Boot移植(16)ylp2410网卡dm9000aep

上一篇:U-Boot移植(17)ylp2410网卡dm9000aep
下一篇:redhat下搭建交叉编译环境一个问题

推荐阅读最新更新时间:2024-11-12 15:36

Boa Web服务器在PC和S3C2440开发板上移植
  boa是一个非常小巧的Web服务器,可执行代码只有约60KB。它是一个单任务Web服务器,只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。下面我们讲解以下boa如何在PC机(虚拟机RedHatAS5环境)完成移植修改工作。 一、下载Boa源码 下载地址: http://www.boa.org/或 http://labs.nevion.com/open-source/ 目前最新发行版本:0.94.13(05年更新版本)   下载 boa-0.94.13.tar.gz(注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式
[单片机]
AT91RM9200Linux移植笔记(一)-交叉编译环境的建立
公司有块复旭AT91RM9200的板子,自带的是u-boot-0.40和2.4.19的kernel,决定把u-boot-1.1.6和2.6的内核移植上去,以此开始进入嵌入式Linux的世界。我的开发环境是Vmvare 5.5.1和Redhat 9, 参考了网上不少网友的移植文档,在此向他们表示感谢! 发现原有的arm-linux-2.95.3交叉编译工具只能编译u-boot-1.1.4一下的版本,更新的需要更新的交叉编译工具,但用arm-linux-gcc-3.4.1编译u-boot-1.1.6会出现软浮点-softfloat问题: /lib_arm/_udivsi3.S:67: relocation truncated to
[单片机]
Windows下u-boot-2011.03在Mini2440移植详解(4)
增加Nand Flash的支持 参考网址: http://blog.csdn.net/zhaocj/article/details/6678866 http://blog.csdn.net/zhaocj/article/details/6709948 Nand flash的移植,网上说的很多。作者参考的是上面的两个网址,关于ECC的内容还没有校验。 网址http://my.oschina.net/fzliu/blog/33642,http://blog.chinaunix.net/uid-14833587-id-76512.html和http://blog.sina.com.cn/s/blog_640029b3
[单片机]
Windows下u-boot-2011.03在Mini2440<font color='red'>移植</font>详解(4)
U-boot 在 mini2440-S3C2440 上的移植(4):U-boot第二阶段代码:修改初始化代码
编译U-boot给mini2440时,要编译出能在ARM平台上使用的可执行文件-bin,首先要在ubuntu 中安装交叉编译工具链,因为我使用的是友善之臂的开发板,所以我使用的已经制作好的工具链,当然也可以自己制作工具链:如基于GCC和glibc制作工具链,可以使用cross tools编译; 我使用的工具链的版本是arm-linux-gcc-4.3.3版本,下载地址:下载地址 1.在pc端下载好以后,将压缩包用xftp传输到Ubuntu;当然也可以用其他软件上传;上传后把它放在根目录下的/usr/local文件夹中新建一个arm文件夹,然后把压缩包复制到这个文件夹;注意先建好文件夹再上传,可以减少很多工作量; 一定要上传压缩包,
[单片机]
<font color='red'>U-boot</font> 在 mini2440-S3C2440 上的<font color='red'>移植</font>(4):<font color='red'>U-boot</font>第二阶段代码:修改初始化代码
OK6410A 开发板 (七) 1 OK6410A 文件系统 busybox和buildroot 移植
存在问题, kernel 是用 Linaro GCC 7.4-2019.02) 7.4.1 20181213 编译的 但是 Linaro GCC 7.4-2019.02) 7.4.1 20181213 编译 busybox和buildroot 出来, 执行 linuxrc 的时候 ,会出现 段错误 VFS: Mounted root (ext3 filesystem) on device 179:2. Freeing unused kernel memory: 1024K Run /linuxrc as init process random: fast init done Kernel panic - not syncing
[单片机]
OK6410A 开发板 (七) 1 OK6410A 文件系统 busybox和buildroot <font color='red'>移植</font>
LCD驱动程序移植
2.6.14的内核,按照网上的帖子,要做的工作量不是很大,现在先整理一下思路,我们从硬件开始,我用的LCD型号是LTV350QV-F04。320×240,这里的320×240是像素点数,其中320是水平方向,240是垂直方向。控制信号我们先不去管它,我们先来看一下数据线,也就是RGB(red green and blue)线,此处的硬件连接决定了LCD的BPP,16BPP或24BPP,我的开发板上采用的是5:6:5的16BPP的连接。关于BPP和连线的关系可以参考2410手册的387~390页。 接下来要配置和LCD相关的寄存器,这部分配置要参考2410的p397开始的关于LCD控制寄存器的说明。以下代码是网上一位大侠做的
[单片机]
Linux-4.9.2内核在mini2440上的移植(二)Ubuntu编译环境搭建(下)
2.1安装arm-linux-编译器 编译器在ubuntu环境下可以使用apt命令自动安装,也可以下载独立的安装包手动安装,这两种安装方式都可以实现内核编译,不同版本的arm-linux-gcc可以在系统中共存。本文会介绍这两种安装方法。任一种编译器都能编译内核,推荐使用第一种方法。 这里我们规定一下,所有的命令前的“#”表示使用root权限执行,登录系统后使用sudo -i切换为root权限,#后面的内容是实际指令,复制粘贴到putty中执行即可。 (1)自动安装编译器 ~# apt-get install gcc-arm-linux-gnueabihf 安装完成后,查看是否安装成功 ~#arm-linux-
[单片机]
Linux-4.9.2内核在mini2440上的<font color='red'>移植</font>(二)Ubuntu编译环境搭建(下)
Ubuntu下移植内核到OK6410开发板
环境:Win7+virsualBox+ubuntu12.04+ok6410开发板 一,下载源码:我这里下载的版本是--linux-3.12.7 http://www.kernel.org/ 二,解压内核: tar -xvf linux-3.12.7-tar.xz 三,更改权限(最好赋予全部权限) sudo chmod -R 777 linux-3.12.7/* 四,修改源码(针对基于smdk6410架构的ok6410开发板) 1,在arch/arm/mach-s3c64xx/目录下的mach-smdk6410.c 复制一份在当前文件下命名为mach-ok6410.c wu@wu-VirtualBox:/opt
[单片机]
Ubuntu下<font color='red'>移植</font>内核到OK6410开发板
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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