微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > linux-2.6.35.3内核移植(s3c2440)

linux-2.6.35.3内核移植(s3c2440)

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

ECC校验

文件:drivers/mtd/nand/s3c2410.c
函数:s3c2410_nand_init_chip

/*chip->ecc.mode = NAND_ECC_SOFT; */chip->ecc.mode = NAND_ECC_NONE;

问题:关于ECC:ECC是“Error Correcting Code”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现

“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个

电脑系统在工作时更趋于安全稳定。此处为避免容易出错,将ECC关闭。

7、修改nandflash驱动,支持K9F1G08的nandflash

修改drivers/mtd/nand下面的nand_bbt.c文件:

static struct nand_bbt_descr largepage_memorybased = {

.options = 0,

.offs = 0,

.len = 1, //原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash

.pattern = scan_ff_pattern

};

static struct nand_bbt_descr largepage_flashbased = {

.options = NAND_BBT_SCAN2NDPAGE,

.offs = 0,

.len = 1, //原数值为2,支持2K每页的flash修改为1。K9F1G08,K9F2G08是2k每页的flash

.pattern = scan_ff_pattern

};

8、下面,开始配置内核。

进入linux-2.6.35目录,把s3c2410的默认配置写入config文件。

make s3c2410_defconfig

make menuconfig

配置文件系统选项
配置yaffs2文件系统
修改配置如下:

File systems --->

[*] Miscellaneous filesystems --->

<*> YAFFS2 file system support

-*- 512 byte / page devices

-*- 2048 byte (or larger) / page devices

[*] Autoselect yaffs2 format

[*] Cache short names in RAM

配置cpu相关选项
修改配置如下:

System Type --->

S3C2440 Machines --->

[*] SMDK2440

[*] SMDK2440 with S3C2440 CPU module

去掉S3C2400 Machines、S3C2410 Machines、S3C2412 Machines、S3C2442 Machines的所有选项,

否则会报错。如果现在编译内核,下载到开发板中,内核就可以正常启动了.有了雏形,继续移植设备驱动。

这里,内核选项*代表编译至内核,M代表编译为模块。

9、移植USB host驱动

在这个版本的linux内核,已经对USB驱动进行来很好的支持,仅仅需要修改配置。

Device Drivers --->

[*] USB support --->

{*} Support for Host-side USB

[*] USB device filesystem (DEPRECATED)

[*] USB device class-devices (DEPRECATED)

<*> OHCI HCD support

<*> USB Mass Storage support

[*] HID Devices --->

{*} Generic HID support

[*] /dev/hidraw raw HID device support

SCSI device support --->

<*> SCSI device support

[*] legacy /proc/scsi/ support

<*> SCSI disk support

<*> SCSI tape support

10、移植RTC驱动

在这个版本的linux内核,已经对RTC驱动进行来很好的支持,不需要修改配置。相应配置如下

Device Drivers --->

<*> Real Time Clock --->

[*] Set system time from RTC on startup and resume

(rtc0) RTC used to set the system time

[ ] RTC debug support

*** RTC interfaces ***

[*] /sys/class/rtc/rtcN (sysfs)

[*] /proc/driver/rtc (procfs for rtc0)

[*] /dev/rtcN (character devices)

<*> Samsung S3C series SoC RTC

然后添加对设备的支持
打开arch/arm/mach-s3c2440/mach-smdk2440.c,添加设备,代码如下:

static struct platform_device *smdk2440_devices[] __initdata = {

&s3c_device_ohci,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&s3c_device_rtc,

};

11、移植UDA1341驱动

在平台上添加和配置UDA1341:

修改arch/arm/mach-s3c2440/mach-smdk2440.c,在开始添加头文件

#include

#include

添加设备配置

static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = {

.l3_clk = S3C2410_GPB(4),

.l3_data = S3C2410_GPB(3),

.l3_mode = S3C2410_GPB(2),

.model = UDA134X_UDA1341,

};

static struct platform_device s3c24xx_uda134x = {

.name = "s3c24xx_uda134x",

.dev = {

.platform_data = &s3c24xx_uda134x_data,

}

};

把设备添加到平台当中

static struct platform_device *smdk2440_devices[] __initdata = {

&s3c_device_ohci,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&s3c_device_rtc,

&s3c24xx_uda134x,

};

内核配置如

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

网站地图

Top