最近学习嵌入式,使用的是mini2440。
依照《Mini2440 Linux移植开发实战指南》移植到Nand驱动了,但是按照手册步骤,出问题了,出现错误如下:
error: array type has incomplete element type
error: array index in non-array initializer
error: (near initialization for 'mini2440_default_nand_part')
error: field name not in record or union initializer
error: (near initialization for 'mini2440_default_nand_part')
error: field name not in record or union initializer
error: (near initialization for 'mini2440_default_nand_part')
..................................
反复看着手册进行对比,感觉是nandflash没有定义,最后通过于mini2440 官方给出的arch/arm/mach-s3c2440/mach-mini2440.c进行详细对比得出,是因为没有包含头文件的问题,呵呵简单的问题,就是没有想到。
修改之后编译成功了内核,下载后发现缺少打印关于nandflash的信息,网上查询得知解决方法,一下就直接复制这位博主的博文:
头文件的问题,于是在的mach-mini2440.c中加入
#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>
果然make过了,不过仍然有一行warning:
arch/arm/mach-s3c2440/mach-mini2440.c:233: warning: 'mini2440_nand_info' defined but not used
把生成的zImage下载到板子上运行,也没有出现该文中所描述的情形,初步估计还是移植失败
看来该文漏洞不少,这次不得不依靠网上的高手了。
warning: 'mini2440_nand_info' defined but not used
终于还是解决了,在这个函数
static void __init mini2440_map_io(void)
{
}
中加入以下代码:
s3c_device_nand.dev.platform_data = &mini2440_nand_info;
再次make zImage,没有再出现warning,下载到板子, 成功出现了nand flash的分区信息。
参考于:http://blog.chinaunix.net/space.php?uid=26877317&do=blog&id=3181527
有网络真好啊,可以站在巨人的肩膀之上。