将smartarm3250(lpc3250)内核升级到linux2.6.39.2

因为前段时间做成程序老是有死机的现象,程序主要在QT多串口通信。开始以为是linux下串口黑洞引起因为死机的时候内核也死掉了。所以就想法吧内核给升级一下,看到网上周立功的技术支持在移植过 linux2.6.31但是 我想其索要人家不给,没办法就得自己动手。其中走了不少弯路。先介绍一下如何将linux2.6.39.2移植到smartar3250上运行。

1.首先在lpc官网上下载 lpc3250的提供的内核以及补丁。

2.直接用phy3250的配置文件编译,不要用2010-09-2uboot引导,编译后的内核将直接能被解压执行。MACHINE_START(LPC3XXX, "Phytec 3250 board with the LPC3250 Microcontroller")

3.Nandflash 配置 2.6.39.2内核nandflash 驱动是带ecc验证,而SarmtArm3250是没有的所以要修改Nandflash驱动 linux-2.6.39.2\drivers\mtd\nand\lpc32xx_nand.cchip->ecc.mode = NAND_ECC_HW_SYNDROME;改成chip->ecc.mode = NAND_ECC_NONE;这样完成 flash驱动。

4.Flash分区,用smart3250原有的分区进行分区,将来还用zlg给提供文件系统。

5.屏幕驱动 修改 这是我的屏幕649 480的,自己的屏幕按说明书配置。

.name = "QVGA TFT-6862",

.refresh = 60,

.xres = 640,

.yres = 480,

.pixclock = 91828,//191828,

.left_margin = 200,

.right_margin = 65,

.upper_margin = 35,

.lower_margin = 12,

.hsync_len = 1,

.vsync_len = 1,

.sync = 0,

如果你的smart3250屏不是QVGA TFT-6862那注意自己去设一下低电平输出有效的问题。再启动内核将能在屏幕上看到小企鹅了。但是系统还是起不来。

6.文件系统移植因为内核中支持cramfs同时zlg提供了cramfs文件系统所以直接在内核配置选中cramfs文件系统,在uboot中运行 run safemode 系统就能成功的运行起来了。

7.系统启动后内核中的网卡还是不能启用.需要在内核中更改网卡驱动程序,设置网卡的MAC地址。

8.内核系统中没有yaffs驱动,需要打补丁。

9.系统启动但是系统还有一些驱动没有设置,对系统启动已经没有问题了。

    

5KS ok!

Autoboot in progress, press any key to stop

U-Boot 1.3.3 (May  5 2009 - 13:04:13)

DRAM:  64 MB

NAND:  256 MiB

In:    serial

Out:   serial

Err:   serial

Hit any key to stop autoboot:  0 

NAND read: device 0 offset 0x200000, size 0x1e38dc

Reading data from 0x3e3800 -- 100% complete.

 1980636 bytes read: OK

## Booting kernel from Legacy Image at 81000000 ...

   Image Name:   Linux-2.6.39.2

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    1980572 Bytes =  1.9 MB

   Load Address: 80008000

   Entry Point:  80008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

Starting kernel ...

?Linux version 2.6.39.2 ([email protected]) (gcc version 4.3.2 (crosstool-NG-1.3.1) ) #8 PREEMPT Thu Mar 22 11:56:19 CST 2012

CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177

CPU: VIVT data cache, VIVT instruction cache

Machine: Phytec 3250 board with the LPC3250 Microcontroller

Memory policy: ECC disabled, Data cache writeback

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

Kernel command line: root=/dev/mtdblock4 console=ttyS0,115200 mem=64M rootfstype=yaffs2

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: 60740k/60740k available, 4796k reserved, 0K highmem

Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)

    DMA     : 0xffc00000 - 0xffe00000   (   2 MB)

    vmalloc : 0xc4800000 - 0xf0000000   ( 696 MB)

    lowmem  : 0xc0000000 - 0xc4000000   (  64 MB)

    modules : 0xbf000000 - 0xc0000000   (  16 MB)

      .init : 0xc0008000 - 0xc002a000   ( 136 kB)

      .text : 0xc002a000 - 0xc03d5000   (3756 kB)

      .data : 0xc03d6000 - 0xc03f7d00   ( 136 kB)

Preemptable hierarchical RCU implementation.

        RCU-based detection of stalled CPUs is disabled.

        Verbose stalled-CPUs detection is disabled.

NR_IRQS:96

Console: colour dummy device 80x30

Calibrating delay loop... 103.83 BogoMIPS (lpj=519168)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

NET: Registered protocol family 16

LPC32XX unique ID: 00000000000000000000000000000000

bio: create slab  at 0

SCSI subsystem initialized

ssp-pl022 dev:ssp0: ARM PL022 driver, device ID: 0x00041022

pl022: mapped registers from 0x20084000 to c4814000

usbcore: registered new interface driver usbfs

usbcore: registered new interface driver hub

usbcore: registered new device driver usb

Advanced Linux Sound Architecture Driver Version 1.0.24.

