• mini2440使用linux 3.0内核,默认总线时序过快造成网络数据错误率高的问题


    因需要测试CAN,2.6内核没有包含MCP251x的驱动。

    把3.0的驱动移植到2.6中改动比较多,索性直接使用3.0的内核。

    linux官方已直接支持mini2440,使用默认的配置编译就可以工作。

    但发现网络性能很差,抓包发现数据经常有错误。

    考虑到使用原来的程序网络都正常,怀疑是因为总线速率过快的原因。

    对比友善之臂发布的2.6.32的dm9000的驱动,发现里面有添加时序配置的部分。

    把这部分添加到3.0内核的dm9000驱动中,问题解决。

    代码片段:

    #if defined(CONFIG_ARCH_S3C2410)
    #include <mach/regs-mem.h>
    #endif

    static int __init
    dm9000_init(void)
    {
    #if defined(CONFIG_ARCH_S3C2410)
        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
  • 相关阅读:
    struts总结
    struts的MVC详细实现
    struts的由来
    Hibernate的搭建及使用
    Hibernate简介
    泛型
    eclipse手动添加源码
    beanUtils操作bean的属性
    ref:JAVA之Forward和Redirect的区别
    ref:下一个项目为什么要用 SLF4J
  • 原文地址:https://www.cnblogs.com/aozima/p/2783743.html
Copyright © 2020-2023  润新知