Chinaunix首页 | 论坛 | 博客
  • 博客访问: 164621
  • 博文数量: 37
  • 博客积分: 2218
  • 博客等级: 大尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-04 23:35
文章分类

全部博文(37)

文章存档

2012年(1)

2011年(5)

2010年(31)

分类: LINUX

2011-07-07 12:01:13

1) 下载安装编译工具

    cd

    #回当前用户主目录

    wget

    #下载

    cd /opt

    #进入目录

    tar zxvf ~/arm-linux-gcc-4.3.2.tgz

    #解压

    export PATH=$PATH:/opt/arm-2009q1/bin/

    #将目录加入环境变量

2) 安装 git 工具

    命令 apt-get install git-core

3) 下载并编译u-boot

   cd;mkdir uboot;cd uboot

    #回当前用户主目录,建uboot目录后进入

    git clone git://repo.or.cz/u-boot-openmoko/mini2440.git

    #下载uboot源码

    export CROSS_COMPILE=arm-none-linux-gnueabi-

    #设置编译器变量

    cd mini2440

    #进入uboot源码目录

    make mini2440_config

    #设置编译目标

    make all

    #编译

    ls u-boot.bin -l

    #显示u-boot.bin文件,确定已成功编译

4) 下载并编译内核

    cd;mkdir kernel;cd kernel

    #回当前用户主目录,建kernel目录后进入

    git clone git://repo.or.cz/linux-2.6/mini2440.git

    #下载内核源码

    cd mini2440

    #进入内核源码目录

    mkdir -p ../kernel-bin

    #建立最终二进制文件存放目录

    CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig

    #生成mini2440.config文件

    CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/

    #编译内核

    CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../kernel-bin/ modules_install

    #编译和安装内核模块,生成后放在当前用户主目录的kernel/kernel-bin目录;蓝色部份在原英文文档中没有,会导致以后启动时出现无法找到modules.dep的错误提示

    ../../uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage ~/kernel/kernel-bin/uImage

    #生成uImage文件放在当前用户主目录的kernel/kernel-bin目录

5) 制作文件系统

    cd

    #回当前用户主目录,建kernel目录后进入

    wget http://blog.leshak.ru/files/debian-5.0-armel-rootfs-20090216.tar.bz2

    #下载老外已经做好的文件系统压缩文件,也可按http://blog.leshak.ru/english/pages/how-to-install-debian-50-lenny-to-arm-qq2440/上方法自行制作;

    fdisk /dev/sdb

    #本人的SD卡是SDHC4G卡,利用读卡器连接在电脑的USB口,用fdisk分区分了第一区为2G,详细命令步骤省去。

    mkfs.ext3 /dev/sdb1

    #SD卡上的第一个分区建立EXT3文件系统

    mount /dev/sdb1 /mnt/arm

    #挂接到/mnt/arm

    cd /mnt/arm; tar jxvf debian-5.0-armel-rootfs-20090216.tar.bz2

    #进入目录,解压

    cp ~/kernel/kernel-bin/lib/modules lib/ -R

    #把以上第4)步中生成的~/kernel/kernel-bin/lib/modules目录拷贝到解压以上文件后的

    cd;umount /mnt/arm

    #最后回当前用户主目录,卸载,把SD卡取出放进mini2440主机中

以下操作在XP操作系统中执行,XP中已按mini2440手册安装设置并可使用DNW程序及usb的驱动,且超级终端能正确连接mini2440;因本人选择使用tftp下载内核的方法,所以先从网上下载安装了tftpd32 for windows,且将以上第4)步生成的uImage文件放在tftpd32的目录后启动tftpd32 for windowsXP的网络IP设为192.168.1.110

6) 烧写ubootnand

    mini2440用户手册(2010-2-4) 中第390页的“8.3.2 U-Boot 烧写到开发板”内容将以上第3)步生成的u-boot.bin烧写到mini2440板上

7) 烧写内核

    关掉mini2440后,把mini2440上的“NOR/NAND选择开关”设置为NAND重新开机,这时可以超级终端看到uboot的启动信息,启动后进入待命状态显示 mini2440 #

    打入以下命令:

    dynpart

    #划分nand

    dynenv set u-boot_env

    #建立uboot动态环境

    saveenv

    #保存

    setenv ipaddr 192.168.1.100

    #设置uboot变量,tftp下载文件时的IP

    setenv serverip 192.168.1.110

    #设置uboot变量,tftp下载文件时的服务器IP

    tftp 0x32000000 uImage

    #下载uImage内核文件到0x32000000处(这个0x32000000是你内核的其实安装地址)

    nand write.e 0x32000000 kernel

    #0x32000000处内容写入kernel部份

    setenv bootargs 'noinitrd rootdelay=4 root=/dev/mmcblk0p1 console=ttySAC0,115200'

    #设置启动传递参数,mmcblk0p1指明文件要系统在SD卡的第一个分区个

    setenv bootcmd nboot.e kernel \; bootm

    #设置uboot自动启动命令

    saveenv

    #保存以上设置

    reset

    #重启

8) 一切正常的话,就可以看到LCD上的login提示 

 

 (FAQ)

有时候碰到坏块比较多的情况,需要执行一下操作:

(注意:一下几个操作相当于格式化了你的NAND,建议操作之前先做备份)  

    nand bad

    #检查有没有坏的nand

    nand scrub

    #格式化nand

    nand createbbt

    #重新生成块

    dynpart

    dynenv set u-boot_env

    saveenv

然后重新下载u-boot和内核镜像到NAND Flash,重新执行操作。

 

阅读(2045) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~