Linux-2.6.39在Tiny6410上的移植

Linux内核版本号:linux 2.6.39
交叉编译工具:arm-linux-gcc 4.5.1
Linux内核下载:www.kernel.org
开发板:友善之臂Tiny6410

一、解压内核

tar xzvf linux-2.6.39.tar.gz

二、修改Makefile

ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

改成:

ARCH ?= arm
CROSS_COMPILE ?= arm-linux-

三、进入解压出来的linux-2.6.39目录,拷贝arch/arm/configs/s3c6400_defconfig到当前目录并重命名为.config

cp arch/arm/configs/s3c6400_defconfig ./.config

四、基本配置
执行make menuconfig
1、选择CPU型号:

System Type --->
              *** System MMU ***
  │ │          -*- S3C64XX DMA
  │ │          [ ] SMDK6400
  │ │          [ ] A&W6410
  │ │          [*] MINI6410
  │ │          [ ] REAL6410
  │ │          [ ] SMDK6410
  │ │          [ ] NCP
  │ │          [ ] Airgoo HMT
  │ │          [ ] SmartQ 5
  │ │          [ ] SmartQ 7  

只选上MINI6410其它的不选。
2、支持进程中通信

General setup --->
  │ │          [*] System V IPC   

3、退出内核图形配置菜单,执行make生成zImage镜像文件,将arch/arm/boot/zImage拷贝到tftp共享目录,tftp服务器搭建见贴http://www.cnblogs.com/ape-ming/p/5100449.html

五、启动开发板通过tftp下载内核镜像文件并启动内核,出现以下信息:

VFS: Cannot open root device "nfs" or unknown-block(0,255)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,255)
[<c002c680>] (unwind_backtrace+0x0/0xe4) from [<c01b2384>] (panic+0x50/0x16c)
[<c01b2384>] (panic+0x50/0x16c) from [<c0008d64>] (mount_block_root+0x238/0x288)
[<c0008d64>] (mount_block_root+0x238/0x288) from [<c0009074>] (prepare_namespace+0x160/0x1b4)
[<c0009074>] (prepare_namespace+0x160/0x1b4) from [<c00089ec>] (kernel_init+0x100/0x13c)
[<c00089ec>] (kernel_init+0x100/0x13c) from [<c00283d4>] (kernel_thread_exit+0x0/0x8)

这是没有支持MTD分区或者没有文件系统支持,先修改下MTD分区:
打开arch/arm/mach-s3c64xx/mach-mini6410.c,并修改分区

static struct mtd_partition mini6410_nand_part[] = {
    [0] = {
        .name    = "uboot",
        .size    = SZ_1M,
        .offset    = 0,
    },
    [1] = {
        .name    = "kernel",
        .size    = SZ_2M,
        .offset    = SZ_1M,
    },
    [2] = {
        .name    = "file system",
        .size    = MTDPART_SIZ_FULL,
        .offset    = SZ_1M + SZ_2M,
    },
};

配置内核支持MTD:

Device Drivers --->
      <*> Memory Technology Device (MTD) support  --->
  │ │          --- Memory Technology Device (MTD) support
  │ │          [ ]   Debugging
  │ │          < >   MTD tests support
  │ │          [*]   MTD partitioning support
  │ │          < >     RedBoot partition table parsing
  │ │          [*]     Command line partition table parsing
  │ │          < >     ARM Firmware Suite partition parsing
  │ │          < >     TI AR7 partitioning support
  │ │                *** User Modules And Translation Layers ***
  │ │          <*>   Direct char device access to MTD devices
  │ │          -*-   Common interface to block layer for MTD ‘translation layers‘
  │ │          <*>   Caching block device access to MTD devices        

配置内核支持DM9000:

[*] Networking support  --->
        Networking options  --->
          │ │          <*> Packet socket               //包套接字接口
          │ │          <*> Unix domain sockets         //Unix域套接字
          │ │          < > PF_KEY sockets
          │ │          [*] TCP/IP networking           //TCP/IP网络
          │ │          [*]   IP: multicasting          //IP广播协议
          │ │          [ ]   IP: advanced router       //高级路由
          │ │          [*]   IP: kernel level autoconfiguration    //IP:内核级别自动配置
          │ │          [*]     IP: DHCP support                    //DHCP支持,启动时挂在NFS需要
          │ │          [*]     IP: BOOTP support                   //启动时挂在启动机子上的启动文件
          │ │          [*]     IP: RARP support                    //RARP支持,此项和DHCP需要网络中相应服务器支持
