zoukankan      html  css  js  c++  java
  • PandaBoard烧写指南[转]

    http://my.csdn.net/pku_android

      此手册介绍的是把x-loader、u-boot、kernel和android的二进制文件烧写到PandaBoard开发板的非易失存储器上,如flash。大家可用从PandaBoard官网下载的源码编译生成的二进制文件烧写,也可直接从官网下载相应的二进制文件烧写,这两种方式的烧写过程都是一样的。

     作者:王键

    1、文件准备

           本文介绍的是从官网下载的二进制文件烧写,所要烧写的二进制文件对应为:MLO、u-boot.bin、uImage和afs文件夹。其中afs文件夹为android的文件系统对应的文件夹。

    整个烧写过程是通过SD卡来完成。需先在SD卡上制作相应分区,然后把上述文件拷贝到SD卡相应分区中,开机前把SD卡插入到开发板的SD插槽中,上电启动就可以了。

     2、制作SD卡

          把SD卡插入到SD卡读卡器中,把读卡器插入到PC机的USB插口中,通过如下命令查看SD卡对应的Linux中的设备文件:
          # fdisk –ls

          在你自己的电脑上,这个SD卡对应的设备文件名可能不同。例如一个8G的SD的信息如下:Disk /dev/sde: 8011 MByte, 8011120640 Byte,这样此SD卡对应的linux下的设备文件名为/dev/sde。

          以下操作假设SD卡对应的设备文件名为/dev/sdc。

           运行脚本omap3-mkcard.sh对SD卡进行分区:

           # omap3-mkcard.sh /dev/sdc

           运行完后,会把SD卡分成两个分区boot和rootfs。boot分区的大小大概为16M,SD卡剩余空间全部为rootfs分区。在后面的操作中,需要把MLO、u-boot.bin和uImage文件拷贝到boot分区,把afs文件夹下所有内容拷贝到rootfs分区根目录下。

            如果需要把boot分区分配更大的空间,或者分配多于2个分区,可参考网址:http://omappedia.org/wiki/Android_SD_Configuration

            运行完脚本后,需把SD卡的新生成的两个分区boot和rootfs挂载到主机系统中,操作如下:

            #mkdir /tmp/mmc1

            #mkdir /tmp/mmc2

            #mount /dev/sdc1 /tmp/mmc1

            #mount /dev/sdc2 /tmp/mmc2

     注意:如果挂载时报错,说要指定挂载类型,那么重新运行如下命令,然后挂载:

          #mkfs.vfat -F 32 -n boot /dev/sdc1

          #mkfs.ext3 -L rootfs /dev/sdc2

    转载请注明出处:http://blog.csdn.net/pku_android

     3、烧写

           此过程就是把相应文件拷贝到SD卡的两个分区boot和rootfs中。

          首先把bootloader的相关文件uboot.bin和MLO,以及kernel对应的文件u-boot.bin拷贝到SD卡的boot分区。前面的操作已经把SD卡的boot分区挂载到/tmp/mmc1目录,故只需拷贝到此目录即可,下同。操作如下:

          #cp -rf <location_of_uboot.bin_file> /tmp/mmc1

          #cp -rf <location_of_MLO_file> /tmp/mmc1

          #cp -rf <location_of_uImage_file> /tmp/mmc1

         然后把文件系统拷贝到SD卡的rootfs分区,即把afs目录下所有文件拷贝到/tmp/mmc2目录,注意不要拷贝afs文件夹,只拷贝其下的内容。操作如下:

         #cp –Rfp ~/afs/* /tmp/mmc2

         #chmod –R 777 /tmp/mmc2/*

         然后卸载SD卡的boot和rootfs分区,操作如下:

         #unmount /tmp/mmc1

        #unmount /tmp/mmc2

     4、启动运行

             把SD卡插入到开发板的SD卡插槽中,HDMI线连接开发板和电视,上电,然后就会在电视上看到Android启动的画面。

     附注:

    1、   更详细的操作,可参考网站:http://omappedia.org/wiki/OMAP_Pandroid_Mai

    2、   omap3-mkcard.sh本如下:

    1. #! /bin/sh  
    2. # mkcard.sh v0.5  
    3. # (c) Copyright 2009 Graeme Gregory <dp@xora.org.uk>  
    4. # Licensed under terms of GPLv2  
    5. #  
    6. # Parts of the procudure base on the work of Denys Dmytriyenko  
    7. # http://wiki.omap.com/index.php/MMC_Boot_Format  
    8.   
    9. export LC_ALL=C  
    10.   
    11. if [ $# -ne 1 ]; then  
    12.     echo "Usage: $0 <drive>"  
    13.     exit 1;  
    14. fi  
    15.   
    16. DRIVE=$1  
    17.   
    18. dd if=/dev/zero of=$DRIVE bs=1024 count=1024  
    19.   
    20. SIZE=`fdisk -l $DRIVE | grep Disk | grep bytes | awk '{print $5}'`  
    21.   
    22. echo DISK SIZE - $SIZE bytes  
    23.   
    24. CYLINDERS=`echo $SIZE/255/63/512 | bc`  
    25.   
    26. echo CYLINDERS - $CYLINDERS  
    27.   
    28. {  
    29. echo ,9,0x0C,*  
    30. echo ,,,-  
    31. } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE  
    32.   
    33. sleep 1  
    34.   
    35.   
    36. if [ -x `which kpartx` ]; then  
    37.     kpartx -a ${DRIVE}  
    38. fi  
    39.   
    40. # handle various device names.  
    41. # note something like fdisk -l /dev/loop0 | egrep -E '^/dev' | cut -d' ' -f1   
    42. # won't work due to https://bugzilla.redhat.com/show_bug.cgi?id=649572  
    43.   
    44. PARTITION1=${DRIVE}1  
    45. if [ ! -b ${PARTITION1} ]; then  
    46.     PARTITION1=${DRIVE}p1  
    47. fi  
    48.   
    49. DRIVE_NAME=`basename $DRIVE`  
    50. DEV_DIR=`dirname $DRIVE`  
    51.   
    52. if [ ! -b ${PARTITION1} ]; then  
    53.     PARTITION1=$DEV_DIR/mapper/${DRIVE_NAME}p1  
    54. fi  
    55.   
    56. PARTITION2=${DRIVE}2  
    57. if [ ! -b ${PARTITION2} ]; then  
    58.     PARTITION2=${DRIVE}p2  
    59. fi  
    60. if [ ! -b ${PARTITION2} ]; then  
    61.     PARTITION2=$DEV_DIR/mapper/${DRIVE_NAME}p2  
    62. fi  
    63.   
    64.   
    65. # now make partitions.  
    66. if [ -b ${PARTITION1} ]; then  
    67.     umount ${PARTITION1}  
    68.     mkfs.vfat -F 32 -n "boot" ${PARTITION1}  
    69. else  
    70.     echo "Cant find boot partition in /dev"  
    71. fi  
    72.   
    73. if [ -b ${PARITION2} ]; then  
    74.     umount ${PARTITION2}  
    75.     #mke2fs -j -L "Angstrom" ${PARTITION2}   
    76.     mke2fs -j -L "rootfs" ${PARTITION2}  
    77. else  
    78.     echo "Cant find rootfs partition in /dev"  
    79. fi  
    #! /bin/sh
    # mkcard.sh v0.5
    # (c) Copyright 2009 Graeme Gregory <dp@xora.org.uk>
    # Licensed under terms of GPLv2
    #
    # Parts of the procudure base on the work of Denys Dmytriyenko
    # http://wiki.omap.com/index.php/MMC_Boot_Format
    
    export LC_ALL=C
    
    if [ $# -ne 1 ]; then
    	echo "Usage: $0 <drive>"
    	exit 1;
    fi
    
    DRIVE=$1
    
    dd if=/dev/zero of=$DRIVE bs=1024 count=1024
    
    SIZE=`fdisk -l $DRIVE | grep Disk | grep bytes | awk '{print $5}'`
    
    echo DISK SIZE - $SIZE bytes
    
    CYLINDERS=`echo $SIZE/255/63/512 | bc`
    
    echo CYLINDERS - $CYLINDERS
    
    {
    echo ,9,0x0C,*
    echo ,,,-
    } | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE
    
    sleep 1
    
    
    if [ -x `which kpartx` ]; then
    	kpartx -a ${DRIVE}
    fi
    
    # handle various device names.
    # note something like fdisk -l /dev/loop0 | egrep -E '^/dev' | cut -d' ' -f1 
    # won't work due to https://bugzilla.redhat.com/show_bug.cgi?id=649572
    
    PARTITION1=${DRIVE}1
    if [ ! -b ${PARTITION1} ]; then
    	PARTITION1=${DRIVE}p1
    fi
    
    DRIVE_NAME=`basename $DRIVE`
    DEV_DIR=`dirname $DRIVE`
    
    if [ ! -b ${PARTITION1} ]; then
    	PARTITION1=$DEV_DIR/mapper/${DRIVE_NAME}p1
    fi
    
    PARTITION2=${DRIVE}2
    if [ ! -b ${PARTITION2} ]; then
    	PARTITION2=${DRIVE}p2
    fi
    if [ ! -b ${PARTITION2} ]; then
    	PARTITION2=$DEV_DIR/mapper/${DRIVE_NAME}p2
    fi
    
    
    # now make partitions.
    if [ -b ${PARTITION1} ]; then
    	umount ${PARTITION1}
    	mkfs.vfat -F 32 -n "boot" ${PARTITION1}
    else
    	echo "Cant find boot partition in /dev"
    fi
    
    if [ -b ${PARITION2} ]; then
    	umount ${PARTITION2}
    	#mke2fs -j -L "Angstrom" ${PARTITION2} 
    	mke2fs -j -L "rootfs" ${PARTITION2}
    else
    	echo "Cant find rootfs partition in /dev"
    fi
    
    
  • 相关阅读:
    数据结构概论
    html基础:有序列表 框架集 form表单
    html基础:定义 图片 表格
    给出2个数和一个运算符号,用函数求结果
    百钱买百鸡问题
    九九乘法表
    过路问题
    php基础:控制结构 总结
    php基础:变量,运算符总结
    php基础:数据库的含义和基本操作 增 删 改 查
  • 原文地址:https://www.cnblogs.com/spinsoft/p/2597666.html
Copyright © 2011-2022 走看看