最近学习嵌入式,使用的是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
有网络真好啊,可以站在巨人的肩膀之上。
在嵌入式开发中,作者遇到移植Mini2440到NAND驱动时出现的错误,并通过查找原因和解决方法,最终成功解决了问题。包括在mach-mini2440.c中加入必要的头文件和在特定函数中添加代码来解决问题。
501

被折叠的 条评论
为什么被折叠?



