port linux 2.6.11.7 kernel to s3c2410(SMDK2410)

来源:互联网 发布:ug8.5编程教程入门 编辑:程序博客网 时间:2024/06/05 14:31

port linux 2.6.11.7 kernel to s3c2410(SMDK2410)

                                      

 

1 preparation

my board is s3c2410 SMDK2410

a>download kernel

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.7.tar.gz

decompress and no patch is needed

b>install the gcc compiler

ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

2 modify kernel source

a>add your nand flash partition information

modify the arch/arm/mach-s3c2410/devs.c file

for example:

 

/***********add here*************/

#include <linux/mtd/partitions.h>

#include <asm/arch/nand.h>

#include <linux/mtd/nand.h>

/***********end add*************/

 

...

 

/*****************************add here***************************/

static struct mtd_partition partition_info[] ={

{

name: "loader",

size: 0x00020000,

offset: 0,

}, {

name: "param",

size: 0x00010000,

offset: 0x00020000,

}, {

name: "kernel",

size: 0x001c0000,

offset: 0x00030000,

}, {

name: "root",

size: 0x00200000,

offset: 0x00200000,

mask_flags: MTD_WRITEABLE,

}, {

name: "user",

size: 0x03af8000,

offset: 0x00400000,

}

};

 

struct s3c2410_nand_set nandset ={

nr_partitions: 5 ,

partitions: partition_info ,

};

 

struct s3c2410_platform_nand superlpplatform={

tacls:0,

twrph0:30,

twrph1:0,

sets: &nandset,

nr_sets: 1,

};

/********************************end add****************************/

struct platform_device s3c_device_nand = {

.name = "s3c2410-nand",

.id = 0xec,

.num_resources = ARRAY_SIZE(s3c_nand_resource),

.resource = s3c_nand_resource,

.dev = {

.platform_data = &superlpplatform //***********add here*****

}

};

 

b>add "&s3c_device_nand" to the __initdata in the arch/arm/mach-

s3c2410/mach-smdk2410.c

c>disable the ecc

modify the drivers/mtd/nand/s3c2410.c

for example:

/**** chip->eccmode = NAND_ECC_SOFT; **/

chip->eccmode = NAND_ECC_NONE;

 

3 config the kernel

a>modify the MakeFile

for example:

##SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ /

## -e s/arm.*/arm/ -e s/sa110/arm/ /

## -e s/s390x/s390/ -e s/parisc64/parisc/ )

SUBARCH :=arm

 

##CROSS_COMPILE ?=

CROSS_COMPILE ?=/toolchain/bin/arm-linux- ##according to your situation

b>make menuconfig....

the following is my configuration

#

# Automatically generated make config: don't edit

# Linux kernel version: 2.6.11.7

# Mon May 2 14:26:10 2005

#

CONFIG_ARM=y

CONFIG_MMU=y

CONFIG_UID16=y

CONFIG_RWSEM_GENERIC_SPINLOCK=y

CONFIG_GENERIC_CALIBRATE_DELAY=y

CONFIG_GENERIC_IOMAP=y

 

#

# Code maturity level options

#

CONFIG_EXPERIMENTAL=y

CONFIG_CLEAN_COMPILE=y

CONFIG_BROKEN_ON_SMP=y

 

#

# General setup

#

CONFIG_LOCALVERSION=""

# CONFIG_SWAP is not set

CONFIG_SYSVIPC=y

# CONFIG_BSD_PROCESS_ACCT is not set

CONFIG_SYSCTL=y

# CONFIG_AUDIT is not set

CONFIG_LOG_BUF_SHIFT=14

# CONFIG_HOTPLUG is not set

# CONFIG_IKCONFIG is not set

# CONFIG_EMBEDDED is not set

CONFIG_KALLSYMS=y

# CONFIG_KALLSYMS_ALL is not set

# CONFIG_KALLSYMS_EXTRA_PASS is not set

