I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking

#!/bin/bash

# 参考文章:
#   1. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
#       http://c.biancheng.net/cpp/view/2739.html

# <CMD state="Updater" type="push" body="send" file="mksdcard-android.sh.tar">Sending partition shell</CMD>
# <CMD state="Updater" type="push" body="$ tar xf $FILE "> Partitioning...</CMD>
# <CMD state="Updater" type="push" body="$ sh mksdcard-android.sh /dev/mmcblk0"> Partitioning...</CMD>
# <CMD state="Updater" type="push" body="$ ls -l /dev/mmc* ">Formatting sd partition</CMD>

# partition size in MB
BOOTLOAD_RESERVE=8          # bootload  8MB
BOOT_ROM_SIZE=8             # 启动rom   8MB
SYSTEM_ROM_SIZE=512         # 系统rom   512MB
CACHE_SIZE=512              # 缓存      512MB
RECOVERY_ROM_SIZE=8         # 恢复rom   8MB
VENDER_SIZE=8               # 供货商    8MB
MISC_SIZE=8                 # 杂项      8MB

help() {

# basename String [ Suffix ]
# basename 命令读取 String 参数,删除以 /(斜杠) 结尾的前缀以及任何指定的 Suffix 参数,
# 并将剩余的基本文件名称写至标准输出。
bn=`basename $0`
cat << EOF
usage $bn <option> device_node

options:
  -h                displays this help message
  -s                only get partition size
  -np                 not partition.
  -f                 flash android image.
EOF

}

# check the if root?
# 检查当前是否拥有root权限
userid=`id -u`
if [ $userid -ne "0" ]; then
    echo "you're not root?"
    exit
fi

