根据tx2440的文档, 目标也比较简单, 先编译成功, 再烧录, 根文件系统, busybox 这些.

A. 准备

1. 解压tar, 修改根Makefile

ARCH ?= arm

CROSS_COMPILE ?= arm-linux-

2. 修改时钟

arch/arm/mach-s3c2440/mach-smdk2440.c

s3c24xx_init_clocks();

3. 修改机器码

arch/arm/tools/mach-types

s3c2440      ....   xxx, 要对应uboot里面的机器码.

book@book-desktop:/tmp/linux-2.6.22.6/arch/arm/tools$ cat /tmp/u-boot/include/asm-arm/mach-types.h |grep S3C2440
#define MACH_TYPE_S3C2440              362
#define MACH_TYPE_SMDKS3C2440          782
#ifdef CONFIG_ARCH_S3C2440
#  define machine_arch_type     MACH_TYPE_S3C2440
# define machine_is_s3c2440()   (machine_arch_type == MACH_TYPE_S3C2440)
book@book-desktop:/tmp/linux-2.6.22.6/arch/arm/tools$ cat mach-types |grep s3c2440
s3c2440                 ARCH_S3C2440            S3C2440                 362

似乎是对的, 暂时不管它.

4. 配置

make menuconfig

首先load一下2410的配置文件, 即arch/arm/configs/s3c2410_defconfig

进System Type, 选择S3C24xx Machine

仅选择以上几项, 其他不选.

然后save成.config文件.

5. make uImage, 是不是很简单...

烧进去看看吧.

6. 修改分区

arch/arm/plat-s3c24xx/common-smdk.c

[0] = {
                .name   = "BootLoader",
                .size   = 0x00040000,
                .offset = 0,
        },
        [1] = {
                .name   = "params",
                .offset = MTDPART_OFS_APPEND,
                .size   = 0x00020000,
        },
        [2] = {
                .name   = "kernel",
                .offset = MTDPART_OFS_APPEND,
                .size   = 0x00200000,
        },
        [3] = {
                .name   = "root",
                .offset = MTDPART_OFS_APPEND,
                .size   = MTDPART_SIZ_FULL,
        }

内核启动的时候:

Creating 4 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x00000000-0x00040000 : "BootLoader"     0-0x40000是bootload分区, 大小是256K
0x00040000-0x00060000 : "params"      0x40000-0x60000是params分区, 128K
0x00060000-0x00260000 : "kernel"        kernel分区有2M
0x00260000-0x10000000 : "root"           剩下的,到256M都是root分区.

bootargs=noinitrd console=ttySAC0 root=/dev/mtdblock3 rootfstype=yaffs

yaffs tragedy:attempt to put data chunk into a non-file
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 3404
page 8826 in gc has no object: -65536 123600896 104202240
yaffs tragedy:attempt to put data chunk into a non-file
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 3404
List of all partitions:
1f00        256 mtdblock0 (driver?)
1f01        128 mtdblock1 (driver?)
1f02       2048 mtdblock2 (driver?)
1f03     259712 mtdblock3 (driver?)
No filesystem could mount root, tried:  yaffs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)

搞了半天flash有问题..

能起来的情况下, uboot配置如下:

bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0
bootdelay=2
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
ipaddr=192.168.7.17
serverip=192.168.7.11
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
partition=nand0,0
mtddevnum=0
mtddevname=bootloader

根目录设备挂载mnode

# ls -l
crw-r--r--    1 0        0          5,   1 Jan  1 00:00 console
brw-r--r--    1 0        0         31,   0 Jan 22  2008 mtdblock0
brw-r--r--    1 0        0         31,   1 Jan 22  2008 mtdblock1
brw-r--r--    1 0        0         31,   2 Jan 22  2008 mtdblock2
crw-r--r--    1 0        0          1,   3 Jan 22  2008 null
crw-r--r--    1 0        0        204,  64 Jan  1 00:04 ttySAC0

查看busybox依赖的库

book@book-desktop:/tmp/mini_fs/bin$ arm-linux-readelf -a "busybox"|grep Shared
 0x00000001 (NEEDED)                     Shared library: [libcrypt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]

最后烧录成jffs2文件格式,

启动参数改成:

bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2

制作镜像文件的命令是:

mkfs.jffs2 -n -s 512 -e 16KiB -d mini_fs -o mini.jffs2

linux内核移植 I的更多相关文章

  1. 【转】 linux内核移植和驱动添加(三)

    原文网址:http://blog.chinaunix.net/uid-29589379-id-4708909.html 原文地址:linux内核移植和驱动添加(三) 作者:genehang 四,LED ...

  2. linux 内核移植和根文件系统的制作【转载】

    原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...

  3. linux 内核移植和根文件系统的制作

    1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号 ...

  4. 基于tiny4412的Linux内核移植 --- aliases节点解析

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  5. 基于tiny4412的Linux内核移植 -- 设备树的展开

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  6. 基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  7. 【转】 linux内核移植和网卡驱动(二)

    原文网址:http://blog.chinaunix.net/uid-29589379-id-4708911.html 一,内核移植步骤: 1, 修改顶层目录下的Makefile ARCH       ...

  8. 基于tiny4412的Linux内核移植 -- 设备树的展开【转】

    转自:https://www.cnblogs.com/pengdonglin137/p/5248114.html#_lab2_3_1 阅读目录(Content) 作者信息 平台简介 摘要 正文 一.根 ...

  9. Linux内核移植

    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核 下面以Linux2.6.30.4内核移植到gec2440为例: 一.准备工作:建立工作目录,下载内核 ...

  10. Linux内核移植到JZ2440

    一.准备工作:1.Linux内核:Linux2.6.22.6,可从www.kernel.org上下载:2.交叉工具编译链:arm-linux-gcc-3.4.5-glibc-2.3.6:3.yaffs ...

随机推荐

  1. poj2393

    题目大意: 奶酪工厂 奶牛买了一个奶酪工厂制作全世界有名的Yucky酸奶,在接下来的N周(1<=N<=10000),牛奶的价格和工作将会受到波动例如他将花费C_i (1 <= C_i ...

  2. @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符?

    出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙(子循),目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 属性可以拥有的特质分为四类: 原子性- ...

  3. mac上charels抓包工具使用技巧

    有这俩技巧就足够了 http://www.jianshu.com/p/18449f5f9d1c http://blog.csdn.net/u010187139/article/details/5198 ...

  4. 谁动了我的timer?——C#的垃圾回收和调试

    先来看如下的一段代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 using System; using System.Threading; publi ...

  5. 使用Linux的命令行工具做简单的文本分析

    Basic Text Analysis with Command Line Tools in Linux | William J Turkel 这篇文章非常清楚的介绍了如何使用Linux的命令行工具进 ...

  6. 常用的Linux操作二

    1.sudo  说明:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行 . 2.who      说明 : 显示系统中有那些使用者正在上面,显示的资料包含 ...

  7. [PWA] 4. Hijacking Request

    We want to do offline first, the first thing we need to do is we should able to catch the browser re ...

  8. uva 11324 The Largest Clique (Tarjan+记忆化)

    /*每个环 要么不选 要么全选 可缩点 就得到一个GAD图 然后搞搞算出最大路径*/ #include<iostream> #include<cstdio> #include& ...

  9. Web开发 < base target>

    target就是点击链接后跳转到的目标页.通俗点说,就是你当前页面上的链接<a>,也包括<img>.<link>.<form>,除非你指定了target ...

  10. JavaScript细节整理

    JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...