CONFIG_FUTEX=y

CONFIG_EPOLL=y

CONFIG_CC_OPTIMIZE_FOR_SIZE=y

CONFIG_SHMEM=y

CONFIG_CC_ALIGN_FUNCTIONS=0

CONFIG_CC_ALIGN_LABELS=0

CONFIG_CC_ALIGN_LOOPS=0

CONFIG_CC_ALIGN_JUMPS=0

# CONFIG_TINY_SHMEM is not set

 

#

# Loadable module support

#

CONFIG_MODULES=y

# CONFIG_MODULE_UNLOAD is not set

CONFIG_OBSOLETE_MODPARM=y

# CONFIG_MODVERSIONS is not set

# CONFIG_MODULE_SRCVERSION_ALL is not set

CONFIG_KMOD=y

 

#

# System Type

#

# CONFIG_ARCH_CLPS7500 is not set

# CONFIG_ARCH_CLPS711X is not set

# CONFIG_ARCH_CO285 is not set

# CONFIG_ARCH_EBSA110 is not set

# CONFIG_ARCH_CAMELOT is not set

# CONFIG_ARCH_FOOTBRIDGE is not set

# CONFIG_ARCH_INTEGRATOR is not set

# CONFIG_ARCH_IOP3XX is not set

# CONFIG_ARCH_IXP4XX is not set

# CONFIG_ARCH_IXP2000 is not set

# CONFIG_ARCH_L7200 is not set

# CONFIG_ARCH_PXA is not set

# CONFIG_ARCH_RPC is not set

# CONFIG_ARCH_SA1100 is not set

CONFIG_ARCH_S3C2410=y

# CONFIG_ARCH_SHARK is not set

# CONFIG_ARCH_LH7A40X is not set

# CONFIG_ARCH_OMAP is not set

# CONFIG_ARCH_VERSATILE is not set

# CONFIG_ARCH_IMX is not set

# CONFIG_ARCH_H720X is not set

 

#

# S3C24XX Implementations

#

# CONFIG_ARCH_BAST is not set

# CONFIG_ARCH_H1940 is not set

CONFIG_ARCH_SMDK2410=y

# CONFIG_MACH_VR1000 is not set

# CONFIG_MACH_R3715 is not set

CONFIG_CPU_S3C2410=y

 

#

# S3C2410 Setup

#

# CONFIG_S3C2410_DMA is not set

CONFIG_S3C2410_LOWLEVEL_UART_PORT=0

 

#

# Processor Type

#

CONFIG_CPU_32=y

CONFIG_CPU_ARM920T=y

CONFIG_CPU_32v4=y

CONFIG_CPU_ABRT_EV4T=y

CONFIG_CPU_CACHE_V4WT=y

CONFIG_CPU_CACHE_VIVT=y

CONFIG_CPU_COPY_V4WB=y

CONFIG_CPU_TLB_V4WBI=y

 

#

# Processor Features

#

CONFIG_ARM_THUMB=y

# CONFIG_CPU_ICACHE_DISABLE is not set

# CONFIG_CPU_DCACHE_DISABLE is not set

# CONFIG_CPU_DCACHE_WRITETHROUGH is not set

 

#

# General setup

#

CONFIG_ZBOOT_ROM_TEXT=0

CONFIG_ZBOOT_ROM_BSS=0

# CONFIG_XIP_KERNEL is not set

 

#

# PCCARD (PCMCIA/CardBus) support

#

# CONFIG_PCCARD is not set

 

#

# PC-card bridges

#

 

#

# At least one math emulation must be selected

#

CONFIG_FPE_NWFPE=y

# CONFIG_FPE_NWFPE_XP is not set

# CONFIG_FPE_FASTFPE is not set

CONFIG_BINFMT_ELF=y

CONFIG_BINFMT_AOUT=y

CONFIG_BINFMT_MISC=y

 

