转载 修改 Linux 内核 DM9000 支持 tiny210 开发板

错误现象:

dm9000 dm9000: read wrong id 0x2b2a2928
dm9000 dm9000: wrong id: 0x2b2a2928
dm9000 dm9000: not found (-19).

TCP cubic registered
NET: Registered protocol family 17
Registering the dns_resolver key type
VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)

配置内核支持NFS + DM9000 ,部分引用网络文章:

(1) 配置网络支持
[*] Networking support  --->
    Networking options  --->
        <*> Packet socket 
        <*> Unix domain sockets
        [*] TCP/IP networking
        [*]   IP: multicasting
        [*]   IP: kernel level autoconfiguration 
        [*]     IP: DHCP support
        [*]     IP: BOOTP support
        [*]     IP: RARP support
        [*]   IP: multicast routing
        
(2) 配置网卡设备支持
Device Drivers  --->
    [*] Network device support  ---> 
        [*]   Ethernet driver support  --->
            <*>   DM9000 support

(3) 配置网络文件系统支持
File systems  ---> 
    [*] Network File Systems  ---> 
        <*>   NFS client support 
        <*>     NFS client support for NFS version 2
        <*>     NFS client support for NFS version 3
        [*]       NFS client support for the NFSv3 ACL protocol extension
        <*>     NFS client support for NFS version 4
        [*]   Root file system on NFS

再配置NFS ,ubuntu下配置NFS服务器很简单
sudo apt-get install nfs-kernel-server

然后以根权限打开/etc/exports文件,我的NFS根目录为/nfsroot,一般情况使用版本2,3,故设置export为
/nfsroot/   *(rw,sync,no_subtree_check)
共享的目录名    所有IP(各种属性)
属性中 no_subtree_check 最好是带上,我本来不太清楚,使用了no_root_squash,结果会导致 mount.nfs:access denied by server while mounting等错误
最后,还要修改下/nfsroot的权限,为了以后使用方便。
chmod 755 /nfsroot

再附带几个用到的命令:
重启NFS服务:    sudo /etc/init.d/nfs-kernel-server restart
如果提示 Cannot register service: RPC: Unable to receive; errno = Connection refused 
需要先安装 portmap ,再启动之 sudo /etc/init.d/portmap start

接下来是修改内核,支持DM9000网卡

//arch/arm/mach-s5pv210/mach-smdkv210.c
  
#define S5PV210_PA_DM9000_A     (0x88001000)    
#define S5PV210_PA_DM9000_F     (S5PV210_PA_DM9000_A + 0x300C)   
//   
static struct resource smdkv210_dm9000_resources[] = {
    [0] = {
        .start  = S5PV210_PA_DM9000_A, //地址线
        .end    = S5PV210_PA_DM9000_A + SZ_1K*4 - 1,
        .flags  = IORESOURCE_MEM,
    },
    [1] = {
        .start  = S5PV210_PA_DM9000_F, //数据线
        .end    = S5PV210_PA_DM9000_F + SZ_1K*4 - 1,
        .flags  = IORESOURCE_MEM,
    },
    [2] = {
        .start  = IRQ_EINT(7),
        .end    = IRQ_EINT(7),
        .flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,//中断资源和高频存储发资源
    },  
};

static struct dm9000_plat_data smdkv210_dm9000_platdata = {
    .flags = DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM, //16bit模式
    .dev_addr = { 0x08, 0x90, 0x00, 0xa0, 0x02, 0x10 }, //设置网卡的物理地址
};

static void __init smdkv210_dm9000_init(void)  
{  
    unsigned int tmp;  
  
    gpio_request(S5PV210_MP01(1), "nCS1");  
    s3c_gpio_cfgpin(S5PV210_MP01(1), S3C_GPIO_SFN(2));  
    gpio_free(S5PV210_MP01(1));  
  
    tmp = (5 << S5P_SROM_BCX__TACC__SHIFT);  
    __raw_writel(tmp, S5P_SROM_BC1);  
  
    tmp = __raw_readl(S5P_SROM_BW);  
    tmp &= (S5P_SROM_BW__CS_MASK << S5P_SROM_BW__NCS1__SHIFT);  
    tmp |= (1 << S5P_SROM_BW__NCS1__SHIFT);  
    __raw_writel(tmp, S5P_SROM_BW);  
}

完成,重新编译内核

时间: 2024-11-02 11:02:20

