vivi的版本为1.4.现在讲一下具体修改的过程.首先是下载vivi源代码,解压缩.然后是修改一,makefile,具体是:
修改为“LINUX-INCLUDE-DIR = /usr/local/arm/2.95.3/include”,就是自己的编译器路径
修改为“CROSS-COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-”
修改为"ARM_GCC_LIBS = /usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3"
二,修改arch/s3c2410/smdk2410.c
修改为
#ifdef CONFIG_S3C2410_NAND_BOOT
mtd_partition_t default_mtd_partitions[] = {
{ /* 128KB */
name: "vivi",
offset: 0,
size: 0x00020000,
flag: 0
}, {/* 64KB */
name: "param",
offset: 0x00020000,
size: 0x00010000,
flag: 0
}, {/* 2MB */
name: "kernel",
offset: 0x00030000,
size: 0x00200000,
flag: 0
}, {
name: "root",
offset: 0x00230000,
size: 0x03DD0000,
flag: MF_BONFS
}
};
#endif
修改cmd_line,因为我是用linux2.6的内核,还想使用ramdisk,所以设置为:
char linux_cmd[] = "noinitrd root=/dev/mtdblock/3 init=/linuxrc console=ttySAC0";
然后make menuconfig,也没加什么东西,参考一个已经好的vivi,也没改什么。只有一个promt command
三,支持烧写yaffs映象文件的bootloader vivi
在samsung公司提供的bootloader vivi上作了如下修改:
1. 增加了lib/loadyaffs.c文件,实现了烧写yaffs映象文件
2. 修改lib/command.c文件,增加了loadyaffs命令:add_command(&loadyaffs_cmd)
#ifdef CONFIG_LOAD_YAFFS
add_command(&loadyaffs_cmd);
#endif
修改find_cmd函数,如果使用老的find_cmd函数的话,比如对于两个命令xxxxyyyyy、xxxx,
则xxxxyyyyy总会被当作xxxx命令来使用
// if (strncmp(curr->name, cmdname, strlen(cmdname)) == 0)
if (strcmp(curr->name, cmdname) == 0)
-
修改lib/Config_cmd.in ,增加如下一行使得loadyaffs命令可作为可选项:
bool 'load yaffs to flash command' CONFIG_LOAD_YAFFS -
修改makefile 文件,添加
obj-$(CONFIG_LOAD_YAFFS) += loadyaffs.o
声明:
由于这次作Linux确实是第一次接触,大量查找了网上的资源,目的也就是编一个最为简单的操作系统,于是乎所作步骤所写总结可能会很多copy自其他地方,敬请作者谅解
备注:
vivi 版本:vivi 0.1.4
编译器版本:arm-linux-gcc2.95.3
参考文档:http://whatnetmarc.spaces.live.com/blog/移植vivi成功
http://www.linuxforum.net/forum/showthreaded.php?Board=embedded&Number=596167