#

# Generic Driver Options

#

CONFIG_STANDALONE=y

CONFIG_PREVENT_FIRMWARE_BUILD=y

# CONFIG_FW_LOADER is not set

# CONFIG_DEBUG_DRIVER is not set

# CONFIG_PM is not set

# CONFIG_PREEMPT is not set

# CONFIG_ARTHUR is not set

CONFIG_CMDLINE=""

CONFIG_ALIGNMENT_TRAP=y

 

#

# Parallel port support

#

# CONFIG_PARPORT is not set

 

#

# Memory Technology Devices (MTD)

#

CONFIG_MTD=y

# CONFIG_MTD_DEBUG is not set

CONFIG_MTD_PARTITIONS=y

# CONFIG_MTD_CONCAT is not set

# CONFIG_MTD_REDBOOT_PARTS is not set

# CONFIG_MTD_CMDLINE_PARTS is not set

# CONFIG_MTD_AFS_PARTS is not set

 

#

# User Modules And Translation Layers

#

CONFIG_MTD_CHAR=y

CONFIG_MTD_BLOCK=y

# CONFIG_FTL is not set

CONFIG_NFTL=y

# CONFIG_NFTL_RW is not set

# CONFIG_INFTL is not set

 

#

# RAM/ROM/Flash chip drivers

#

# CONFIG_MTD_CFI is not set

# CONFIG_MTD_JEDECPROBE is not set

CONFIG_MTD_MAP_BANK_WIDTH_1=y

CONFIG_MTD_MAP_BANK_WIDTH_2=y

CONFIG_MTD_MAP_BANK_WIDTH_4=y

# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set

# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set

# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set

CONFIG_MTD_CFI_I1=y

CONFIG_MTD_CFI_I2=y

# CONFIG_MTD_CFI_I4 is not set

# CONFIG_MTD_CFI_I8 is not set

# CONFIG_MTD_RAM is not set

# CONFIG_MTD_ROM is not set

# CONFIG_MTD_ABSENT is not set

 

#

# Mapping drivers for chip access

#

# CONFIG_MTD_COMPLEX_MAPPINGS is not set

 

#

# Self-contained MTD device drivers

#

# CONFIG_MTD_SLRAM is not set

# CONFIG_MTD_PHRAM is not set

# CONFIG_MTD_MTDRAM is not set

# CONFIG_MTD_BLKMTD is not set

# CONFIG_MTD_BLOCK2MTD is not set

 

#

# Disk-On-Chip Device Drivers

#

# CONFIG_MTD_DOC2000 is not set

# CONFIG_MTD_DOC2001 is not set

# CONFIG_MTD_DOC2001PLUS is not set

 

#

# NAND Flash Device Drivers

#

CONFIG_MTD_NAND=y

# CONFIG_MTD_NAND_VERIFY_WRITE is not set

CONFIG_MTD_NAND_IDS=y

CONFIG_MTD_NAND_S3C2410=y

# CONFIG_MTD_NAND_S3C2410_DEBUG is not set

# CONFIG_MTD_NAND_S3C2410_HWECC is not set

# CONFIG_MTD_NAND_DISKONCHIP is not set

# CONFIG_MTD_NAND_NANDSIM is not set

 

#

# Plug and Play support

#

 

#

# Block devices

#

# CONFIG_BLK_DEV_FD is not set

# CONFIG_BLK_DEV_COW_COMMON is not set

# CONFIG_BLK_DEV_LOOP is not set

# CONFIG_BLK_DEV_RAM is not set

CONFIG_BLK_DEV_RAM_COUNT=16

CONFIG_INITRAMFS_SOURCE=""

# CONFIG_CDROM_PKTCDVD is not set

 

#

# IO Schedulers

#

CONFIG_IOSCHED_NOOP=y

# CONFIG_IOSCHED_AS is not set

# CONFIG_IOSCHED_DEADLINE is not set

