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
    
    
  • 相关阅读:
    LeetCode 485. Max Consecutive Ones
    LeetCode 367. Valid Perfect Square
    LeetCode 375. Guess Number Higher or Lower II
    LeetCode 374. Guess Number Higher or Lower
    LeetCode Word Pattern II
    LeetCode Arranging Coins
    LeetCode 422. Valid Word Square
    Session 共享
    java NIO
    非阻塞IO
  • 原文地址:https://www.cnblogs.com/spinsoft/p/2597666.html
Copyright © 2011-2022 走看看