Linux2.6.32移植到MINI2440(1)初步移植

    根据友善之臂提供的手册——《MINI2440 Linux移植开发实战指南-内核部分-2010.9.9》以及网络上一些帖子,在此对他们的工作表示感谢,基本过程大都一致,主要是为了熟悉内核的基本移植方法,目的是为了能够生成一个MINI2440上可用的内核。

   开发环境:

    主机:fedora 14

    虚拟机:vmware workstation 10

    交叉编译工具:arm-linux-gcc 4.3.2

    开发板:mini2440(2m nor ,64m sdram,256m nand)

 

一、下载源码包解压到指定位置

    下载地址:http://www.kernel.org/pub/linux/kernel/v2.6/

    解压到指定的文件夹:tar xvzf linux-2.6.32.2.tar.gz –C /mydir

   

二、修改顶层Makefile

    在第183行,修改如下:

exportKBUILD_BUILDHOST := $(SUBARCH)

ARCH       ?= arm

CROSS_COMPILE ?= arm-linux-

   

三、检测编译

    在根目录下,执行:

# make smdk2410_defconfig

        #make

    指定第一步之后,makefile会解析到arch/arm/configs目录下,找到s3c2410_defconfig,拷贝成一个.config文件,然后进行编译。编译时间比较长,一般都是没有问题的。

 

四、拷贝mach-smdk2440.c为蓝本

    其实2.6.31以后已经开始支持mini2440.但是我们还是以smdk2440为蓝本,比较简单。

    #cd arch/arm/mach-s3c2440

    #rm –f mach-mini2440.c

    #cp mach-smdk2440.c mach-mini2440.c

    这样蓝本就制作好了。

 

五、修改机器码

    在arch/arm/mach-s3c2440目录下:

    vimmach-mini2440.c

    将:

    MACHINE_START(S3C2440,"SMDK2440")

    修改为:

    MACHINE_START(MINI2440,"FriendlyARM Mini2440 development board")

 

六、修改时钟频率

    第163行函数,修改为如下:

    s3c24xx_init_clocks(12000000);

    因为我们的板子上的晶振是12M的,所以对应修改。

 

七、用mini2440替换smdk2440

    在冒号模式下,输入如下命令:

    :%s/smdk2440/mini2440/g

    将该文件下所有的smdk2440关键字都改为mini2440,g代表全局,应该是进行了19次替换。

 

八、屏蔽smdk_machine_init()函数

    在第173行,将其注释掉即可。

    platform_add_devices(mini2440_devices,ARRAY_SIZE(mini2440_devices));

   //  smdk_machine_init();

   }

 

九、编译测试

    在根目录下:

    #make mini2440_defconfig

    #make zImage

编译成功以后,会在/arch/arm/boot生成zImage,这里使用mkz2uimage脚本,首先将编译成功的u-boot/tools/下生成的mkimage拷贝到/usr/local/bin下,这样命令就变为全局的。然后把mkz2uimage这个工具放到/arch/arm/boot目录下,执行./mkz2uimage,就可以生成我们需要的uImage,其实你也可以直接执行./mkimage,只不过需要自己使用-A,-O,-T这些参数比较麻烦,mkz2uimage也就是这些命令的集合。

如果成功的话,启动后,串口控制台会输出如下信息:

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

   Image Name:  Linux kernel Image by embedclub

   Created:     2015-09-06   0:39:43 UTC

   ImageType:   ARM Linux Kernel Image(uncompressed)

   Data Size:   2047488 Bytes =  2 MB

   Load Address: 30008000

   Entry Point: 30008040

   Verifying Checksum ... OK

   XIP Kernel Image ... OK

OK

 

Startingkernel ...

 

UncompressingLinux.................................................................................................................................done, booting the kernel.

Linuxversion 2.6.32.2 (root@embedclub) (gcc version 4.3.2 (Sourcery G++ Lite2008q3-72) ) #2 Sat Sep 5 20:55:28 CST 2015

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