# CONFIG_IOSCHED_CFQ is not set

 

#

# Multi-device support (RAID and LVM)

#

# CONFIG_MD is not set

 

#

# Networking support

#

# CONFIG_NET is not set

# CONFIG_NETPOLL is not set

# CONFIG_NET_POLL_CONTROLLER is not set

 

#

# ATA/ATAPI/MFM/RLL support

#

# CONFIG_IDE is not set

 

#

# SCSI device support

#

# CONFIG_SCSI is not set

 

#

# Fusion MPT device support

#

 

#

# IEEE 1394 (FireWire) support

#

 

#

# I2O device support

#

 

#

# ISDN subsystem

#

 

#

# Input device support

#

CONFIG_INPUT=y

 

#

# Userland interfaces

#

CONFIG_INPUT_MOUSEDEV=y

# CONFIG_INPUT_MOUSEDEV_PSAUX is not set

CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024

CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768

# CONFIG_INPUT_JOYDEV is not set

# CONFIG_INPUT_TSDEV is not set

# CONFIG_INPUT_EVDEV is not set

# CONFIG_INPUT_EVBUG is not set

 

#

# Input I/O drivers

#

# CONFIG_GAMEPORT is not set

CONFIG_SOUND_GAMEPORT=y

# CONFIG_SERIO is not set

 

#

# Input Device Drivers

#

# CONFIG_INPUT_KEYBOARD is not set

# CONFIG_INPUT_MOUSE is not set

# CONFIG_INPUT_JOYSTICK is not set

# CONFIG_INPUT_TOUCHSCREEN is not set

# CONFIG_INPUT_MISC is not set

 

#

# Character devices

#

CONFIG_VT=y

CONFIG_VT_CONSOLE=y

CONFIG_HW_CONSOLE=y

# CONFIG_SERIAL_NONSTANDARD is not set

 

#

# Serial drivers

#

# CONFIG_SERIAL_8250 is not set

 

#

# Non-8250 serial port support

#

CONFIG_SERIAL_S3C2410=y

CONFIG_SERIAL_S3C2410_CONSOLE=y

CONFIG_SERIAL_CORE=y

CONFIG_SERIAL_CORE_CONSOLE=y

CONFIG_UNIX98_PTYS=y

# CONFIG_LEGACY_PTYS is not set

 

#

# IPMI

#

# CONFIG_IPMI_HANDLER is not set

 

#

# Watchdog Cards

#

# CONFIG_WATCHDOG is not set

# CONFIG_NVRAM is not set

# CONFIG_RTC is not set

# CONFIG_S3C2410_RTC is not set

# CONFIG_DTLK is not set

# CONFIG_R3964 is not set

 

#

# Ftape, the floppy tape device driver

#

# CONFIG_DRM is not set

# CONFIG_RAW_DRIVER is not set

 

#

# I2C support

#

# CONFIG_I2C is not set

 

#

# Multimedia devices

#

# CONFIG_VIDEO_DEV is not set

 

#

# Digital Video Broadcasting Devices

#

 

#

# File systems

#

# CONFIG_EXT2_FS is not set

# CONFIG_EXT3_FS is not set

# CONFIG_JBD is not set

# CONFIG_REISERFS_FS is not set

# CONFIG_JFS_FS is not set

 

#

# XFS support

#

# CONFIG_XFS_FS is not set

# CONFIG_MINIX_FS is not set

# CONFIG_ROMFS_FS is not set

# CONFIG_QUOTA is not set

CONFIG_DNOTIFY=y

# CONFIG_AUTOFS_FS is not set

# CONFIG_AUTOFS4_FS is not set

 

#

# CD-ROM/DVD Filesystems

#

# CONFIG_ISO9660_FS is not set

# CONFIG_UDF_FS is not set

 

#

# DOS/FAT/NT Filesystems

#

# CONFIG_MSDOS_FS is not set

