zoukankan      html  css  js  c++  java
  • 郭天祥-S3C2440开发板Linux2.6.31移植教程

    本人使用的开发板是广州天嵌的TQ2440开发板

    最近使用了郭天祥的教程学习S3C2440嵌入式linux2.6.31系统移植,移植yaffs2文件系统成功后,发现开发板移植的系统的ping命令无法ping通电脑。后面通过烧录开发板自带的linux镜像文件和yaffs2文件系统,对比之后。发现本人的笔记本(联想G40系列),如果只接通过本地网卡与开发板直连,无法ping通,但是使用自己的台式电脑,可以使用网线直连开发板ping通,确认了问题的原因是:

    1.笔记本在网线直连开发板的情况下,无法ping通开发板。

    2.个人移植的linux 2.6.31操作系统驱动存在问题。

    第一个问题很好解决,如果要继续使用笔记本,可以将开发板连接到局域网内,而不是通过笔记本本地网卡直连。

    第二个问题,就是一直操作系统的时候出现了问题。由于本人是根据郭天祥团队的手册《郭天祥 - linux2.6.31移植》(下载地址http://download.csdn.net/detail/camelbrand/9777501)来完成的移植,所以很可能是在该过程中出现了问题。

    本人做出的变更,取消文档中对于devs.h和devs.c的操作,如下代码不加入devs.h和devs.c中

    修改 arch/arm/plat-s3c24xx/devs.c 在最前面 38 行加入:

     1 #include <linux/dm9000.h> //别忘加这个头文件
     2 /*DM9000*/
     3 static struct resource s3c_dm9000_resource[] = 
     4 {
     5     [0] = {
     6         .start = S3C2410_CS4,
     7         .end = S3C2410_CS4 + 3,
     8         .flags = IORESOURCE_MEM,
     9     },
    10     [1] = {
    11         .start = S3C2410_CS4 + 4,
    12         .end = S3C2410_CS4 + 4 + 3,
    13         .flags = IORESOURCE_MEM,
    14     },
    15     [2] = {
    16         .start = IRQ_EINT18, /*use eint18 GPG10*/
    17         .end = IRQ_EINT18,
    18         .flags = IORESOURCE_IRQ,
    19             }
    20     };
    21 static struct dm9000_plat_data s3c_dm9000_platdata = 
    22 {
    23         .flags = DM9000_PLATF_16BITONLY,
    24 };
    25 extern struct platform_device s3c_device_dm9000 = 
    26 {
    27     .name = "dm9000",
    28     .id = 0,
    29     .num_resources = ARRAY_SIZE(s3c_dm9000_resource),
    30     .resource = s3c_dm9000_resource,
    31     .dev = 
    32     {
    33         .platform_data = &s3c_dm9000_platdata,
    34     }
    35 };
    36 
    37 EXPORT_SYMBOL(s3c_device_dm9000);

    在 arch/arm/plat-s3c/include/plat/devs.h 中加入一行:
    extern struct platform_device s3c_device_dm9000;

    修改linux-2.6.31archarmmach-s3c2440mach-smdk2440.c

    头文件添加:#include <linux/dm9000.h>

    static struct s3c2410fb_mach_info smdk2440_fb_info __initdata结构体定义后添加:

     1 /* DM9000 */
     2 static struct resource s3c_dm9k_resource[] = {
     3     [0] = {
     4         .start    = S3C2410_CS4,
     5         .end    = S3C2410_CS4 + 3,
     6         .flags    = IORESOURCE_MEM,
     7     },
     8     [1] = {
     9         .start    = S3C2410_CS4 + 4,
    10         .end    = S3C2410_CS4 + 4 + 3,
    11         .flags    = IORESOURCE_MEM,
    12     },
    13     [2] = {
    14         .start    = IRQ_EINT7,
    15         .end    = IRQ_EINT7,
    16         .flags    = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
    17     }
    18 
    19 };
    20 
    21 static struct dm9000_plat_data s3c_dm9k_platdata = {
    22     .flags    = DM9000_PLATF_16BITONLY,
    23 };
    24 
    25 struct platform_device s3c_device_dm9000 = {
    26     .name        = "dm9000",
    27     .id            = 0,
    28     .num_resources    = ARRAY_SIZE(s3c_dm9k_resource),
    29     .resource        = s3c_dm9k_resource,
    30     .dev            = {
    31         .platform_data = &s3c_dm9k_platdata,
    32     }
    33 };

    重新编译,就可以正常使用dm9000.c网卡了

     

  • 相关阅读:
    Android四大组件--事务详解(转)
    Android课程---关于数据存储的学习(3)之数据库和事务
    初学DW资料——js的prompt的返回值
    初学DW资料——target=的理解
    初学JAVA资料——链表
    初学JAVA资料——哈希表
    初学JAVA资料——线程
    初学JAVA——代码练习(验证字符串结束字符)
    初学JAVA——代码练习(数学运算)
    初学JAVA——代码练习(字符串)
  • 原文地址:https://www.cnblogs.com/codecamel/p/6533894.html
Copyright © 2011-2022 走看看