错误1:
arch/arm/mach-s3c2440/mach-mini2440.c:84: error: array type has incomplete element type
arch/arm/mach-s3c2440/mach-mini2440.c:85: error: array index in non-array initializer
arch/arm/mach-s3c2440/mach-mini2440.c:85: error: (near initialization for 'mini2440_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:86: error: field name not in record or union initializer
arch/arm/mach-s3c2440/mach-mini2440.c:86: error: (near initialization for 'mini2440_nand_sets')
arch/arm/mach-s3c2440/mach-mini2440.c:87: error: field name not in record or union initializer
解决:
在linux2.6.32/arch/arm/mach-s3c2440/mach-mini2440.c中添加头文件
#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>
在linux2.6.32/arch/arm/mach-s3c2440/mach-mini2440.c添加红色部分
static void __init mini2440_machine_init(void)
{
s3c24xx_fb_set_platdata(&mini2440_fb_info);
s3c_i2c0_set_platdata(NULL);
s3c_device_nand.dev.platform_data = &mini2440_nand_info;
platform_add_devices(mini2440_devices, ARRAY_SIZE(mini2440_devices));
//smdk_machine_init();
}
错误2:
0x000000000000-0x000000040000 : "supervivi"
0x000000040000-0x000000060000 : "param"
ftl_cs: FTL header not found.
0x000000060000-0x000000560000 : "Kernel"
uncorrectable error :
0x000000560000-0x000040560000 : "root"
mtd: partition "root" extends beyond the end of device "NAND 256MiB 3,3V 8-bit"0
0x000000000000-0x000040000000 : "nand"
mtd: partition "nand" extends beyond the end of device "NAND 256MiB 3,3V 8-bit"0
解决:
重新配置内核,取消下面三个选项(黄色部分)。
在Make menuconfig时:
Device Drivers ->
Memory Technology Devices (MTD) ->
不要选择下面这三个选项
<>FTL (Flash Translation Layer) support
<> NFTL (NAND Flash Translation Layer) support
<>INFTL (Inverse NAND Flash Translation Layer) support
然后保存配置并重新编译即可
错误3:
在按照手册执行:./patch-ker.sh /home/song/linux-2.6.32.2/的时候,出现以下提示
usage: ./patch-ker.sh c/l m/s kernelpath
if c/l is c, then copy. If l then link
if m/s is m, then use multi version code. If s then use single version code
并且linux2.6.32.2/fs下也没有yaffs2文件夹
解决:
执行命令:./patch-ker.sh c m /home/song/linux-2.6.32.2/
这时候就出现正确的提示了
Updating /home/song/linux-2.6.32.2//fs/Kconfig
Updating /home/song/linux-2.6.32.2//fs/Makefile
错误4:
按照手册移植完yaffs2文件重启后出现
yaffs: dev is 32505859 name is "mtdblock3" rw
yaffs: passed flags ""
VFS: Mounted root (yaffs filesystem) on device 31:3.
Freeing init memory: 132K
Warning: unable to open an initial console.
[01/Jan/1970:00:00:13 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:13 +0000] boa: server built Jul 26 2010 at 15:58:29.
[01/Jan/1970:00:00:13 +0000] boa: starting server pid=749, port 80
Try to bring eth0 interface up......Done
然后就没有然后了
解决方法:
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
这两项都选上,原因是友善的根文件系统在编译的时候也启用了EABI特性,内核和文件系统需要对上,文件系统用了EABI 内核也要用EABI 内核不用EABI 也只能读取不用EABI的文件系统。
这时候文件系统就启动起来了,如下
http://blog.chinaunix.net/uid-22391661-id-1774353.html
http://blog.chinaunix.net/uid-25194149-id-3235257.html
http://bbs.chinaunix.net/thread-4057984-1-1.html
错误5:
我的mini2440开发板上的x35屏没有显示。
解决方法:在arch/arm/mach-s3c2440/mach-mini2440.c中添加以下代码支持我的x35屏
同时在drivers/video/Kconfig 添加代码如下
错误6
移植完触摸屏驱动后,我的mini2440板子并没有出现校正界面,移植停留在qt的主界面。
解决方法:
先将编译好的内核下载进去,再重新下镜像文件。