# CONFIG_VFAT_FS is not set

# CONFIG_NTFS_FS is not set

 

#

# Pseudo filesystems

#

CONFIG_PROC_FS=y

CONFIG_SYSFS=y

CONFIG_DEVFS_FS=y

CONFIG_DEVFS_MOUNT=y

# CONFIG_DEVFS_DEBUG is not set

# CONFIG_DEVPTS_FS_XATTR is not set

# CONFIG_TMPFS is not set

# CONFIG_HUGETLB_PAGE is not set

CONFIG_RAMFS=y

 

#

# Miscellaneous filesystems

#

# CONFIG_ADFS_FS is not set

# CONFIG_AFFS_FS is not set

# CONFIG_HFS_FS is not set

# CONFIG_HFSPLUS_FS is not set

# CONFIG_BEFS_FS is not set

# CONFIG_BFS_FS is not set

# CONFIG_EFS_FS is not set

# CONFIG_JFFS_FS is not set

CONFIG_JFFS2_FS=y

CONFIG_JFFS2_FS_DEBUG=0

CONFIG_JFFS2_FS_NAND=y

# CONFIG_JFFS2_FS_NOR_ECC is not set

# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set

CONFIG_JFFS2_ZLIB=y

CONIG_JFFS2_RTIME=y

# CONFIG_JFFS2_RUBIN is not set

CONFIG_CRAMFS=y

# CONFIG_VXFS_FS is not set

# CONFIG_HPFS_FS is not set

# CONFIG_QNX4FS_FS is not set

# CONFIG_SYSV_FS is not set

# CONFIG_UFS_FS is not set

 

#

# Partition Types

#

# CONFIG_PARTITION_ADVANCED is not set

CONFIG_MSDOS_PARTITION=y

 

#

# Native Language Support

#

# CONFIG_NLS is not set

 

#

# Profiling support

#

# CONFIG_PROFILING is not set

 

#

# Graphics support

#

# CONFIG_FB is not set

 

#

# Console display driver support

#

# CONFIG_VGA_CONSOLE is not set

CONFIG_DUMMY_CONSOLE=y

 

#

# Sound

#

# CONFIG_SOUND is not set

 

#

# Misc devices

#

 

#

# USB support

#

# CONFIG_USB is not set

CONFIG_USB_ARCH_HAS_HCD=y

# CONFIG_USB_ARCH_HAS_OHCI is not set

 

#

# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be

needed; see USB_STORAGE Help for more information

#

 

#

# USB Gadget Support

#

# CONFIG_USB_GADGET is not set

 

#

# MMC/SD Card support

#

# CONFIG_MMC is not set

 

#

# Kernel hacking

#

CONFIG_DEBUG_KERNEL=y

# CONFIG_MAGIC_SYSRQ is not set

# CONFIG_SCHEDSTATS is not set

# CONFIG_DEBUG_SLAB is not set

# CONFIG_DEBUG_SPINLOCK is not set

# CONFIG_DEBUG_KOBJECT is not set

CONFIG_DEBUG_BUGVERBOSE=y

# CONFIG_DEBUG_INFO is not set

# CONFIG_DEBUG_FS is not set

CONFIG_FRAME_POINTER=y

# CONFIG_DEBUG_USER is not set

# CONFIG_DEBUG_WAITQ is not set

# CONFIG_DEBUG_ERRORS is not set

CONFIG_DEBUG_LL=y

# CONFIG_DEBUG_ICEDCC is not set

CONFIG_DEBUG_S3C2410_PORT=y

CONFIG_DEBUG_S3C2410_UART=0

 

#

# Security options

#

# CONFIG_KEYS is not set

# CONFIG_SECURITY is not set

 

#

# Cryptographic options

#

# CONFIG_CRYPTO is not set

 

#

# Hardware crypto devices

#

 

#

# Library routines

#

# CONFIG_CRC_CCITT is not set

