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

简介: #!/bin/sh # 参考文章: # 1. MFGTool Emmc mksdcard.sh MFGTool Emmc mksdcard.sh comment # http://jordonwu.
#!/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

#<!-- partitioning the eMMC: -->
#<CMD state="Updater" type="push" body="$ echo 8 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">access user partition and enable boot partion 1 to boot</CMD>
#<CMD state="Updater" type="push" body="send" file="mksdcard.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.sh /dev/mmcblk0"> Partitioning SD card now...</CMD>

# partition size in MB
# 这里定义的是启动ROM 10MB
BOOT_ROM_SIZE=10


# call sfdisk to create partition table
# destroy the partition table           
# $1:   为命令行第一个传递的参数
# node: /dev/mmcblk0
# 将前导一个1024字节(1KB)大小的分区零0,也就是分区表擦除
node=$1
dd if=/dev/zero of=${node} bs=1024 count=1

# sfdisk reads lines of the form
#   <start> <size> <id>< bootable> <c,h,s> <c,h,s>
# where each line fills one partition descriptor.
#
# --force: disable all consistency checking
# -uS, -uB, -uC, -uM: 以扇面/块/柱面数/MB为单位 显示或形成报告
# SmartFdisk –uM表示以MB为单位生成报告  即: sfdisk --force -um  /dev/mmcblk0 <<EOF
#
# BOOT_ROM_SIZE: 10
# 而分区则是使用sfdisk进行的,空出了uboot和kernel的位置,从起始地址10MB开始的:
# (10,,83) 将其10M以后所有空间分成一个区,,此处应该就是mmcblk0p1,其中83是Linux分区标识 
#
# Uboot和kernel是直接使用dd写入mmcblk0中的:
#     <!-- burn the uboot: -->
#   <CMD state="Updater" type="push" body="send" file="files/u-boot.bin">Sending U-Boot</CMD>
#   <CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=2 count=2000">Clean U-Bootenvironment</CMD>
#   <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=512 seek=2 skip=2">write U-Boot to sdcard</CMD>
#   
#   <!-- burn the kernel: -->
#   <CMD state="Updater" type="push" body="send" file="files/uImage">Sending kernel uImage</CMD>
#   <CMD state="Updater" type="push" body="$ dd if=$FILE of=/dev/mmcblk0 bs=1M seek=1 conv=fsync">write kernel image to emmc</CMD>

sfdisk --force -uM ${node} << EOF
${BOOT_ROM_SIZE},,83
EOF

 

目录
相关文章
|
C语言
设备树知识小全(六):设备节点及label的命名
设备树知识小全(六):设备节点及label的命名
586 0
|
存储 Linux 编译器
Linux 交叉编译第三方库需要设置的环境变量
Linux 交叉编译第三方库需要设置的环境变量
792 0
|
机器学习/深度学习 算法 Linux
xenomai内核解析--实时内存管理--xnheap
Xenomai是一个实时操作系统(RTOS)层,用于Linux,旨在提供确定性的任务调度和服务。其内存管理机制包括一个名为xnheap的内存池,确保内存分配和释放的时间确定性,以满足硬实时系统的严格需求。
421 0
xenomai内核解析--实时内存管理--xnheap
|
机器学习/深度学习 自然语言处理 算法
【机器学习】朴素贝叶斯分类器的优点是什么?
【5月更文挑战第10天】【机器学习】朴素贝叶斯分类器的优点是什么?
|
Linux Android开发 C语言
不写一行代码(一):实现安卓基于GPIO的LED设备驱动
本文通过实践操作,展示了在Android系统中不编写任何代码,利用设备树(DTS)配置和内核支持的通用GPIO LED驱动来控制LED设备,并进一步通过C语言编写NDK测试APP来实现LED的闪烁效果。
700 0
不写一行代码(一):实现安卓基于GPIO的LED设备驱动
|
网络协议 算法 网络性能优化
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
|
机器学习/深度学习 数据可视化 PyTorch
TensorFlow与PyTorch框架的深入对比:特性、优势与应用场景
【5月更文挑战第4天】本文对比了深度学习主流框架TensorFlow和PyTorch的特性、优势及应用场景。TensorFlow以其静态计算图、高性能及TensorBoard可视化工具适合大规模数据处理和复杂模型,但学习曲线较陡峭。PyTorch则以动态计算图、易用性和灵活性见长,便于研究和原型开发,但在性能和部署上有局限。选择框架应根据具体需求和场景。
1836 4
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
238 1
|
Ubuntu Linux 开发工具
U-Boot 中使用 nfs 命令加载文件报错指南
U-Boot 中使用 nfs 命令加载文件报错指南
640 0