Device Drivers --->
    [*] Network device support  --->
          │ │          --- Network device support
          │ │          [*]   Ethernet (10 or 100Mbit)  --->
          │ │          [ ]   Ethernet (1000 Mbit)  --->
          │ │          [ ]   Ethernet (10000 Mbit)  --->
          │ │          [ ]   Wireless LAN  --->
[*]   Ethernet (10 or 100Mbit)  --->
    │ │          --- Ethernet (10 or 100Mbit)
    │ │          < >   ASIX AX88796 NE2000 clone support
    │ │          < >   SMC 91C9x/91C1xxx support
    │ │          <*>   DM9000 support
    │ │          (4)     DM9000 maximum debug level   

配置内核文件系统为NFS网络文件系统:

File system  --->
    [*] Network File Systems  --->
          <*>   NFS client support
  │ │          [*]     NFS client support for NFS version 3
  │ │          [ ]       NFS client support for the NFSv3 ACL protocol extension
  │ │          [ ]     NFS client support for NFS version 4
  │ │          [*]   Root file system on NFS      

如果Network File Systems里面没有Root file system on NFS这一项,请检查下Networking options里面的DHCP支持有没有选上。

六、重新make生成内核镜像拷贝到tftp目录并启动系统,至此Linux内核在S3C6410上的基本移植工作完成。

系统启动过程中遇到以下错误信息的解决办法:
1、机器ID无法识别

Boot with zImage
do not support this address : 50008000

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Error: unrecognized/unsupported machine ID (r1 = 0x000009d8).

在内核启动过程中,系统会检查uboot传递过来的机器ID是否与内核ID匹配,不匹配则会报这个错误。找一下CPU型号是否选对,如果CPU型号没问题则打开arch/arm/mach-xxx/mach-xxx.c(根据所选的CPU确定)找到
MACHINE_START(MINI6410, "MINI6410")函数所指定的CPU型号(MINI6410),之后在arch/arm/tool/mach-types文件里面找到MACHINE_START所指定的CPU型号:
mini6410 MACH_MINI6410 MINI6410 2520
修改最后的机器ID(2520)为修改成上面错误信息打印出来的那个值(r1 = 0x000009d8)。
2、网络文件系统加载失败:
在上面配置没问题的情况下这种错误应该是网卡芯片DM9000的驱动程序有问题,打开arch/arm/mach-xxx/mach-xxx.c(根据所选的CPU确定)修改网卡设备信息:

/* DM9000AEP 10/100 ethernet controller */

static struct resource mini6410_dm9k_resource[] = {
    [0] = {
        .start    = S3C64XX_PA_XM0CSN1,
        .end    = S3C64XX_PA_XM0CSN1 + 1,
        .flags    = IORESOURCE_MEM
    },
    [1] = {
        .start    = S3C64XX_PA_XM0CSN1 + 4,
        .end    = S3C64XX_PA_XM0CSN1 + 5,
        .flags    = IORESOURCE_MEM
    },
    [2] = {
        .start    = S3C_EINT(7),
        .end    = S3C_EINT(7),
        .flags    = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL
    }
};

参考链接:
http://blog.sina.com.cn/s/blog_752fa65f0100p6m4.html
http://blog.csdn.net/lqrensn/article/details/5533613

时间: 2024-10-27 12:20:18

Linux-2.6.39在Tiny6410上的移植的相关文章

Linux-2.6.39在Tiny6410上的移植 - 外设驱动移植

