linux-2.6.14移植到S3C2440
Mounted devfs on /dev
Freeing init memory: 92K
Failed to execute /linuxrc. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
这个问题只能先放一下,最后成功挂载nfs。yaffs2格式文件系统的问题以后再深入研究。整理一下最近做过的东西,怕遗忘了。
1.顶层Makefile的修改
[plain]view plaincopyprint?
- ARCH?=arm
- CROSS_COMPILE?=arm-linux-
2.修改时钟频率
linux/arch/arm/mach-s3c2410/mach-smdk2440.c
[plain]view plaincopyprint?
- staticvoid__initsmdk2440_map_io(void)
- {
- s3c24xx_init_io(smdk2440_iodesc,ARRAY_SIZE(smdk2440_iodesc));
- s3c24xx_init_clocks(12000000);//12M
- s3c24xx_init_uarts(smdk2440_uartcfgs,ARRAY_SIZE(smdk2440_uartcfgs));
- s3c24xx_set_board(&smdk2440_board);
- }
3.修改机器ID
linux/arch/arm/tools/mach-types
s3c2440 ARCH_S3C2440 S3C2440 168
这个值要和uboot中的值对应起来,在uboot的arch/arm/tools/mach-types中有如下定义:
#define MACH_TYPE_S3C2440 168
这两个值一样即可。
4.设置Nand Flash分区
4.1建立Nand Flash分区表
在linux/arch/arm/mach-s3c2410/devs.c中增加
[plain]view plaincopyprint?
- #include
- #include
- #include
- /*NANDparititon*/
- staticstructmtd_partitionsmdk_default_nand_part[]={
- [0]={
- .name="Board_uboot",
- .offset=0x00000000,
- .size=0x00080000,
- },
- [1]={
- .name="Board_kernel",
- .offset=0x00240000,
- .size=0x00200000,
- },
- [2]={
- .name="Board_yaffs2",
- .offset=0x00440000,
- .size=0x0FB40000,
- }
- };
size:代表flash分区大小(单位:字节)
offset:代表flash分区的起始地址(相对于0x0的偏移)
划分3个区,分别存放uboot, kernel和文件系统。
4.2.加入Nand Flash分区
[plain]view plaincopyprint?
- staticstructs3c2410_nand_setsmdk_nand_sets[]={
- [0]={
- .name="NAND",
- .nr_chips=1,
- .nr_partitions=ARRAY_SIZE(smdk_default_nand_part),
- .partitions=smdk_default_nand_part,
- },
- };
partitions:分区信息表
4.3.建立Nand Flash芯片支持
[plain]view plaincopyprint?
- staticstructs3c2410_platform_nandsmdk_nand_info={
- .tacls=20,
- .twrph0=60,
- .twrph1=20,
- .nr_sets=ARRAY_SIZE(smdk_nand_sets),
- .sets=smdk_nand_sets,
- };
sets:支持的分区集
nr_set:分区集的个数
4.4.加入Nand Flash芯片支持到Nand Flash驱动
[plain]view plaincopyprint?
- structplatform_devices3c_device_nand={
- .name="s3c2410-nand",
- .id=-1,
- .num_resources=ARRAY_SIZE(s3c_nand_resource),
- .resource=s3c_nand_resource,
- .dev={
- .platform_data=&smdk_nand_info
- }
- };
name:设备名称
id:有效设备编号,如果只有唯一的一个设备为-1,有多个设备从0开始计数.
num_resource:有几个寄存器区
resource:寄存器区数组首地址
dev:支持的Nand Flash设备
4.5指定启动时初始化
linux/arch/arm/mach-s3c2410/mach-smdk2440.c
[plain]view plaincopyprint?
- staticstructplatform_device*smdk2440_devices[]__initdata={
- &s3c_device_usb,
- &s3c_device_lcd,
- &s3c_device_wdt,
- &s3c_device_i2c,
- &s3c_device_iis,
- &s3c_device_nand,//增加
- };
5.禁止Flash ECC校验
修改drivers/mtd/nand/s3c2410.c 文件s3c2410_nand_init_chip()函数,在该函数体最后加上一条语句:
[plain]view plaincopyprint?
- chip->eccmode=NAND_ECC_NONE;
6.支持devfs
在2.6.14中已经不支持devfs了,内核配置文件中已经没有了相关的配置选择,但其代码还保留了。修改fs/Kconfig文件找到menu "Pseudo filesystems"添加如下语句:
[plain]view plaincopyprint?
- configDEVFS_FS
- bool"/devfilesystemsupport(OBSOLETE)"
- dependsonEXPERIMENTAL
- help
- Thisissupportfordevfs,avirtualfilesystem(like/proc)which
- providesthefilesysteminterfacetodevicedrivers,normallyfound
- in/dev.Devfsdoesnot
linux-2 6 14移植S3C244 相关文章:
- 基于飞凌2440开发板的linux-2.6.28移植过程(11-25)
- linux-2.6.30.4移植至2440开发板(11-22)
- linux-2.6.14移植:NET: Registered protocol family 1卡住(11-22)
- linux-2.6.14挂载NFS文件系统(11-22)
- linux-2.6.35.3内核移植(s3c2440)(11-20)
- TE2410移植linux-2.6.14及调试过程总结(1)(11-10)