主题 : S3c2440 Linux内核移植出问题啦,高手快来解决 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 26812
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2010-08-14
最后登录: 2010-11-16
楼主  发表于: 2010-08-21 18:26

 S3c2440 Linux内核移植出问题啦,高手快来解决

我按照最新mini2440 linux移植开发指南时,在操作“移植Nand 驱动并更改分区信息”时,按照文档修改后,再编译zImage时,总是编译通不过,下面是出错信息
arch/arm/mach-s3c2440/mach-mini2440.c:155: error: array type has incomplete element type
arch/arm/mach-s3c2440/mach-mini2440.c:156: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:156: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:158: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:158: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:160: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:160: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:162: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:162: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:165: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:165: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:166: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:166: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:168: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:168: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:170: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:170: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:173: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:173: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:174: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:174: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:176: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:176: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:178: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:178: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:180: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:180: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:181: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:181: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:183: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:183: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:185: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:185: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:187: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:187: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:188: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:188: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:190: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:190: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:192: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:192: error: (near initialization for 'mini2440_default_nand_part')
arch/arm/mach-s3c2440/mach-mini2440.c:197: error: array type has incomplete element type
arch/arm/mach-s3c2440/mach-mini2440.c:198: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:198: error: (near initialization for 'mini2410_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:199: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:199: error: (near initialization for 'mini2410_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:200: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:200: error: (near initialization for 'mini2410_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:201: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:201: error: (near initialization for 'mini2410_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:201: warning: type defaults to 'int' in declaration of 'type name'
arch/arm/mach-s3c2440/mach-mini2440.c:201: warning: type defaults to 'int' in declaration of 'type name'
arch/arm/mach-s3c2440/mach-mini2440.c:201: error: negative width in bit-field '<anonymous>'
arch/arm/mach-s3c2440/mach-mini2440.c:202: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:202: error: (near initialization for 'mini2410_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:205: error: variable 'mini2440_nand_info' has initializer but incomplete type
arch/arm/mach-s3c2440/mach-mini2440.c:206: error: unknown field 'tacls' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:206: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:206: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:207: error: unknown field 'twrph0' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:207: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:207: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:208: error: unknown field 'twrph1' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:208: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:208: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:209: error: unknown field 'nr_sets' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:209: error: 'mini2440_nand_sets' undeclared here (not in a function)
arch/arm/mach-s3c2440/mach-mini2440.c:209: warning: type defaults to 'int' in declaration of 'type name'
arch/arm/mach-s3c2440/mach-mini2440.c:209: warning: type defaults to 'int' in declaration of 'type name'
arch/arm/mach-s3c2440/mach-mini2440.c:209: error: negative width in bit-field '<anonymous>'
arch/arm/mach-s3c2440/mach-mini2440.c:209: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:209: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:210: error: unknown field 'sets' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:210: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:210: warning: (near initialization for 'mini2440_nand_info')
arch/arm/mach-s3c2440/mach-mini2440.c:211: error: unknown field 'ignore_unset_ecc' specified in initializer
arch/arm/mach-s3c2440/mach-mini2440.c:211: warning: excess elements in struct initializer
arch/arm/mach-s3c2440/mach-mini2440.c:211: warning: (near initialization for 'mini2440_nand_info')
*****************************************************************************************************
基本上我修改的每一行都出错了,请帮忙一下,这到底是什么回事啊,我对了好几遍,是和文档上操作一样的
附件设置隐藏,需要回复后才能看到
级别: 侠客
UID: 11034
精华: 0
发帖: 71
金钱: 355 两
威望: 71 点
综合积分: 142 分
注册时间: 2009-11-25
最后登录: 2018-02-08
1楼  发表于: 2010-08-30 15:09
嗯 我这两天也是碰到这个问题,大侠们,抽个时间帮帮我们看下呀
级别: 新手上路
UID: 30250
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2010-10-14
最后登录: 2012-05-07
2楼  发表于: 2010-10-16 10:27
我也是这个问题,不知道怎样才能解决……
级别: 新手上路
UID: 30250
精华: 0
发帖: 43
金钱: 215 两
威望: 43 点
综合积分: 86 分
注册时间: 2010-10-14
最后登录: 2012-05-07
3楼  发表于: 2010-10-16 10:47
我会了……
更改drivers/mtd/nand/s3c2410.c关闭ecc校验

    chip->ecc.mode        = NAND_ECC_SOFT;

改为:chip->ecc.mode        = NAND_ECC_NONE;
然后:
在macn-mini2440中添加头文件

#include <plat/common-smdk.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h>
#include <plat/nand.h>
再编译zImage就OK了……
级别: 新手上路
UID: 30571
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2010-10-18
最后登录: 2012-04-16
4楼  发表于: 2011-03-14 19:34
其实就是缺少头文件,大家可以对着移植好的linux2.6.32.2文件夹里相应的文件来看,你就会发现,友善移植教程里虽然全面,但是还是有些小问题的。