主题 : 关于加入sched.h头文件出错的现象 复制链接 | 浏览器收藏 | 打印
impossible or i'm possible
级别: 新手上路
UID: 65667
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2012-03-21
最后登录: 2012-07-09
楼主  发表于: 2012-04-16 21:17

 关于加入sched.h头文件出错的现象

大家好,我在用tiny6410写内核模块的时候,如下面,是一个简单的带参数输入的简单模块。在编译的时候,当加入sched.h这个头文件时,生成的.ko文件无法拉到目标板子上(无论通过NFS还是SD卡),表现为系统未相应,卡在那里。但是去掉#include<linux/sched.h>,则一切正常,编译好的模块能在板子上装载,我在网速搜索很久也没优找到答案,请大侠帮忙看看。

程序:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/init.h>
static int itype=0;
module_param(itype,int,0);
static int __init mini6410_hello_module_init(void)
{
    printk("Hello, module is installed !\n");
    printk("itype=%d\n",itype);
    return 0;
}

static void __exit mini6410_hello_module_cleanup(void)
{
    printk("Good-bye, module was removed!\n");
}

module_init(mini6410_hello_module_init);
module_exit(mini6410_hello_module_cleanup);
MODULE_LICENSE("GPL");
impossible or i'm possible
级别: 新手上路
UID: 65667
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2012-03-21
最后登录: 2012-07-09
1楼  发表于: 2012-04-17 16:42
没有大侠知道吗  求帮忙
impossible or i'm possible
级别: 新手上路
UID: 65667
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2012-03-21
最后登录: 2012-07-09
2楼  发表于: 2012-04-18 14:45
经过测试,同样的.c文件,使用主机UBUNTU的内核目录与GCC 编译的.ko文件能够正常在主机上装载卸载,一切正常,而用开发板安装的linux-2.6.38的文件夹和arm-linux-gcc(版本为4.5.1)编译的程序,有一部分能在开发板上装载,有些无法装载,表现为模块类型错误,编译的时候都是能够正常编译生成.ko文件的。比如上面写到的程序,加入#include<linux/sched.h>后,编译生成的ko文件就无法在板子上加载。去掉就可以。板子上运行的是linux-qtopia ,而编译用的内核目录为友善提供的linux-2.6.38,有没有可能是这两个不匹配?弱弱的问一句,开发板上跑的linux系统,在lib/modules/$(shell uname -r)/目录下为什么没有include文件夹,而且build是打不开的。而主机的改目录下的build可以打开,且里面有include等文件
impossible or i'm possible
级别: 新手上路
UID: 65667
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2012-03-21
最后登录: 2012-07-09
3楼  发表于: 2012-04-19 10:39
报告最新进展,经过测试,想要拉到开发板的文件(无论什么文件),当大于40K左右的时候,就会失败。NFS模式下没有相应,用SD卡拉过去的时候显示:
FAT: Filesystem error (dev mmcblk0p1)                                          
    fat_get_cluster: invalid cluster chain (i_pos 7298)    

我的主机是UBUNTU的EXT4文件系统  ,开发板是按照手册上使用SD卡脱机快速安装系统,手册上写着为UBIFS格式。请问是不是因为文件系统格式的不一样,导致大一点的文件不能在板子上使用?
impossible or i'm possible
级别: 新手上路
UID: 65667
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2012-03-21
最后登录: 2012-07-09
4楼  发表于: 2012-04-19 17:30
终于解决了,虽然中间卡了我挺久,但是还是准备把问题解决方案发出来,防止像我这样的菜鸟痛苦,回过头想,想想一开是自己的提问,貌似跟最后的问题不太相干,真是惭愧。
首先先说SD卡出错的问题,发现出错无法拉到板子上的原因,原来是因为我忽略了文档中经常提到的,最好不要同电脑自带的读卡器,现在额外接一个USB读卡器,就都OK了,
用手提自带的读卡器会导致出错,具体原因不明,导致板子上无法读取。


至于大的文件无法拉到开发板的问题,最后发现是因为具有较高的传送速率的NFS主机网卡和较低速率的目标机网卡之间不匹配,要解决此问题需要在挂载文件系统时添加额外的参数。
比如 mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 59.70.245.216:/home/lizhao/rootfs  /mnt/nfs

ntr -- 当服务器宕机或者无法到达时,允许中断NFS请求。 nolock--禁用文件锁。 rsize = 8192 和 wsize=8192  -- 通过设定大的同时传输的数据块大小(bytes),以提高NFS读写的速度。改变这些值时要当心,一些旧的linux内核和网卡在大的块大小不能正常工作。

由于这两个问题一起,才让我一开始错误以为是内核模块编译错误的问题,还怀疑过是因为电脑文件系统跟开发板文件系统不匹配等。。。。。。。。。。

好 结帖啦
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2012-04-19 19:23
http://www.aiothome.net/read.php?tid-168.html
希望这个小故事对你有所帮助
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
impossible or i'm possible
级别: 新手上路
UID: 65667
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
综合积分: 28 分
注册时间: 2012-03-21
最后登录: 2012-07-09
6楼  发表于: 2012-04-19 20:31
谢谢楼上的故事