设为首页 加入收藏

TOP

在线升级uboot,内核和文件系统(一)
2014-11-24 03:32:19 来源: 作者: 【 】 浏览:2
Tags:在线升级 uboot 内核 文件 系统


下面我在fl2440开发板上运行正常的情况下实现更新或升级uboot,内核和文件系统的任务。



如下是一个在线升级的脚本:


#!/bin/sh


#This shell scripts used to update the u-boot linux kernel, root file system image when Linux running



erase_cmd=flash_eraseall


write_cmd=nandwrite


cu_version=`cat /proc/version`


PROG_NAME=`basename $0`


IMAGE_TYPE=


ROOTFS_TYPE=



usage()


{


echo " Usage: $PROG_NAME -[f/k/u/h] [filename]"


echo "Example: $PROG_NAME linuxrom-s3c2440.bin"


echo " $PROG_NAME u-boot-s3c2440.bin"


echo " $PROG_NAME rootfs.jffs2"


echo " $PROG_NAME -u uboot.bin"


echo " $PROG_NAME -k lin.bin"


echo " $PROG_NAME -f fs.yaffs2"


echo " $PROG_NAME -h"


exit;


}



burn_image()


{


partition=$1


file_name=$2



if ( ! $erase_cmd /dev/$partition) ; then


echo "Erase /dev/$partition failure."


exit


fi


if ( ! $write_cmd -p /dev/$partition $file_name) ; then


echo "Write $file_name to /dev/$partition failure."


exit


fi


}


check_and_umount()


{


MTD=$1


MTDBLOCK=mtdblock${MTD:3}


MOUNT_BLOCK=`cat /proc/mounts | grep $MTDBLOCK|awk -F " " '{print $1}'`



if [ -n "$MOUNT_BLOCK" ] ; then


umount /dev/$MTDBLOCK


else


echo "No need umount $MTDBLOCK"


fi


}



check_image_type()


{


IMAGE_NAME=$1


if echo $IMAGE_NAME | grep -E "boot|uboot|u-boot|bootloader" > /dev/null ; then


IMAGE_TYPE=BOOTLOADER


elif echo $IMAGE_NAME | grep -E "linux|kernel" > /dev/null ; then


IMAGE_TYPE=KERNEL


elif echo $IMAGE_NAME | grep -E "rootfs|jffs2|yaffs2|ubifs|cramfs|ramdisk" > /dev/null ; then


IMAGE_TYPE=ROOTFS


else


IMAGE_TYPE=UNKNOW


fi


}



up_bootloader()


{


IMAGE_FILE=$1


echo "Upgrade bootloader image '$IMAGE_FILE'"



#To-Do: Find the mtd here, only do upgrade if we can find it, or throw error and exit out


#echo $mtd | grep -E "u-boot|uboot" | awk -F ":" '{print $1}'



partition=`cat /proc/mtd | grep -E "uboot|u-boot|U-boot|bootloader" | awk -F ":" '{print $1}'`


if [ -z $partition ] ; then


echo "Can not find the u-boot partition for update!"


exit


fi



#To-Do: Start to burn the image to corresponding partition here


burn_image $partition $IMAGE_FILE


}



up_kernel()


{


IMAGE_FILE=$1


echo "Upgrade linux kernel image '$IMAGE_FILE'"



#To-Do: Find the mtd here, only do upgrade if we can find it, or throw error and exit out


#echo $mtd | grep -E "linux|kernel" | awk -F ":" '{print $1}'



partition=`cat /proc/mtd | grep -E "linux|kernel" | awk -F ":" '{print $1}'`



if [ -z $partition ] ; then


echo "Can not find the kernel partition for update!"


exit


fi



#To-Do: Start to burn the image to corresponding partition here


burn_image $partition $IMAGE_FILE


}



up_rootfs()


{


IMAGE_NAME=$1


ROOTFS_TYPE=${IMAGE_NAME##*.}


VALID_ROOTFS_TYPE=0


echo $ROOTFS_TYPE



for i in jffs2 yaffs2 ubifs ramdisk cramfs ; do


if [ "$i" = "$ROOTFS_TYPE" ] ; then


VALID_ROOTFS_TYPE=1


break;


fi


done



if [ 0 == $VALID_ROOTFS_TYPE ] ; then


echo "============================================================================================"


echo "ERROR: Unknow rootfs image '$IMAGE_NAME', suffix/type: .$ROOTFS_TYPE"


echo "The suffix of rootfs image file name should be: .ramdisk .yaffs2 .jffs2 .ubifs .cramfs"


echo "============================================================================================"


usage


fi



echo "Upgrade $ROOTFS_TYPE rootfs image '$IMAGE_FILE'"



#To-Do: Find the mtd here, only do upgrade if we can find it, or throw error and exit out


MTD=`cat /proc/mtd | grep -E "$ROOTFS_TYPE" | awk -F ":" '{print $1}'`



#To-Do: Check this partition already mounted or not, if mounted then umount it first here


check_and_umount $MTD



#To-Do: Start to burn the image to corresponding part

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇新版MapReduce的API编程简单模板 下一篇用OpenCL实现HEVC中ME模块的测试..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·工业机器人TCP校准中 (2025-12-25 05:19:17)
·opc 通讯协议与 TCP (2025-12-25 05:19:15)
·labview中tcp/ip通信 (2025-12-25 05:19:13)
·新书介绍《Python数 (2025-12-25 04:49:47)
·怎么利用 Python 进 (2025-12-25 04:49:45)