# parse command line
# 解析命令行参数
moreoptions=1
node="na"
cal_only=0
flash_images=0
not_partition=0
not_format_fs=0
# $#: 传递给脚本或函数的参数个数。
#
# $ sh mksdcard-android.sh /dev/mmcblk0
# $1: /dev/mmcblk0
#
# moreoptions: 1
# node: /dev/mmcblk0
while [ "$moreoptions" = 1 -a $# -gt 0 ]; do
    case $1 in
        -h) help; exit ;;
        -s) cal_only=1 ;;
        -f) flash_images=1 ;;
        -np) not_partition=1 ;;
        -nf) not_format_fs=1 ;;
        *)  moreoptions=0; node=$1 ;;
    esac
    [ "$moreoptions" = 0 ] && [ $# -gt 1 ] && help && exit
    [ "$moreoptions" = 1 ] && shift
done

# 如果node设备节点不存在,那么就退出程序
if [ ! -e ${node} ]; then
    help
    exit
fi

# call sfdisk to create partition table
# 调用sfdisk来创建分区表
# get total card size
# extend_size 增加了这个分量,同时data_size减小了这个分量,所以磁盘总量不变
seprate=40
# -s [or --show-size]: 显示一个分区的大小,单位是KB。
total_size=`sfdisk -s ${node}`
total_size=`expr ${total_size} / 1024`      # 重新计算,将单位换算成MB
boot_rom_sizeb=`expr ${BOOT_ROM_SIZE} + ${BOOTLOAD_RESERVE}`
extend_size=`expr ${SYSTEM_ROM_SIZE} + ${CACHE_SIZE} + ${VENDER_SIZE} + ${MISC_SIZE} + ${seprate}`
data_size=`expr ${total_size} - ${boot_rom_sizeb} - ${RECOVERY_ROM_SIZE} - ${extend_size} + ${seprate}`

# create partitions
if [ "${cal_only}" -eq "1" ]; then
cat << EOF
BOOT   : ${boot_rom_sizeb}MB
RECOVERY: ${RECOVERY_ROM_SIZE}MB
SYSTEM : ${SYSTEM_ROM_SIZE}MB
CACHE  : ${CACHE_SIZE}MB
DATA   : ${data_size}MB
MISC   : ${MISC_SIZE}MB
EOF
exit
fi

# destroy the partition table
# 删除以前的分区表,从这里可以看出,分区表的大小貌似是1024字节
dd if=/dev/zero of=${node} bs=1024 count=1

sfdisk --force -uM ${node} << EOF
,${boot_rom_sizeb},83
,${RECOVERY_ROM_SIZE},83
,${extend_size},5
,${data_size},83
,${SYSTEM_ROM_SIZE},83
,${CACHE_SIZE},83
,${VENDER_SIZE},83
,${MISC_SIZE},83
EOF

# adjust the partition reserve for bootloader.
# if you don't put the uboot on same device, you can remove the BOOTLOADER_ERSERVE
# to have 8M space.
# the minimal sylinder for some card is 4M, maybe some was 8M
# just 8M for some big eMMC 's sylinder
# -N# : 只改变分区的编号 #
sfdisk --force -uM ${node} -N1 << EOF
${BOOTLOAD_RESERVE},${BOOT_ROM_SIZE},83
EOF

# For MFGTool Notes:
# MFGTool use mksdcard-android.tar store this script
# if you want change it.
# do following:
#   tar xf mksdcard-android.sh.tar
#   vi mksdcard-android.sh
#   [ edit want you want to change ]
#   rm mksdcard-android.sh.tar; tar cf mksdcard-android.sh.tar mksdcard-android.sh

 

时间: 2024-08-24 21:34:19

I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking的相关文章

I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard.sh hacking

#!/bin/sh # 参考文章: # 1. MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.github.io/blog/2015/05/14/mfgtool-emmc-mksdcard-dot-sh/ # 2. linux sfdisk partition # http://blog.csdn.net/shell_albert/article/details/8425530 #<!-- p

I.MX6 Manufacturing Tool V2 (MFGTool2) Update Command List (UCL) User Guide translate

  Manufacturing Tool V2 (MFGTool2)  Update Command List (UCL) User Guide     Contents(目录) Contents(目录)                                                        1 1 Overview(概述)                                                      2 2 UTP mode operation

I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking

<!-- * Copyright (C) 2010-2013, Freescale Semiconductor, Inc. All Rights Reserved. * The CFG element contains a list of recognized usb devices. * DEV elements provide a name, class, vid and pid for each device. * * Each LIST element contains a list o

u boot-fsl i.mx6烧写启动烧写的android系统时出现了初始化错误!

问题描述 fsl i.mx6烧写启动烧写的android系统时出现了初始化错误! U-Boot 2009.08 ( 3??? 05 2013 - 17:20:28) CPU: Freescale i.MX6 family TO1.2 at 792 MHz Temperature: 34 C, calibration data 0x5774e769 mx6q pll1: 792MHz mx6q pll2: 528MHz mx6q pll3: 480MHz mx6q pll8: 50MHz ipg

最新版Android Studio V2.2.2版本[Android Studio v2.2.2 (October 2016)]分享

最新版Android Studio V2.2.2版本[Android Studio v2.2.2 (October 2016)]分享 最新版Android Studio V2.2.2版本百度云下载:http://pan.baidu.com/s/1kVsGZkV 黏贴下官网的Release Notes: Revisions The sections below provide notes about successive releases of Android Studio, as denoted

【手机云应用】云词Remword v2.7.5 for Android

云词(Remword)是一款手机电子词典软件,使用了目前最先进的云计算技术,使客户端的体积缩小到不到2M,却依然让用户拥有及其庞大的词库,例句和真人语音.同时由于采用了高效的数据压缩技术,无论是查询单词还是语音朗读,速度都非常快!此外,为了方便学习英语的用户,云词内建了一套科学的背单词系统,采用高效的艾宾浩斯记忆曲线算法,完美结合电子词典的查词功能,让用户做到查询过生词后,系统自动在最合适的时候提醒用户进行单词复习,做到查询一次,终身不忘! 注:2.7以前版本必须先卸载原来老版本方可安装(不会丢

AM335x Android eMMC mkmmc-android.sh hacking

# AM335x Android eMMC mkmmc-android.sh hacking # # 1. 有空解读一下android的分区文件. # 2. 代码来源:https://github.com/hendersa/bbbandroid-external-ti_android_utilities/blob/master/am335x/mk-mmc/mkmmc-android.sh # # 2016-9-8 深圳 南山平山村 曾剑锋 #!/bin/bash # 如果参数只有一个,这里就会使

I.MX6 mkuserimg.sh hacking

/*********************************************************************** * I.MX6 mkuserimg.sh hacking * 说明: * 上次发现Android源码使用mkuserimg.sh来打包Android文件系统,现在来 * 跟踪一下其内部的工作机制. * * 2016-6-28 深圳 南山平山村 曾剑锋 ***************************************************

I.MX6 eMMC 中启动U-boot存放的首地址

/************************************************************************************ * I.MX6 eMMC 中启动U-boot存放的首地址 * 声明: * 本文是解读<I.MX6 Manufacturing Tool V2 (MFGTool2) ucl2.xml hacking>之后对 * U-boot存放于eMMC 1K地址有疑惑,希望能找到确切的说法. * * 2015-10-14 晴 深圳 南山平山