Linux kernel version number: Linux 2.6.39
Cross-compilation tool: ARM-LINUX-GCC 4.5.1
Linux kernel Download: www.kernel.org
Development Board: Friendly arm Tiny6410
First, unzip the kernel
tar xzvf linux-2.6. . tar. gz
Ii. Modification of Makefile
ARCH=? = $ (config_cross_compile:"%"=%)
Change to:
ARCH =? = arm-linux-
Third, enter the extracted linux-2.6.39 directory, copy the Arch/arm/configs/s3c6400_defconfig to the current directory and rename it to. config
CP Arch/arm/configs/s3c6400_defconfig./.config
Iv. Basic Configuration
Execute Make Menuconfig
1. Select the CPU model:
System Type---> * * * System MMU * * *││-*-s3c64xx dma││[] SMDK6400 ││[] A&w6410││[*] mini6410││[] REAL6410 ││[] SMDK6410 ││[] NCP ││[] Airgoo hmt││[] Sm ARTQ5││[] SMARTQ7
Select only the MINI6410 other options.
2. Support Communication in Process
General Setup---> ││ [*] System V IPC
3, exit the kernel graphics configuration menu, execute make generate zimage image file, copy the Arch/arm/boot/zimage to the TFTP shared directory, TFTP server set up see paste http://www.cnblogs.com/ape-ming/p/5100449.html
V. Launch the Development Board to download the kernel image file via tftp and start the kernel, the following message appears:
Vfs:cannot Open Root Device"NFS"or Unknown-block (0,255) Please append a correct"root="boot option; Here is the available Partitions:kernel panic-Not syncing:VFS:Unable toMountRoot FS on Unknown-block (0,255)[<c002c680>] (unwind_backtrace+0x0/0xe4) from [<c01b2384>] (panic+0x50/0x16c)[<c01b2384>] (panic+0x50/0x16c) from [<c0008d64>] (mount_block_root+0x238/0x288)[<c0008d64>] (mount_block_root+0x238/0x288) from [<c0009074>] (prepare_namespace+0x160/0x1b4)[<c0009074>] (prepare_namespace+0x160/0x1b4) from [<c00089ec>] (kernel_init+0x100/0x13c)[<c00089ec>] (kernel_init+0x100/0x13c) from [<c00283d4>] (kernel_thread_exit+0x0/0x8)
This is not supported by the MTD partition or without file system support, first modify the next MTD partition:
Open arch/arm/mach-s3c64xx/mach-mini6410.c, and modify the partition
static struct mtd_partition mini6410_nand_part[] = { [0] ={. Name="Uboot",. Size=sz_1m,. Offset=0, }, [1] ={. Name="Kernel",. Size=sz_2m,. Offset=sz_1m,}, [2] ={. Name="File System",. Size=mtdpart_siz_full,. Offset= sz_1m +sz_2m,},};
Configuring the Kernel to support MTD:
Device Drivers---> <*> Memory technology Device (MTD) Support--->││---Memory Technology Device (MTD) support││[] Debugging ││< >MTD tests support││[*] MTD Partitioning support││< >redboot partition Table parsing││[*] Command Line partition table parsing││< >ARM Firmware Suite partition parsing││< >TI AR7 Partitioning support││User Modules and Translation Layers * * *││<*> DirectChardevice access to MTD devices││-*-Common interface to block layer forMtd'Translation Layers'││<*> Caching block device access to MTD devices
Configure Kernel Support DM9000:
[*] Networking Support--->Networking Options--->││<*> Packet Socket//Package Socket Interface││<*> Unix domain sockets//UNIX domain sockets││< >Pf_key sockets││[*] TCP/IP networking//TCP/IP network││[*] Ip:multicasting//IP Broadcast Protocol││[] ip:advanced Router//Advanced Routing││[*] Ip:kernel level Autoconfiguration//IP: Kernel-level automatic configuration││[*] IP:DHCP Support//DHCP support, which hangs on NFS when booting is required││[*] IP:BOOTP Support//Startup file that hangs on the launcher at startup││[*] Ip:rarp Support//Rarp Support, this and DHCP require appropriate server support in the network
Device Drivers---> [*] Network device Support--->││---Network Device support││ [*] Ethernet (Tenor 100Mbit)--->││[] Ethernet ( +Mbit)--->││[] Ethernet (10000Mbit)--->││[] Wireless LAN---> [*] Ethernet (Tenor 100Mbit)--->││---Ethernet (Tenor 100Mbit) ││< >ASIX AX88796 NE2000 clone support││< > SMC 91c9x/91c1xxx support││<*>DM9000 support││ (4) DM9000 Maximum debug level
Configure the kernel file System for NFS Network File system:
File System---> [ *] Network File Systems---> <*> NFS client support││[ *] NFS client S Upport for NFS version 3 ││[] NFS Client support for
The NFSv3 ACL protocol extension││[] NFS client Support for NFS version 4 ││[ *] Root file system on NF S
If there is no root file system on NFS in Network file systems, check that DHCP support is selected in the networking options.
Make a copy of the kernel image to the TFTP directory and start the system, and the basic porting of the Linux kernel on s3c6410 is completed.
A workaround for the following error message is encountered during system startup:
1. Machine ID is not recognized
Boot with Zimage Do 50008000 done, booting the kernel. error:unrecognized0x000009d8).
During the kernel boot process, the system checks if the machine ID passed by the Uboot matches the kernel ID, and the mismatch will report the error. Find out if the CPU model is selected, if the CPU model is OK, open the arch/arm/mach-xxx/mach-xxx.c (determined by the selected CPU) to find
Machine_start (MINI6410, "MINI6410") function specified by the CPU model (MINI6410), and then found in the Arch/arm/tool/mach-types file Machine_ The CPU model specified by start:
mini6410mach_mini6410mini64102520
Modify the last Machine ID (2520) to change the value printed to the above error message (r1 = 0x000009d8).
2, Network File system failed to load:
In the case of the above configuration is not a problem, this error should be the NIC chip DM9000 driver has a problem, open arch/arm/mach-xxx/mach-xxx.c (determined by the selected CPU) to modify the network card device information:
/*DM9000AEP 10/100 Ethernet Controller*/static struct resource mini6410_dm9k_resource[]= { [0] ={. Start=s3c64xx_pa_xm0csn1,. End= S3C64XX_PA_XM0CSN1 +1,. Flags=Ioresource_mem}, [1] ={. Start= S3C64XX_PA_XM0CSN1 +4,. End= S3C64XX_PA_XM0CSN1 +5,. Flags=Ioresource_mem}, [2] ={. Start= S3c_eint (7),. End= S3c_eint (7),. Flags= IORESOURCE_IRQ |Ioresource_irq_highlevel}};
Reference Links:
Http://blog.sina.com.cn/s/blog_752fa65f0100p6m4.html
http://blog.csdn.net/lqrensn/article/details/5533613
The transplant of Linux-2.6.39 on the Tiny6410