查看: 2215|回复: 2

[教程] ARM9:如何将linux2.6.38内核移植到TQ2440

[复制链接]
  • TA的每日心情
    奋斗
    2018-3-5 10:57
  • 签到天数: 112 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-1-21 09:58:37 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 糖悦之果飞 于 2016-1-21 13:14 编辑

        天嵌科技感谢ANDY的支持,本文是作者通过一个星期不停修改错误,看代码,每天都忙到2点才休息的劳动成果!终于将linux2.6.38内核成功移植到TQ2440嵌入式开发板上。

      下面是linux2.6.38内核移植到TQ2440的具体步骤:

      1.修改根目录的Makefile中的ARCH=arm,CROSS-COMPILE=arm-linux-

      2.在arch/arm/mach-s3c2440/mach-smdk2440.c中,将163行的s3c24xx_init_clocks(16934400)改为s3c24xx_init_clocks(12000000)。

      3.修改arch/arm/tools/mach-types中379行的362改为168,因为uboot中定义的机器码是168.

      4.修改arch/arm/boot/中的Makefile文件,在58行添加@cp -f arch/arm/boot/zImage zImage.bin,实现把生成的zImage文件复制到内核源码根目录下。

      5.在根目录的Makefile的1164行添加rm -f zImage.bin,使得在执行make distclean在清除产生的文件的同时,把内核根目录下的zImage也清除。

      6.修改arch/arm/plat-s3c24xx/common-smdk.c中111行的static struct mtd_partition smdk_default_nand_part[]的nandflash分区为:

      [0] = {

      .name = "Andy_uboot",

      .offset = 0x00000000,

      .size = 0x00040000,

      },

      [1] = {

      .name = "Andy_kernel",

      .offset = 0x00200000,

      .size = 0x00200000,

      },

      [2] = {

      .name = "Andy_yaffs2",

      .offset = 0x00400000,

      .size = 0x0FB80000,

      }

      7.修改drivers/mtd/nand/s3c2410.c中的839行为chip->ecc.mode=NAND_ECC_NONE;

      8.修改arch/arm/mach-s3c2440/mach-smdk2440.c中100行为.ulcon = 0x03。

      9.在drivers/serial/samsung.c的51行添加

      #include

      #include

      在433行添加:

      if (port->line == 2) {

      s3c2410_gpio_cfgpin(S3C2410_GPH(6), S3C2410_GPH6_TXD2);

      s3c2410_gpio_pullup(S3C2410_GPH(6), 1);

      s3c2410_gpio_cfgpin(S3C2410_GPH(7), S3C2410_GPH7_RXD2);

      s3c2410_gpio_pullup(S3C2410_GPH(7), 1);

      }

      10.用git工具下载最新的yaffs2源代码。

      具体为在终端输入git clone git://www.aleph1.co.uk/yaffs2下载最新的yaffs2,下

      载完成给内核打补丁,进入yaffs目录,执行

      ./patch-kernel.sh c m opt/Andy/linux-2.6.38(以自己的内核目录为准),其中的c代表复制,m代表复合类型。

      11.用make menuconfig配置linux内核。

      12.执行make zImage,将生成的zImage.bin下载到TQ2440。

      13.制作文件系统。

      解压busybox-1.18.4.tar.bz2,修改busybox-1.18.4中的Makefile,在164行和190行分别修改为CROSS-COMPILE=arm-linux-和ARCH=arm。执行make,然后在执行make install。将生成_install复制到根目录,添加文件系统文件,用天嵌提供的mkyaffs2image生成root.bin的可执行文件,下载到开发板。

      14.启动开发板,打印信息如下:

      Start Linux ...

      Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kernel to SDRAM done,NOW, Booting Linux......

      Uncompressing Linux... done, booting the kernel.

      Linux version 2.6.38-Andy (root@Andy) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176) ) #15 Fri Apr 8 20:21:42 CST 2011

      CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177

      CPU: VIVT data cache, VIVT instruction cache

      Machine: Andy's TQ2440 development board!

      ATAG_INITRD is deprecated; please update your bootloader.

      Memory policy: ECC disabled, Data cache writeback

      CPU S3C2440A (id 0x32440001)

      S3C24XX Clocks, Copyright 2004 Simtec Electronics

      S3C244X: core 400.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz

      CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on

      Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256

      Kernel command line: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0

      PID hash table entries: 256 (order: -2, 1024 bytes)

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

      Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)

      Memory: 64MB = 64MB total

      Memory: 60896k/60896k available, 4640k reserved, 0K highmem

      Virtual kernel memory layout:

      vector : 0xffff0000 - 0xffff1000 ( 4 kB)

      fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)

      DMA : 0xffc00000 - 0xffe00000 ( 2 MB)

      vmalloc : 0xc4800000 - 0xf6000000 ( 792 MB)

      lowmem : 0xc0000000 - 0xc4000000 ( 64 MB)

      modules : 0xbf000000 - 0xc0000000 ( 16 MB)

      .init : 0xc0008000 - 0xc0025000 ( 116 kB)

      .text : 0xc0025000 - 0xc0399000 (3536 kB)

      .data : 0xc039a000 - 0xc03bac40 ( 132 kB)

      SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

      NR_IRQS:85

      irq: clearing pending ext status 00080000

      irq: clearing subpending status 00000003

      irq: clearing subpending status 00000002

      Console: colour dummy device 80x30

      console [ttySAC0] enabled

      Calibrating delay loop... 199.47 BogoMIPS (lpj=498688)

      pid_max: default: 32768 minimum: 301

      Mount-cache hash table entries: 512

      CPU: Testing write buffer coherency: ok

      gpiochip_add: gpios 288..303 (GPIOK) failed to register

      gpiochip_add: gpios 320..334 (GPIOL) failed to register

      gpiochip_add: gpios 352..353 (GPIOM) failed to register

      NET: Registered protocol family 16

      S3C2440: Initialising architecture

      S3C2440: IRQ Support

      S3C24XX DMA Driver, Copyright 2003-2006 Simtec Electronics

      DMA channel 0 at c4808000, irq 33

      DMA channel 1 at c4808040, irq 34

      DMA channel 2 at c4808080, irq 35

      DMA channel 3 at c48080c0, irq 36

      S3C244X: Clock Support, DVS off

      bio: create slab at 0

      SCSI subsystem initialized

      usbcore: registered new interface driver usbfs

      usbcore: registered new interface driver hub

      usbcore: registered new device driver usb

      s3c-i2c s3c2440-i2c: slave address 0x10

      s3c-i2c s3c2440-i2c: bus frequency set to 97 KHz

      s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter

      Advanced Linux Sound Architecture Driver Version 1.0.23.

      cfg80211: Calling CRDA to update world regulatory domain

      NET: Registered protocol family 2

      IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

      TCP established hash table entries: 2048 (order: 2, 16384 bytes)

      TCP bind hash table entries: 2048 (order: 1, 8192 bytes)

      TCP: Hash tables configured (established 2048 bind 2048)

      TCP reno registered

      UDP hash table entries: 256 (order: 0, 4096 bytes)

      UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

      NET: Registered protocol family 1

      RPC: Registered udp transport module.

      RPC: Registered tcp transport module.

      RPC: Registered tcp NFSv4.1 backchannel transport module.

      msgmni has been set to 118

      io scheduler noop registered (default)

      s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440

      s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440

      s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440

      loop: module loaded

      S3C24XX NAND Driver, (c) 2004 Simtec Electronics

      s3c24xx-nand s3c2440-nand: Tacls=2, 20ns Twrph0=6 60ns, Twrph1=2 20ns

      s3c24xx-nand s3c2440-nand: NAND ECC disabled

      NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)

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

      Scanning device for bad blocks

      Bad eraseblock 62 at 0x0000007c0000

      Bad eraseblock 1435 at 0x00000b360000

      cmdlinepart partition parsing not available

      Creating 3 MTD partitions on "NAND":

      0x000000000000-0x000000040000 : "Andy_uboot"

      0x000000200000-0x000000400000 : "Andy_kernel"

      0x000000400000-0x00000ff80000 : "Andy_yaffs2"

      dm9000 Ethernet Driver, V1.31

      Now use the default MAC address: 10:23:45:67:89:ab

      eth0: dm9000e at c4810000,c4814004 IRQ 51 MAC: 10:23:45:67:89:ab (EmbedSky)

      ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

      s3c2410-ohci s3c2410-ohci: S3C24XX OHCI

      s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1

      s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000

      usb usb1: New USB device found, idVendor=1d6b, idProduct=0001

      usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1

      usb usb1: Product: S3C24XX OHCI

      usb usb1: Manufacturer: Linux 2.6.38-Andy ohci_hcd

      usb usb1: SerialNumber: s3c24xx

      hub 1-0:1.0: USB hub found

      hub 1-0:1.0: 2 ports detected

      Initializing USB Mass Storage driver...

      usbcore: registered new interface driver usb-storage

      USB Mass Storage support registered.

      usbcore: registered new interface driver usbserial

      usbserial: USB Serial Driver core

      USB Serial support registered for pl2303

      usbcore: registered new interface driver pl2303

      pl2303: Prolific PL2303 USB to serial adaptor driver

      s3c2410_udc: debugfs dir creation failed -19

      mousedev: PS/2 mouse device common for all mice

      S3C24XX RTC, (c) 2004,2006 Simtec Electronics

      s3c-rtc s3c2410-rtc: rtc disabled, re-enabling

      s3c-rtc s3c2410-rtc: rtc core: registered s3c as rtc0

      i2c /dev entries driver

      S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics

      s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled

      usbcore: registered new interface driver usbhid

      usbhid: USB HID core driver

      ALSA device list:

      No soundcards found.

      TCP cubic registered

      lib80211: common routines for IEEE802.11 drivers

      s3c-rtc s3c2410-rtc: setting system clock to 2000-01-02 00:47:19 UTC (946774039)

      yaffs: dev is 32505858 name is "mtdblock2" rw

      yaffs: passed flags ""

      VFS: Mounted root (yaffs filesystem) on device 31:2.

      Freeing init memory: 116K

      Please press Enter to activate this console.

      移植过程中产生的问题及其解决方法将在下一节说明。还有一些驱动没有移植。继续努力!



    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-3-13 10:11
  • 签到天数: 1088 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2016-1-21 13:56:50 | 显示全部楼层
    虽然我不会移植Linux,但是我还是知道移植Linux是很复杂的,不是楼主这一页文档就能说清楚的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-3-5 10:57
  • 签到天数: 112 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2016-2-22 11:54:04 | 显示全部楼层
    yanhaijian 发表于 2016-1-21 13:56
    虽然我不会移植Linux,但是我还是知道移植Linux是很复杂的,不是楼主这一页文档就能说清楚的。 ...

    网友说得很正确,我们只是把它的九牛一毛拿到我们的开发板开发中来说,并不是全部,当然我们也希望能跟大家一起切磋、探讨
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 11:28 , Processed in 0.133602 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.