在网上看到mini2440更新了,于是下载了光盘准备把原来的系统更新一下。首先用bios命令行烧写supervivi时出现错误,大小超出了分区的大小,查看最新版的supervivi-64M是251K大小,原来的是125K,而默认的分区大小是200K,显然已经超出了,所以我选择沿用旧版的vivi;其次烧写完kernel后,运行boot命令,系统启动到解压linux内核就停止了,查看原因是Mach-type不一致,比较两个版本的内核源码,发现有3个重大的改变:
1.增加了对TFT640*480屏的支持(这对我使用的N320*240屏无影响);
2.改变了MINI2440的机器码,原来是“MACHINE_START(PNX4008, "FriendlyARM Mini2440 development board")”现在是“MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board")”查看两者定义值,前者是782与旧版supervivi机器码一致,后者1999(因为我使用的是旧版vivi,所以两者不兼容,我想新版的vivi肯定也变了吧!);
3.改变了默认分区结构,增加了一个nand分区,但大小“.size = 1024 * 1024 * 1024”好像有问题。
于是修改机器码,重新编译,发现zImage大小大于2M,于是去除些配置(旧版kernel中也存在这个问题,映像文件超过2M),烧写内核和根文件系统,启动。发现运行到根文件系统时出现错误,大致意思是某些启动无法进行,于是尝试烧写旧版kernel,不存在此问题,由此看出问题应该是出在分区部分,尝试把旧版的static struct mtd_partition friendly_arm_default_nand_part[]替换新的分区,重新编译烧写,启动,OK,没问题了。我不知道其他人有没有遇到这种情况?