内核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>
内核linux-3.4.2支持dm9000的更多相关文章
- 从内核3.7版本开始,Linux就开始支持VXLAN 到了内核3.12版本,Linux对VXLAN的支持已经完备,支持单播和组播,IPv4和IPv6。
一.关于VXLAN VXLAN 是 Virtual eXtensible LANs 的缩写,它是对 VLAN 的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多. ...
- [驱动]内核添加USB转串口驱动支持
转自:http://blog.csdn.net/gatieme/article/details/49491325 目录 1. 问题 2. 驱动源码 3. 内核配置 4. 编译内核和模块驱动 5. 加载 ...
- ok6410 u-boot-2012.04.01移植五支持DM9000
继ok6410 u-boot-2012.04.01移植四后,开发板基本已支持MLC NAND,但还有一些细节地方修改,这节增加DM9000支持,通过网卡tftp程序到内存,接着通过NAND命令写到NA ...
- linux入门001--帮助支持
linux入门001--帮助支持====1. 帮助手册提供命令的使用说明:man ls提供基础知识和参考信息,有时会有实例和交叉索引,但是基本没有教程式的文档.就是说,并不会有偏重告诉你那个重要,那个 ...
- [usb/uart]内核添加USB转串口驱动支持
转自:http://blog.csdn.net/gatieme/article/details/49491325 目录 1. 问题 2. 驱动源码 3. 内核配置 4. 编译内核和模块驱动 5. 加载 ...
- 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析
[linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(二):定义在板文件里的资源和设备以及几个宏 [linux驱动分析]之dm9 ...
- Linux PHP增加JSON支持及如何使用JSON
Linux PHP增加JSON支持及如何使用JSON 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它. JSON(JavaScript Object Notation) ...
- 【转载】Visual Studio 2015 for Linux更好地支持Linux下的开发
原文:Visual Studio 2015 for Linux更好地支持Linux下的开发 英文原文:Targeting Linux Made Easier in Visual Studio 2015 ...
- Linux 服务器设置成支持中文
Linux 服务器设置成支持中文 由于服务器默认是不支持中文的.所以一般需要单独设置一下. 检查本机已有的语言包 locale -a 默认是没有中文的,所以会显示: C C.UTF-8 POSIX e ...
随机推荐
- centos6.4搭建基于ftp的yum源让本地局域网服务器使用
1. 挂载centos6.4 DVD镜像[root@centos64 ~]# mount /dev/cdrom /mnt 2. 安装vsftp软件,启动vsftpd服务,拷贝centos6.4 DVD ...
- java异常处理机制Exception
Exception是一个整体的异常,子类NullPointerException.StringIndexOutOfBoundsException 异常处理语句 try{ 可能发生异常的代码片段 }ca ...
- 如何正确地使用Python的属性和描述符
关于@property装饰器 在Python中我们使用@property装饰器来把对函数的调用伪装成对属性的访问. 那么为什么要这样做呢?因为@property让我们将自定义的代码同变量的访问/设定联 ...
- weblogic92 :BEA-101020
weblogic92 启动时后台出现错误:<BEA-101020> 解决方案: 1.删除临时文件: user_projects/domains/base_domain/servers/Ad ...
- poj 1328 Radar Installation(nyoj 287 Radar):贪心
点击打开链接 Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43490 Accep ...
- (easy)LeetCode 237.Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- js 未结束的字符串常量错误解决方法
1.JAVASCRIPT引用时,使用的字符语言不一致. 比如:<script type=”text/javascript” src=”xxx.js” charset=”UTF-8″>.xx ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(5)
在实际企业应用中,用户密码一般都会进行加密处理,这样才能使企业应用更加安全.既然密码的加密如此之重要,那么Acegi(Spring Security)作为成熟的安全框架,当然也我们提供了相应的处理方式 ...
- LLDB命令查看内存的分配历史
(lldb) script import lldb.macosx.heap(lldb) malloc_info --stack-history 0x10010d680
- fill的用法
for(int i=0;i<=10;i++) num[i]=i ; fill(num+1,num+1+5,2) ; for(int i=0;i<=10;i++) printf(" ...