CONFIG_CRC32=y

# CONFIG_LIBCRC32C is not set

CONFIG_ZLIB_INFLATE=y

CONFIG_ZLIB_DEFLATE=y

 

4 compile kernel

make

5 set linux command line

for example: noinitrd root=/dev/mtdblock3 init=/linuxrc

console=ttySAC0,115200 mac=00:0e:3a:aa:bb:cc

6 result

the result is as follows:

Uncompressing Linux........................................ done, booting

the kernel.

Linux version 2.6.11.7 (root@localhost.localdomain) (gcc version 3.4.1) #7

Mon May 2 14:21:51 CST 2005

CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T)

CPU0: D VIVT write-back cache

CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets

Machine: SMDK2410

ATAG_INITRD is deprecated; please update your bootloader.

Memory policy: ECC disabled, Data cache writeback

CPU S3C2410A (id 0x32410002)

S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz

S3C2410 Clock control, (c) 2004 Simtec Electronics

Built 1 zonelists

Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc

console=ttySAC0,115200 mac=00:0e:3a:aa:bb:cc

irq: clearing subpending status 00000002

PID hash table entries: 512 (order: 9, 8192 bytes)

timer tcon=00000000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8

Console: colour dummy device 80x30

Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

Memory: 64MB = 64MB total

Memory: 63520KB available (961K code, 238K data, 56K init)

Mount-cache hash table entries: 512 (order: 0, 4096 bytes)

CPU: Testing write buffer coherency: ok

Linux NoNET1.0 for Linux 2.6

S3C2410: Initialising architecture

NetWinder Floating Point Emulator V0.97 (double precision)

devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au)

devfs: boot_options: 0x1

JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.

s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410

s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410

s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410

io scheduler noop registered

NFTL driver: nftlcore.c $Revision: 1.97 $, nftlmount.c $Revision: 1.40 $

S3C2410 NAND Driver, (c) 2004 Simtec Electronics

s3c2410-nand: mapped registers at c4880000

s3c2410-nand: timing: Tacls 10ns, Twrph0 40ns, Twrph1 10ns

NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V

8-bit)

NAND_ECC_NONE selected by board driver. This is not recommended !!

Scanning device for bad blocks

Creating 5 MTD partitions on "NAND 64MiB 3,3V 8-bit":

0x00000000-0x00020000 : "loader"

0x00020000-0x00030000 : "param"

0x00030000-0x001f0000 : "kernel"

0x00200000-0x00400000 : "root"

0x00400000-0x03ef8000 : "user"

mice: PS/2 mouse device common for all mice

Reading data from NAND FLASH without ECC is not recommended

VFS: Mounted root (cramfs filesystem) readonly.

Mounted devfs on /dev

Freeing init memory: 56K

mount /etc as ramfs

re-create the /etc/mtab entries

Reading data from NAND FLASH without ECC is not recommended

/sbin/insmod: relocation error: /sbin/insmod: symbol query_module, version

GLIBC_2.0 not defined in file libc.so.6 with link time reference

mount: Mounting /dev/mtdblock/4 on /usr failed: No such device

console=/dev/console

init started: BusyBox v0.60.3 (2002.05.13-08:36+0000) multi-call binary

Starting pid 23, console /dev/console: '/etc/init.d/rcS'

mount: Mounting tmpfs on /dev/shm failed: No such file or directory

exec: /usr/etc/rc.local: No such file or directory

Waiting for enter to start '/bin/sh' (pid 26, terminal /dev/console)

 

Please press Enter to activate this console.

Starting pid 26, console /dev/console: '/bin/sh'

 

 

BusyBox v0.60.3 (2002.05.13-08:36+0000) Built-in shell (ash)

Enter 'help' for a list of built-in commands.

 

#

 

7 conclusion

the basic function is ok now , next the ecc should be corrected and many

drivers should be added.(to be continued)