mini2440使用linux 3.0内核,默认总线时序过快造成网络数据错误率高的问题
2012-11-23 02:50
337 查看
因需要测试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
把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
相关文章推荐
- linux 3.18内核使用device tree方式修改网络驱动遇到的问题
- linux 内核网络,数据接收流程图
- Android网络编程之使用get方式向服务端提交数据和乱码问题的解决
- 关于Linux内核安全入侵侦察系统的使用问题
- 使用事务实现--转账问题:从0001账户转1000块到0002账户。打开"隐式事务":设置为开,删除表中数据,回滚!(默认情况为关,如果打开了则不自动提交,学要手动提交)
- linux 内核网络,数据接收流程图
- 编译loongson内核1b-linux-3.0-20130104问题总结
- Linux 内核网络协议栈 ------ 数据从接收到ip层
- linux系统安装hadoop-1.2.1遇到的问题【linux本机上的主机名和域名问题、不可以使用默认的localhost;完全没有启动】
- LInux下可以使用命令自动与网络的NTP服务器同步时间 CSDN验证码验证失败问题解决
- linux 网络编程:使用两线程实现socket同时收发数据
- mini2440使用nfs无法启动的问题(Virtualbox桥接网络)
- Linux 网络socket等数据使用巧妙之处
- mysql数据使用非默认编码进行查询的问题
- 使用 /sys 文件系统访问 Linux 内核:比/proc 更为理想的访问内核数据的途径
- 解决 linux 编译定制新内核后 virtualbox和vmware无法使用的问题
- Linux下使用VMware安装Win10的网络问题
- 使用 /sys 文件系统访问 Linux 内核:比/proc 更为理想的访问内核数据的途径
- Linux使用问题杂记--解决Ubuntu网络服务图标不显示
- linux下网络服务器模型以及使用时应该注意的问题