Switching to clocksource lpc32xx_clksrc

Switched to NOHz mode on CPU #0

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.

NetWinder Floating Point Emulator V0.97 (double precision)

JFFS2 version 2.2. (NAND) 漏 2001-2006 Red Hat, Inc.

msgmni has been set to 118

io scheduler noop registered

io scheduler deadline registered

io scheduler cfq registered (default)

clcd-pl11x dev:clcd: PL111 rev1 at 0x31040000

clcd-pl11x dev:clcd: Phytec LCD hardware, QVGA TFT-6862 display

Console: switching to colour frame buffer device 80x30

Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled

serial8250.0: ttyS0 at MMIO 0x40090000 (irq = 9) is a 16550A

console [ttyS0] enabled

serial8250.0: ttyS1 at MMIO 0x40080000 (irq = 7) is a U6_16550A

serial8250.0: ttyS2 at MMIO 0x40098000 (irq = 10) is a U6_16550A

lpc32xx_hsuart.0: ttyTX0 at MMIO 0x40014000 (irq = 26) is a lpc32xx_hsuart

lpc32xx_hsuart.0: ttyTX1 at MMIO 0x40018000 (irq = 25) is a lpc32xx_hsuart

lpc32xx_hsuart.0: ttyTX2 at MMIO 0x4001c000 (irq = 24) is a lpc32xx_hsuart

brd: module loaded

loop: module loaded

at25 spi0.0: 32 KByte at25256a eeprom, pagesize 64

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 0 at 0x000000000000

Bad eraseblock 1 at 0x000000020000

Bad eraseblock 2 at 0x000000040000

Bad eraseblock 184 at 0x000001700000

Creating 5 MTD partitions on "lpc32xx-nand":

0x000000000000-0x000000180000 : "smartarm3250-boot"

0x000000180000-0x0000001c0000 : "smartarm3250-ubt-prms"

0x000000200000-0x000000600000 : "smartarm3250-kernel"

0x000000600000-0x000001600000 : "smartarm3250-safefs"

0x000001600000-0x000010000000 : "smartarm3250-rootfs"

lpc_mii_bus: probed

eth0: using RMII interface

eth0: LPC mac at 0x31060000 irq 29

eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)

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

ISP1301 Vendor ID  : 0x04cc

ISP1301 Product ID : 0x1301

ISP1301 Version ID : 0x0210

usb-ohci usb-ohci: at 0xf3120000, irq 0

usb-ohci usb-ohci: pnx4008 OHCI

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

usb-ohci usb-ohci: irq 59, io mem 0xf3120000

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 libusual

mousedev: PS/2 mouse device common for all mice

input: lpc32xx-ts as /devices/platform/lpc32xx-ts/input/input0

rtc-lpc32xx rtc-lpc32xx: rtc core: registered rtc-lpc32xx as rtc0

i2c /dev entries driver

PNX4008-WDT: PNX4008 Watchdog Timer: heartbeat 19 sec

cpuidle: using governor ladder

cpuidle: using governor menu

mmci-pl18x dev:mmc0: DMA buffer: phy:83960000, virt:ffdd0000

mmci-pl18x dev:mmc0: mmc0: PL180 manf 41 rev0 at 0x20098000 irq 15,13 (pio)

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x0 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x1 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x2 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x3 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x4 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x5 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x6 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x7 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x8 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0x9 failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0xa failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0xb failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0xc failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0xd failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0xe failed

uda1380-codec 0-0018: uda1380_sync_cache: write to reg 0xf failed

asoc: uda1380-hifi <-> lpc3xxx-i2s1 mapping ok

ALSA device list:

  #0: LPC32XX

TCP cubic registered

NET: Registered protocol family 17

VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 1

rtc-lpc32xx rtc-lpc32xx: setting system clock to 1970-01-05 06:14:29 UTC (368069)

yaffs: dev is 32505860 name is "mtdblock4" rw

yaffs: passed flags ""

VFS: Mounted root (yaffs2 filesystem) on device 31:4.

Freeing init memory: 136K

init started: BusyBox v1.11.2 ()

starting pid 409, tty '': '/etc/rc.d/rcS'

Mounting /proc and /sys 

Starting the hotplug events dispatcher udevd

udevd (418): /proc/418/oom_adj is deprecated, please use /proc/418/oom_score_adj instead.

Synthesizing initial hotplug events

Setting the hostname to zlg

Mounting filesystems

mount: mounting usbfs on /proc/bus/usb failed: No such file or directory

Running sysctl

Setting up networking on loopback device: 

Setting up networking on eth0: 

Adding static route for default gateway to 192.168.7.1: 

Setting nameserver to 192.168.7.1 in /etc/resolv.conf: 

Starting inetd: 

Starting the port mapper: 

Starting the ssh server: 

starting pid 763, tty '': '-/bin/sh'

[root@zlg /]# 

你可能感兴趣的:(将smartarm3250(lpc3250)内核升级到linux2.6.39.2)