欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于mini2440的Linux-3.18.108下以太网DM9000驱动的移植

程序员文章站 2022-06-05 17:29:25
...

基于mini2440的Linux-3.18.108下以太网DM9000驱动的移植


  1. 其实Linux3.18.108自带mini2440的DM9000驱动,只不过在开发板和宿主几互ping的时候,偶尔ping不通,偶尔又可以ping通但丢包率很高,且通过NFS挂载根文件系统不成功,所以说明自带的驱动还有很明显的BUG。
  2. 进入内核源码目录,输入如下命令,编辑dm9000驱动
vi drivers/net/ethernet/davicom/dm9000.c
  1. 在头文件包含的地方加入如下内容
#if defined(CONFIG_ARCH_S3C24XX)
#include <mach/regs-mem.h>
#endif
  1. 找到驱动挂载函数 static int __init dm9000_init(void),在函数开头加入如下内容:
#if defined(CONFIG_ARCH_S3C24XX)
	unsigned int oldval_bwscon = *(volatile unsigned int *)S3C2410_BWSCON;    
	unsigned int oldval_bankcon4 = *(volatile unsigned int *)S3C2410_BANKCON4;
    *((volatile unsigned int*)S3C2410_BWSCON) = (oldval_bwscon & \
    ~(3<<16)) | S3C2410_BWSCON_DW4_16 | S3C2410_BWSCON_WS4 | \
    S3C2410_BWSCON_ST4;
	*((volatile unsigned int *)S3C2410_BANKCON4) = 0x1f7c;
#endif
  1. 因为我们包含了头文件regs-mem.h头文件,但通过在内核源码目录中搜索,我们发现,这个版本的内核没有这个头文件,所以我们需要从Linux-2.6.32内核源码中复制这个头文件到这里来,复制到目录 arch/arm/mach-s3c24xx/include/mach/ 即可。
  2. 重新编译内核,烧录,这时开发板和宿主机互ping就不会丢包了,NFS根文件系统也可以挂载上了。
相关标签: 驱动