Linux-2.6.25移植<br /><a href="http://www.gzweiyan.com" target=_blank>www.gzweiyan.com</a><br /><br />4月17号linux-2.6.25稳定版发布,我们(伟研科技) 将该内核移植到S3C2440平台上,下面是我们移植的第一步:<br /><br />编译内核:<br />1) 解压内核,当前目录为/new_disk/weiyan/<br />tar jxf /new_disk/weiyan/linux-2.6.25.tar.bz2<br />cd linux-2.6.25<br /><br />2) 修改体系架构并指定交叉编译器<br />vi Makefile ,将193行和194行的<br />#ARCH ?= $(SUBARCH)<br />#CROSS_COMPILE ?=<br />修改为<br />ARCH ?= arm<br />CROSS_COMPILE ?= arm-linux- #最后有“—”,Makefile会调用arm-linux-gcc<br /><br />3) 载入默认配置<br />make s3c2410_defconfig<br />make menuconfig<br />按Esc键保存退出。<br /><br />4) 添加生成U-Boot镜像的工具<br />cp /new_disk/weiyan/mkimage ./<br />vi scripts/mkuboot.sh ,将<br />MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")<br />修改为MKIMAGE=$PWD/mkimage<br /><br />vi arch/arm/mach-s3c2440/mach-smdk2440.c<br />5) 添加nand划分信息<br />static struct mtd_partition wy_nand_part[] = {<br /> [0] = { //u-boot及内存存放的分区<br /> .name = "BOOT",<br /> .size = SZ_2M,<br /> .offset = 0,<br /> },<br /> [1] = { //文件系统存放的分区<br /> .name = "ROOTFS",<br /> .offset = SZ_2M,<br /> .size = SZ_32M,<br /> },<br /> [2] = { //剩余空间<br /> .name = "BACKUP",<br /> .offset = SZ_32M + SZ_2M,<br /> .size = SZ_32M - SZ_2M,<br /> },<br />};<br />static struct s3c2410_nand_set wy_nand_sets[] = {<br /> [0] = {<br /> .name = "NAND",<br /> .nr_chips = 1,<br /> .nr_partitions = ARRAY_SIZE(wy_nand_part),<br /><br />6) 添加nand flash的读写匹配时间,各时间定义如图<br />static struct s3c2410_platform_nand wy_nand_info = {<br /> .tacls = 10,<br /> .twrph0 = 25,<br /> .twrph1 = 10,<br /> .nr_sets = ARRAY_SIZE(wy_nand_sets),<br /> .sets = wy_nand_sets,<br />};<br /><br /> .partitions = wy_nand_part,<br /> },<br />};<br /><br />7) 添加支持硬件校验:<br /> make menuconfig<br />Device Drivers ---><br /><*> Memory Technology Device (MTD) support ---><br /><*> NAND Device Support ---><br /> S3C2410 NAND Hardware ECC<br /><br /><br />8) 编译并拷贝到tftp下载目录<br />make uImage<br />……<br />Image Name: Linux-2.6.25<br />Created: Mon Apr 7 13:50:19 2008<br />Image Type: ARM Linux Kernel Image (uncompressed)<br />Data Size: 1591184 Bytes = 1553.89 kB = 1.52 MB<br />Load Address: 0x30008000<br />Entry Point: 0x30008000<br /> Image arch/arm/boot/uImage is ready<br /><br /><br />启动新内核:<br /><br />dm9000 i/o: 0x18000300, id: 0x90000a46 <br />MAC: 00:0c:20:02:0a:5b<br />TFTP from server 192.168.1.5; our IP address is 192.168.1.6<br />Filename 'uImage'.<br />Load address: 0x31000000<br />Loading: #################################################################<br /> #############################################<br />done<br />Bytes transferred = 1591268 (1847e4 hex)<br />## Booting image at 31000000 ...<br /> Image Name: Linux-2.6.25<br /> Image Type: ARM Linux Kernel Image (uncompressed)<br /> Data Size: 1591204 Bytes = 1.5 MB<br /> Load Address: 30008000<br /> Entry Point: 30008000<br /> Verifying Checksum ... OK<br />OK<br /> <br />Starting kernel ...<br /> <br />Uncompressing Linux....................................................................................................... done, booting the kernel.<br />Linux version 2.6.25 (root@ubuntu-server) (gcc version 3.4.1) #4 Mon Apr 21 04:28:37 CST 2008<br />CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177<br />Machine: SMDK2440<br />Memory policy: ECC disabled, Data cache writeback<br />CPU S3C2440A (id 0x32440001)<br />S3C244X: core 406.425 MHz, memory 135.475 MHz, peripheral 67.737 MHz<br />S3C24XX Clocks, (c) 2004 Simtec Electronics<br />CLOCK: Slow mode (2.116 MHz), fast, MPLL on, UPLL on<br />CPU0: D VIVT write-back cache<br />CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets<br />CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets<br />Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256<br />Kernel command line: root=/dev/mtdblock1 rootfstype=jffs2 console=ttySAC0 ip=192.168.1.6:192.168.1.5:192.168.1.5:255.255.255.0:WEIYAN:eth0:off<br />…….<br />S3C24XX NAND Driver, (c) 2004 Simtec Electronics<br />s3c2440-nand s3c2440-nand: Tacls=2, 14ns Twrph0=4 29ns, Twrph1=2 14ns<br />NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)<br />Scanning device for bad blocks<br />Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":<br />0x00000000-0x00200000 : "BOOT"<br />0x00200000-0x02200000 : "ROOTFS"<br />0x02200000-0x04000000 : "BACKUP"<br />……<br />Empty flash at 0x0096200c ends at 0x00962200<br />Empty flash at 0x01470628 ends at 0x01470800<br />jffs2_scan_eraseblock(): Node at 0x01470dfc {0x1985, 0xe001, 0xe0021985) has invalid CRC 0x00000044 (calculated 0x515918d5)<br />VFS: Mounted root (jffs2 filesystem).<br />Freeing init memory: 140K<br />JFFS2 notice: (775) check_node_data: wrong data CRC in data node at 0x01470578: read 0x5cc80399, calculated 0x36a47240.<br />init started: BusyBox v1.9.1 (2008-04-19 19:49:32 CST)<br />starting pid 777, tty '': '/etc/init.d/rcS'<br />starting initial script, WEIYAN<br /> <br />Please press Enter to activate this console. <br />starting pid 795, tty '': '/bin/sh'<br />[root@WEIYAN /]$ ls<br />bin etc linuxrc opt sbin tmp var<br />dev lib mnt proc sys usr<br />[root@WEIYAN /]$ |
|