CPU:VIVT data cache, VIVT instruction cache

Machine:FriendlyARM Mini2440 development board

Memorypolicy: ECC disabled, Data cache writeback

CPUS3C2440A (id 0x32440001)

S3C24XXClocks, (c) 2004 Simtec Electronics

S3C244X:core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz

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

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

Kernelcommand line: console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.122:/opt/rootfsip=192.168.1.226:192.168.1.122:192.168.1.122:255.255.255.0:SMDK2440A.arm9.net:eth0:off

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

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

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

Memory:64MB = 64MB total

Memory:60596KB available (3588K code, 417K data, 132K init, 0K highmem)

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

HierarchicalRCU implementation.

NR_IRQS:85

irq:clearing subpending status 00000003

irq:clearing subpending status 00000002

Console:colour dummy device 80x30

console[ttySAC0] enabled

Calibratingdelay loop... 201.93 BogoMIPS (lpj=504832)

Mount-cachehash table entries: 512

CPU:Testing write buffer coherency: ok

NET:Registered protocol family 16

S3C2440:Initialising architecture

S3C2440:IRQ Support

S3C24XXDMA Driver, (c) 2003-2004,2006 Simtec Electronics

DMAchannel 0 at c4808000, irq 33

DMAchannel 1 at c4808040, irq 34

DMAchannel 2 at c4808080, irq 35

DMAchannel 3 at c48080c0, irq 36

S3C244X:Clock Support, DVS off

bio:create slab <bio-0> at 0

usbcore:registered new interface driver usbfs

usbcore:registered new interface driver hub

usbcore:registered new device driver usb

s3c-i2cs3c2440-i2c: slave address 0x10

s3c-i2cs3c2440-i2c: bus frequency set to 98 KHz

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

NET:Registered protocol family 2

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

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

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

TCP:Hash tables configured (established 2048 bind 2048)

TCPreno registered

NET:Registered protocol family 1

RPC:Registered udp transport module.

RPC:Registered tcp transport module.

RPC:Registered tcp NFSv4.1 backchannel transport module.

JFFS2version 2.2. (NAND) © 2001-2006 Red Hat, Inc.

ROMFSMTD (C) 2007 Red Hat, Inc.

msgmnihas been set to 118

alg:No test for stdrng (krng)

io schedulernoop registered

ioscheduler anticipatory registered (default)

ioscheduler deadline registered

ioscheduler cfq registered

Console:switching to colour frame buffer device 60x53

fb0:s3c2410fb frame buffer device

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

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

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

brd:module loaded

S3C24XXNAND Driver, (c) 2004 Simtec Electronics

dm9000Ethernet Driver, V1.31

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

s3c2410-ohcis3c2410-ohci: S3C24XX OHCI

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

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

usbusb1: configuration #1 chosen from 1 choice

hub1-0:1.0: USB hub found

hub1-0:1.0: 2 ports detected

usbcore:registered new interface driver libusual

mice:PS/2 mouse device common for all mice

S3C24XXRTC, (c) 2004,2006 Simtec Electronics

i2c/dev entries driver

S3C2410Watchdog Timer, (c) 2004 Simtec Electronics

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

cpuidle:using governor ladder

sdhci:Secure Digital Host Controller Interface driver

sdhci:Copyright(c) Pierre Ossman

usbcore:registered new interface driver hiddev

usbcore:registered new interface driver usbhid

usbhid:v2.6:USB HID core driver

AdvancedLinux Sound Architecture Driver Version 1.0.21.

Nodevice for DAI UDA134X

Nodevice for DAI s3c24xx-i2s

ALSAdevice list:

  No soundcards found.

TCPcubic registered

NET:Registered protocol family 17

drivers/rtc/hctosys.c:unable to open rtc device (rtc0)

 

    说明初步成功了,下面一步步的完善,使其可以挂载nfs和yaffs2文件系统。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值