转载 修改 Linux 内核 DM9000 支持 tiny210 开发板的相关文章

修改linux内核kernel开机logo(小企鹅)

修改linux内核kernel的开机图片(原为小企鹅图片). 转载请注明出处:http://blog.csdn.net/wang_zheng_kai 导航制导与控制实验室 2014年12月10日 本文主要是介绍三部分内容: 1>如何制作linux内核所需要的开机图片(ppm格式): 2>修改开机图片的两种方法: 3>调试过程中的问题与技巧: 一.如何制作linux内核所需要的开机图片(ppm格式) 1>在ubuntu系统上安装netpdm,命令如下: # sudo apt-get

ubuntu+systemtap进行Linux内核和用户空间开发测试

ubuntu+systemtap进行Linux内核和用户空间开发测试 Sailor_forever  sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人blog,未经本人许可,不得用于商业用途.任何个人.媒体.其他网站不得私自抄袭:网络媒体转载请注明出处,增加原文链接,否则属于侵权行为.如有任何问题,请留言或者发邮件给sailing_9806#163.com) [摘要]本文主要介绍在ubuntu平台 + 自定义内核上如何安装systemtap工具包及

linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,来日再战!)

linux 3.4.103 内核移植到 S3C6410 开发板 这个星期几乎就搭在这里面了,一开始感觉很不值得,移植这种浪费时间的事情,想立马搞定,然后安安静静看书 & coding. 坑爹的事情就是一个多星期的时间搭进去了,还是没成功.我把我的移植失败的经验留下来做为笔记,为下次做准备,也让和我一起做移植的道友少走弯路.大家一起共同分享经验,营造更好的开发环境. 查了很多资料,在此谢谢那些bloger, thanks for your spirit of sharing. 一. 从官网获得干净

linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)

linux 3.4.103 内核移植到 S3C6410 开发板 这个星期差点儿就搭在这里面了,一開始感觉非常不值得,移植这样的浪费时间的事情.想立刻搞定,然后安安静静看书 & coding. 坑爹的事情就是一个多星期的时间搭进去了,还是没成功. 我把我的移植失败的经验留下来做为笔记,为下次做准备.也让和我一起做移植的道友少走弯路.大家一起共同分享经验,营造更好的开发环境. 查了非常多资料,在此谢谢那些bloger, thanks for your spirit of sharing. 一. 从官

修改Linux内核参数提高Nginx服务器并发性能

当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TIME_WAIT套接字数量,进而提高Nginx服务器并发性能.   vi /etc/sysctl.conf   增加以下几行: net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_syncookie

修改Linux内核参数提高Nginx服务器在高的时候的性能

并发 Linux下高并发的Nginx服务器,当TCP TIME_WAIT套接字数量经常达到两.三万,服务器很容易被拖死.通过修改Linux内核参数,可以减少Nginx服务器的TIME_WAIT套接字数量. vi /etc/sysctl.conf 增加以下几行: 引用 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse =

基于Tiny210开发板视频显示

基于Tiny210开发板视频显示 1.写基于V4L2编程 ========videodevice.h文件========= #ifndef VIDEODEVICE_H #define VIDEODEVICE_H #include <string.h> #include <stdlib.h> #include <errno.h> #include <fcntl.h> #include <sys/ioctl.h> #include <sys/m

制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统

转自网络,供学习记录使用,红色部分是我实验时,这篇文章和网站稍有出入的地方. 目的:制作SD(8G)卡Linux镜像,使得ZC706开发板可以从SD卡启动进入Linux系统 在http://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/quickstart/zynq(姑且把这个链接成为链接1吧)链接中找到 图1 点击绿色字体的链接,下载镜像原始文件.这里有不同时期的版本,本说明中选择 图2 下载的原始文件为:2014_R2-

编译天嵌官方的linux-2.6.30.4内核下载到TQ2440开发板不断重启的解决办法

编译天嵌官方的linux-2.6.30.4内核下载到TQ2440开发板不断重启的解决办法 查看了一下开发板启动打印的 LOG 信息,和官方启动 LOG 一对比发现交叉编译器版本不一致.我用的编译器版本是:arm-linux-gcc-4.5.1,而天嵌官方的 zImage.bin 是用arm-linux-gcc-4.3.3编译的.于是网上找了半天arm-linux-gcc-4.3.3没找到,便下载了一个 4.3.2 版本的. 重新编译下载,板子竟然奇迹般可以正常启动了. 但是又出现了新的问题,进入