微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > linux-2.6.30.4移植至2440开发板

linux-2.6.30.4移植至2440开发板

时间:11-22 来源:互联网 点击:

drivers/mtd/nand/Kconfig

166 choice

167prompt "Nand Flash Capacity select"

168depends on MTD

169help

170Board Nand Flash Capacity select

171

172 config 64MB_NAND

173 boolean "64MB Nand for Board"

174depends on MTD

175help

176Set 64MB Nand parts

177

178 config 128MB_NAND

179boolean "128MB Nand for Board"

180depends on MTD

181help

182Set 128MB Nand parts

183

184 config more_than_256MB_NAND

185boolean "256MB~1GB Nand for Board"

186depends on MTD

187help

188Set 256MB~1GB Nand parts

189

190 endchoice

注:如果在make menuconfig中选中64MB_NAND,则在.config表现形式如下:

CONFIG _64MB_NAND=y

这实际是给C源文件提供预编译变量,如#if defined(CONFIG_64MB_NAND).......

这个过程就是实现了内核的定制,比如新增Nand驱动、或者去除wireless驱动。。。

十、移植yaffs2文件系统

1、获取yaffs2源码

http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/

www.aleph1.co.uk/home/aleph1/git/yaffs2

2、在内核中添加对yaffs2的支持

在刚下载的yaffs2源码中,执行:

./patch-ker.sh c ../linux-2.6.30.4(两个文件夹放一起)

此时在内核fs目录下,新增“yaffs2”目录,同时fs/目录下面的Makefile文件和Kconfig文件也添加了yaffs2的配置和编译条件。

3、在配置单中添加对yaffs2的支持

$make menuconfig

File systems --->

[*]Miscellaneous filesystems --->

<*> YAFFS2 file system support

注意:假如在内核中没有添加对yaffs2的支持,则出现找不到或者挂载文件系统是失败的提示:

Listof all partitions:

01004096 ram0 (driver?)

01014096 ram1 (driver?)

01024096 ram2 (driver?)

01034096 ram3 (driver?)

01044096 ram4 (driver?)

01054096 ram5 (driver?)

01064096 ram6 (driver?)

01074096 ram7 (driver?)

01084096 ram8 (driver?)

01094096 ram9 (driver?)

010a 4096 ram10 (driver?)

010b4096 ram11 (driver?)

010c 4096 ram12 (driver?)

010d4096 ram13 (driver?)

010e4096 ram14 (driver?)

010f 4096 ram15 (driver?)

1f00 256 mtdblock0 (driver?)

1f01 2048 mtdblock1 (driver?)

1f02 63168 mtdblock2 (driver?)

Nofilesystem could mount root, tried: ext3 ext2 cramfs msdos vfat romfs

Kernel panic - not syncing: VFS: Unable tomount root fs on unknown-block(31,2)

4、yaffs2移植完成,重新编译内核

十一、在内核中添加tmpfs支持

如果不添加tmpfs支持,那么将会出现那/tmp挂载失败的提示。关于tmpfs的作用待研究。

mount: mounting tmpfs on /tmp failed: Invalidargume

文件系统配置:

[root@ /]#cat /etc/fstab

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /dev tmpfs defaults 0 0

var /dev tmpfs defaults 0 0

File systems --->

Pseudo filesystems --->

[*] Virtual memory file system support(former shm fs)

[*]Tmpfs POSIX Access Control Lists

十二遇到的问题及解决方案

drivers/rtc/hctosys.c:unable to open rtc device (rtc0)

1. 内核配置选项

--- Real TimeClock
[*] Set system time from RTC on startup andresume
(rtc0) RTC used to set the systemtime
[ ] RTC debugsupport
*** RTC interfaces***
[*] /sys/class/rtc/rtcN(sysfs)
[*] /dev/rtcN (characterdevices)
[ ] RTC UIE emulation on devinterface
*** on-CPU RTC drivers***
<*> Samsung S3Cseries SoC RTC

2. linux kernel 中 已经支持S3C2410的RTC,但是并没有添加到平台设备初始化数组中,所以系统启动时并不会初始化这一部分,需要修改文件mach-smdk.c

static struct platform_device*smdk2410_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c0,
&s3c_device_iis,
&s3c_device_rtc, //新增代码
};

3. 创建设备节点,在文件系统/dev目录下执行:

sudo mknod rtc c 10 135

4. 重新编译内核,查看启动信息

s3c2410-rtcs3c2410-rtc: rtc disabled,re-enabling

s3c2410-rtcs3c2410-rtc: rtc core:registered s3c asrtc0

这里说明rtc驱动起来可以正常工作了

uncorrectable error :<3>end_request: I/O error, dev mtdblock2, sector 2

EXT3-fs: unable to readsuperblock

uncorrectable error :<3>end_request: I/O error, dev mtdblock2, sector 2

EXT2-fs: unable to readsuperblock

uncorrectable error :<3>end_request: I/O error, dev mtdblock2, sector 0

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top