• 沒有找到結果。

第 4 章 嵌入式 LINUX 内核移植

4.3 内核移植

4.3.1 内核配置

4.3.1.3 配置内核选项

struct nand_chip *chip = &nmtd->chip;

chip->IO_ADDR_R = (char *)info->regs + S3C2410_NFDATA;

chip->IO_ADDR_W = (char *)info->regs + S3C2410_NFDATA;

chip->hwcontrol = s3c2410_nand_hwcontrol;

chip->dev_ready = s3c2410_nand_devready;

chip->cmdfunc = s3c2410_nand_command;

chip->write_buf = s3c2410_nand_write_buf;

chip->read_buf = s3c2410_nand_read_buf;

chip->select_chip = s3c2410_nand_select_chip;

chip->chip_delay = 50;

chip->priv = nmtd;

chip->options = 0;

chip->controller = &info->controller;

nmtd->info = info;

nmtd->mtd.priv = chip;

nmtd->set = set;

if (hardware_ecc) {

chip->correct_data = s3c2410_nand_correct_data;

chip->enable_hwecc = s3c2410_nand_enable_hwecc;

chip->calculate_ecc = s3c2410_nand_calculate_ecc;

chip->eccmode = NAND_ECC_HW3_512;

chip->autooob = &nand_hw_eccoob;

} else {

chip->eccmode = NAND_ECC_NONE; //修改此行的赋值 }

}

… …

到此已经完成了新的内核对 NAND Flash 分区的支持,下面将介绍配置内核的主要选 项。

4.3.1.3 配置内核选项

配置内核选项是移植内核过程中很重要的一步,也是非常复杂的一步,配置时一定要细 心。由于我们的开发板很接近 Linux 内核中提供的 smdk2410 开发板,所以可以参考 smdk2410 开发板的配置文件,将其默认的配置文件拷贝到内核代码的根目录下,然后开始配置内核,

操作如下:

# cd linux-2.6.10

# cp arch/arm/configs/smdk2410_defconfig .config

# make menuconfig

l Misc devices --->

Loadable module support --->

[*] Enable loadable module support # 该选项的目的是使内核支持可加载模块,使用 modprobe, lsmod, modinfo, insmod, rmmod 等工具需要,所以必须选择。

[*] Module unloading # 卸载模块选项,这里选择该选项。

接着加入内核对 S3C2410 DMA(Direct Memory Access,直接内存访问)的支持,具体 配置选项如下:

System Type -->

[*] S3C2410 DMA support # 该选项来支持S3C2410 DMA特性。

然后在General setup ---> Default kernel command string 菜单下修改默认的内核启动参 数,修改后内容如下:

noinitrd root=/dev/mtdblock2 init=/linuxrc console= ttySAC0,115200 mem=64M 对上面的参数解释一下,mtdblock2代表使用第3个flash分区(也就是我们建立的rootfs 分区),用来作根文件系统;console=ttySAC0,115200使kernel启动期间的信息全部输出到串 口0上,波特率为115200;Linux 2.6内核对于串口的命名改为ttySAC0,在2.4内核中,串口 名为ttyS0,使用时请注意。mem=64M表示内存大小是64M。

同时还需要添加对浮点算法的支持,在菜单下选择:

General setup --->

[*] NWFPE math emulation #支持NWFPE浮点库,在许多情况下要使用,所以最好 选上。

接下来做对MTD设备(如flash, ram等芯片)的配置,如下选择配置:

Memory Technology Devices (MTD) -->

[*] MTD partitioning support RAM/ROM/Flash chip drivers -->

[*] Detect flash chips by Common Flash Interface (CFI) probe

[*] Detect nonCFI AMD/JEDECcompatible flash chips [*] Support for Intel/Sharp flash chips

[*] Support for AMD/Fujitsu flash chips [*] Support for ROM chips in bus mapping NAND Flash Device Drivers -->

[*] NAND Device Support

[*] NAND Flash support for S3C2410/S3C2440 SoC

为了我们要移植的内核支持devfs(Device Filesystem,设备文件系统),以及在启动时 能自动加载/dev为devfs。需要针对文件系统的设置,由于我们目标板上要用的文件系统是 cramfs,所以需要做如下配置:

File systems -->

[ ]Second extended fs support #去除对ext2的支持 Pseudo filesystems -->

[*] /proc file system support

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

[*] automatically mount at boot (NEW) Miscellaneous filesystems -->

[*]Compressed ROM file system support (cramfs) Network File Systems >

[*] NFS file system support

除此之外,还需要配置以下选项来支持S3C2410 RTC、USB和MMC/SD卡驱动,具体选 项如下:

Character devices -->

[*] Nonstandard serial port support [*] S3C2410 RTC Driver

USB Support -->

[*] Support for Host-side USB MMC/SD Card Support -->

[*] MMC Support

[*] MMC block device driver

以上完成了所有内核相关的基本配置,然后选择保存,默认会保存到.config文件。保存 结束显示如图4.2所示,下一步就可以进行编译内核了。

图4.2 内核配置保存