内核linux-3.4.2支持dm9000

当前烧写:
      fs:
    nfs 30000000 192.168.1.17:/work/nfs_root/first_fs_mdev.yaffs2    //这里不能使用nfs挂载,只能直接烧写
    nand erase.part root                         //原因是:内核还不支持dm9000c
    nand write.yaffs 30000000 260000 $filesize
     
     kernel:
    nfs 30000000 192.168.1.17:/work/nfs_root/uImage_new     //使用uboot对dm9000的支持,这里可以使用uboot的nfs斧王
    bootm 30000000
    
    
移植内核linux-3.4.2对dm9000c的支持,目的是用nfs挂载根文件系统

1. 编译
2. 解决错误
2.1 头文件不对:去掉或者改名
2.2 宏不对:改名或者使用新宏
2.3 有些函数不用了:改名或者使用新函数
    
当前内核里面有dm9000,启动内核和根文件系统后
    
1、设置ip
#ifconfig eth0 192.168.1.3
#ping 192.168.1.17

ping通服务器后,挂机文件系统的方法是:    
mount -t nfs -o nolock,vers=2 192.168.1.17:/work/nfs_root/fs_mini_mdev_new /mnt

mini2440已经支持了自带的dm9000

其入口函数是:
platform_driver_register(&dm9000_driver);
    platform_driver dm9000_driver = {
         dm9000_probe
            platform_device mini2440_device_eth
                    platform_device *mini2440_devices[]
                        platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
                        数组mini2440_devices[]被注册到内核里面了

我们使用的mach-smdk2440里面没有    
    
    
    /* DM9000AEP 10/100 ethernet controller */
    
    static struct resource mini2440_dm9k_resource[] = {
        [0] = {
            .start = MACH_MINI2440_DM9K_BASE,
            .end   = MACH_MINI2440_DM9K_BASE + 3,
            .flags = IORESOURCE_MEM
        },
        [1] = {
            .start = MACH_MINI2440_DM9K_BASE + 4,
            .end   = MACH_MINI2440_DM9K_BASE + 7,
            .flags = IORESOURCE_MEM
        },
        [2] = {
            .start = IRQ_EINT7,
            .end   = IRQ_EINT7,
            .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
        }
    };
    
    /*
     * The DM9000 has no eeprom, and it‘s MAC address is set by
     * the bootloader before starting the kernel.
     */
    static struct dm9000_plat_data mini2440_dm9k_pdata = {
        .flags        = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
    };
    
    static struct platform_device mini2440_device_eth = {
        .name        = "dm9000",
        .id        = -1,
        .num_resources    = ARRAY_SIZE(mini2440_dm9k_resource),
        .resource    = mini2440_dm9k_resource,
        .dev        = {
            .platform_data    = &mini2440_dm9k_pdata,
        },
    };

所以在mach-smdk2440.c里面添加:    
    
//add by Flinn  for dm9000

#define MACH_smdk2440_DM9K_BASE (S3C2410_CS4 + 0x300)

/* DM9000AEP 10/100 ethernet controller */

static struct resource smdk2440_dm9k_resource[] = {
    [0] = {
        .start = MACH_smdk2440_DM9K_BASE,
        .end   = MACH_smdk2440_DM9K_BASE + 3,
        .flags = IORESOURCE_MEM
    },
    [1] = {
        .start = MACH_smdk2440_DM9K_BASE + 4,
        .end   = MACH_smdk2440_DM9K_BASE + 7,
        .flags = IORESOURCE_MEM
    },
    [2] = {
        .start = IRQ_EINT7,
        .end   = IRQ_EINT7,
        .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
    }
};

/*
 * The DM9000 has no eeprom, and it‘s MAC address is set by
 * the bootloader before starting the kernel.
 */
static struct dm9000_plat_data smdk2440_dm9k_pdata = {
    .flags        = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
};

static struct platform_device smdk2440_device_eth = {
    .name        = "dm9000",
    .id        = -1,
    .num_resources    = ARRAY_SIZE(smdk2440_dm9k_resource),
    .resource    = smdk2440_dm9k_resource,
    .dev        = {
        .platform_data    = &smdk2440_dm9k_pdata,
    },
};

编译出错:
arch/arm/mach-s3c24xx/mach-smdk2440.c:186: error: variable ‘smdk2440_dm9k_pdata‘ has initializer but incomplete type

因为缺少头文件
#include <linux/dm9000.h>

时间: 2024-10-05 11:34:45

内核linux-3.4.2支持dm9000的相关文章

[驱动]内核添加USB转串口驱动支持

转自:http://blog.csdn.net/gatieme/article/details/49491325 目录 1. 问题 2. 驱动源码 3. 内核配置 4. 编译内核和模块驱动 5. 加载驱动 问题 这两天为了做gps和arm的通讯,不得不捣鼓这个东东.开发板是创维特jx2410,usb转串口线的芯片是pl2303.还好是这个芯片,让我没费多少力气,就达成了目的.因为linux对它已经支持了,我们只要编译.加载它的驱动就ok了. 驱动源码 一般来说USB转串口的驱动已经集成在内核中,

【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析

[linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(二):定义在板文件里的资源和设备以及几个宏 [linux驱动分析]之dm9000驱动分析(四):net_device结构体 [linux驱动分析]之dm9000驱动分析(五):另外几个重要的结构体 [linux驱动分析]之dm9000驱动分析(六):dm9000_init和dm9000_probe的实现 [linux驱动分析]之dm9000驱动分析(七):dm9000的卸

Linux + Mono 目前已经支持Entity Framework 6.1

在上个随笔 CentOS上 Mono3.2.8运行ASP.NET MVC4经验中,步骤2中要求卸载EF 5.0,这样才能在Linux + Mono的环境中运行ASP.NET MVC4的Web应用.今天,没有卸载EF 5.0的情况下,使用NuGet新安装了EF 6.1.0,如下图(使用VS012英文版), 图1: 新安装了Entity Framework 6.1.0,同时EF5.0没有卸载,可在图片中看到两个EF共存 图1中的这个网站是一个接近完成的完整网站,在其它各项配置都与 CentOS上 M

Mint Linux自定义快捷键不支持中文路径的问题的解决

/*********************************************************************  * Author  : Samson  * Date    : 04/28/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发

原文:Visual Studio 2015 for Linux更好地支持Linux下的开发 英文原文:Targeting Linux Made Easier in Visual Studio 2015 Visual C++ for Linux 扩展使 Visual Studio 2015 的用户可以在 VS2015 中编写C或者 C++ 代码,并将代码部署到基于 Linux 的系统中去编译和调试.源代码和项目文件通过 SSH 传输到远程机上,程序的输出将显示在 Visual Studio 上.

linux+php5.4+nginx+支持redis安装部署

系统环境 [[email protected]~]# cat /etc/redhat-release CentOSrelease 6.5 (Final) [[email protected]~]# uname -a Linuxlocalhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013x86_64 x86_64 x86_64 GNU/Linux php5.4 yum源 rpm -Uvhhttp://

Linux下php+imagemagick支持webp格式的图片

摘要 ImageMagick是一款功能强大的图片处理工具包,很多互联网应用中都会涉及到图片处理工作,比如切割.缩放.水印.格式转换等.ImageMagick就是一个理想的工具包. 安装基础依赖 先检查一些基本的图片支持包是否已经安装,比如jpge和png RedHat环境下: rpm -qa | grep libpng-devel rpm -qa | grep libjpeg-devel 如果没有,可以用yum或者下载源码安装: yum -y install libpng-devel libjp

在linux 下部署php 支持 sqlite3 pdo

今天终于把linux下的php支持pdo方式的sqlite3操作了. 之前insert一直失败而select成功,以为是pdo sqlite插件不支持,最后在csdn上找到了原来是由于目录没有写权限,导致无法写入数据. 为目录加入了w权限后,可以成功写入db文件了. 另外附上php编译信息: './configure' '--with-mysql=/usr/' '--with-mysqli' '--with-pdo-mysql' '--with-apxs2=/usr/sbin/apxs' '--

Linux 4.0+内核对硬件交换模块的支持(HW Switch Offload)

Linux内核最近跃进到了4.x时代,初看没啥大的动作,但是对于我而言,最令人兴奋的还是它对硬交换模块的支持.这也是为全面迎合SDN做好准备的第一步. Linux上的路由与交换 Linux诞生于网络,天生对网络拥有全面且强大的支持,即便再复杂的协议,再封闭的技术,几乎都可以找到对应的Linux实现.然而这并不是说Linux网络就天下无敌了,它存在很多不合理的地方.       Linux拥有对路由的强大支持,在数据平面,你可以很轻松地实现一种路由查找算法,在控制平面,你也可以在用户态实现任何已有