Linux内核版本号:linux 2.6.39 交叉编译工具:arm-linux-gcc 4.5.1 Linux内核下载:www.kernel.org 开发板:友善之臂Tiny6410 LCD:友善之臂S70 一.移植LED驱动 打开arch/arm/mach-s3c64xx/mach-mini6410.c添加下列代码: 1 static struct gpio_led tiny6410_gpio_led[] = { 2 [0] = { 3 .name = "led1", //设备名

Linux运维39期-听老男孩第一次分享学习方法

今天下午老男孩老师来到Linux运维39期分享学习方法: 1:怎样学好Linux?听到这个问题,感觉自己早已忘记开学习自己总结的学习方法,部分方案也没有去执行: 2:预习方法,老男孩老师推荐根据老师提供的预习知识点,自己去上网学,不要去花费大量时间去看预习视频,我的想法是快速浏览预习视频,看到重点知识去截图,遇到不会的知识,上课要重点听: 3:上课要保持最大化的输入,课前要预习: 4:激发老师讲课的动力的方法是,与老师互动,赞美老师: 5:下课保持最大化的输出,与同学们讨论: 6:日事日毕---

Linux服务器通过aws命令行上传文件至S3

目的Linux服务器通过AWS命令行上传文件至S3 配置打开你的AWS控制台: 连接你的Linux服务器,按照以下步骤操作: # 安装pip yum -y install python-pip   # 安装awscli pip install awscli   # 初始化配置 aws configure # 做这一步时系统会要求你输入"访问密钥ID"."私有访问密钥"."默认区域名称"."默认输出格式",前两个在创建IAM用户

移植SDL运行库到Tiny6410 上

在移植游戏之前, 我们首先需要将 SDL/SDL_mixer/SDL_ttf/SDL_image 这四个库移植到 Tiny6410 上, 另外还需要 iconv 库. libiconv-1.13.1.tar.gz Iconv 库 下载:http://ftp.gnu.org/pub/gnu/libiconv/SDL-1.2.14.tar.gz SDL 库 http://www.libsdl.org/download-1.2.phpSDL_image-1.2.8.tar.gz SDL_image 库

16C554在LINUX上的移植(AT91)

16C554在LINUX上的移植(AT91) linux版本:2.6.30 AT91SAM9263 修改串口扩展驱动: 1,在/drivers/serial/下以8250_exar_st16c554.c文件为模板创建8250_at91_xr16v554.c文件:修改相应的PORT和中断号,修改Platform device ID为 PLAT8250_DEV_AT91_XR16V554:在init函数中加入了对总线,及中断口的初始化操作::在文件/include/linux/serial_8250

关于使用SecureCRT 实现 WIN7 与 Linux 双向通信的问题及文件上传下载

Linux 版本:Cent 6.5 X86 VMware workstation 10.0 win7 Ultimate x86 ,Linux 均可以正常链接网络[采用桥接方式] 遇到问题: win7 可以 ping 通linux及网关,linux不能ping通网关及win7,但能链接网络. 前提: 需要手动配置linux的IP为静态,WIN7的可以随意,但是一般在一个网段(不然配置较复杂了),保证可以正常通信访问. 解决: 通过手动改ip及相关配置的方法之后,仍然未能ping通,改链接方式为NA

linux下lrzsz安装过程,SecureCRT上传下载文件工具

linux下lrzsz安装过程,SecureCRT上传下载文件工具 1.从下面的地址下载 lrzsz-1.12.20.tar.gz http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz 2.查看里面的INSTALL文档了解安装参数说明和细节 3.解压文件 tar zxvf lrzsz-1.12.20.tar.gz 4.进入目录 cd lrzsz-1.12.20 5../configure --prefix=/usr/local/lrz

Linux下的经典软件-史上最全

前言 从2012年接触Linux系统以来就被Linux系统所吸引,2个月后便完全抛弃了Windows.在这2年的时间里,我尝试了很多Linux发行版: Gentoo, Fedora, Ubuntu, Debian等.在这些系统中又尝试了很多种软件,这里根据自己的使用经验并结合网上的一些资料,对Linux下常用的软件进行整理,供大家参考,希望能帮助到大家.每款软件都有它的优缺点,适合自己的才是最好的.在这篇文章中我是按自己的喜好推荐给大家或者进行排序的,并不是说它们就是最好的,其它的就不行.建议大

【ruby】【linux】【irb】CentOS上安装配置ruby开发环境,安装 irb

在读<理解Unix进程>这本书,书中代码是用Ruby写的,就自己想实践一下,搜来搜去要安装配置Ruby,我是centOS6.5的系统.下面这篇不错,我又加入了一点自己的理解和试验. 1 方法一:下载ruby的安装包来进行安装 1.安装编译环境gcc 使用yum install gcc在线安装 2.安装ruby开发环境 PS:经常在搜帖子的时候,大神的文章中都是随随便便下载个什么啊,又没告诉我这样的菜鸟到哪里下,让人几番周折,这里 下载 Ruby - Ruby 官方网站:https://www.