Mini2440 Linux移植开发实战指南——移植Nand驱动并更改分区信息

在嵌入式开发中,作者遇到移植Mini2440到NAND驱动时出现的错误,并通过查找原因和解决方法,最终成功解决了问题。包括在mach-mini2440.c中加入必要的头文件和在特定函数中添加代码来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近学习嵌入式,使用的是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

 

有网络真好啊,可以站在巨人的肩膀之上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值