bbb 烧写脚本分析
ftp服务器地址,即CCS Uniflash的地址
SERVER_IP="192.168.2.1"
MLO u-boot.img uImage压缩文件的名称,即ftp服务器下载目录里的文件名
BOOT_PARTITION="boot_partition.tar.gz"
文件系统的名称,即ftp服务器下载目录里的文件名
ROOTFS_PARTITION="rootfs_partition.tar.gz"
要烧写的emmc的设备名称
DRIVE="/dev/mmcblk0"
通过tftp下载上面两个文件,这里其实可以不用从ftp上下载,直接拷贝到sd卡也行
time tftp -b 4096 -g -r ${BOOT_PARTITION} ${SERVER_IP} &
boot_pid=$!
time tftp -b 4096 -g -r ${ROOTFS_PARTITION} ${SERVER_IP} &
rootfs_pid=$!
清除分区
dd if=/dev/zero of=$DRIVE bs=4k count=1
sync
sync
获得emmc的大小,以字节为单位
SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`
计算柱面数,一般来说,linux系统都是将磁盘空间的计算以这样的公式
磁头数*每磁道的扇区数*每扇区的字节数*柱面数 = 磁盘总大小
而且一般计算的时候,磁头数=255,每磁道的扇区数=63,每扇区的字节数=512,然后用总大小来计算出“柱面数”,
然后分区的时候,就以柱面的数量来划分区
因此,下面就是来计算柱面数
CYLINDERS=`echo $SIZE/255/63/512 | bc`
这个函数的作用就是卸载已挂载的分区,并用dd命令来清除分区
check_mounted(){
从proc文件系统中得到已经挂载的分区列表
is_mounted=$(grep ${DRIVE}p /proc/mounts | awk '{print $2}')
if grep -q ${DRIVE}p /proc/mounts; then
echo "Found mounted partition(s) on " ${DRIVE}": " $is_mounted
如果有分区存在,则需要umount所有分区
umount $is_mounted
counter=1
for i in $is_mounted; do \
echo "4k erase on ${DRIVE}p${counter}";
然后,依次用dd命令来清除分区
dd if=/dev/zero of=${DRIVE}p${counter} bs=4k count=1;
counter=$((counter+1));
done
else
echo "No partition found. Continuing."
fi
}
check_mounted;
用上面得到的柱面数来分区
echo "Partitioning the eMMC..."
用sfdisk指定emmc,磁头数=255,每磁道的扇区数=63,柱面数=上面计算的结果
sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
这里分了两个区,每个区4个参数,第一个参数是起始柱面号,第二个参数是柱面数,因此下面的参数实际
就是,第一个区的柱面数0-9,第二个区的柱面数10-MAX
,9,0x0C,*
10,,,-
EOF
格式化刚刚分的两个区
mkfs.vfat -F 32 -n "boot" ${DRIVE}p1
mkfs.ext3 -L "rootfs" ${DRIVE}p2
挂载刚刚分的两个区
mkdir tmp_boot
mkdir tmp_rootfs
mount -t vfat ${DRIVE}p1 tmp_boot
mount -t ext3 ${DRIVE}p2 tmp_rootfs
分别解压用ftp下载的两个文件到那两个分区即可
time tar -xf ${BOOT_PARTITION} -C tmp_boot
sync
sync
umount ${DRIVE}p1
time tar -xf ${ROOTFS_PARTITION} -C tmp_rootfs
sync
sync
umount ${DRIVE}p2
总结:
通过分析这个烧写脚本,可以看到,bbb的烧写就是对以下几步
1. 首先要先启动一个linux,同过ftp或sd卡
2. 通过ftp或sd卡得到需要烧写的文件
3. 对emmc分区
4. mount emmc分区,并解压烧些文件到emmc的分区即可
bbb 烧写脚本分析相关推荐
- 【KV260】K26 SOM烧写脚本
K26 SOM烧写脚本 一.概述 二.具体操作 1.下载压缩包 2.指定vitis的安装目录 3.参考日志 一.概述 除了红色带风扇的KV260开发套件,还有一种如图所示的K26 SOM板.而全新的K ...
- Banana Pi BPI-M2U不能烧写原因分析
本文主要解决问题: 安装LiveSuit后, 按住Banana PI BPI-M2U升级仍然不能进入烧写模式: $lsusb 其中错误信息为: "1f3a:efe8 Onda (unve ...
- 嵌入式系统 - Nand Flash 烧写问题排查
问题背景 板卡:SOM-TL437x-A1 事件:生产了 410 PCS 需要测试.烧写系统,部分板卡烧写出货系统异常. 现象:其中 78 PCS 由于 BTB 问题未测试.332 PCS 功能测试后 ...
- 嵌入式Linux学习笔记—fastboot烧写Android
本系列为本人在自学过程中的学习笔记,如有错误欢迎大家指正. 学习资料为讯为ITOP4412开发板. fastboot烧写Android 1.主要工具 OTG 接口烧写方式也叫 fastboot 烧写方 ...
- 系统烧写方法(MfgTool烧写工具)
目录 MfgTool 工具简介 MfgTool 工作原理简介 USB接线 系统烧写原理 烧写NXP 官方系统 烧写自制的系统 系统烧写 网络开机自启动设置 改造我们自己的烧写工具 改造MfgTool ...
- 将MfgTool工具改造为自己的烧写工具
以前通过MfgTool工具烧写,都是讲自己的文件名改成和官方要求的烧写文件名.这样虽然能烧写,但是终于不是真正意义上自己的烧写. 那么能不能将MfgTool工具改造为烧写自己的文件名呢?当然是可以的, ...
- Linux学习笔记---使用MfgTool工具烧写自己的系统(二)
目录 准备文件 重命名文件 替换firmware文件夹中的文件 替换files文件夹中的文件 修改cfg.ini配置文件 烧写系统 启动系统 设置网络相关环境变量 设置环境变量bootcmd 和 bo ...
- Linux学习笔记---使用MfgTool工具烧写官方系统(一)
目录 MfgTool工具简单介绍 软件烧写原理分析 1 .firmeare 文件夹 2 .files 文件夹 3 .ucl2.xml 文件 烧写步骤 1.连接USB线 2.开发板设置为USB模式 3. ...
- 使用MfgTool工具进行系统烧写
简介 MfgTool 工具是 NXP 提供的专门用于给 I.MX 系列 CPU 烧写系统的软件,可以在 NXP 官网下载到此软件在 Windows 下使用,对于我们来说太友好了. 工具准备 目前使用的 ...
最新文章
- web安全之windows系统基础
- nexus搭建和迁移
- 中企ITIL需软落地
- SharePoint 2013 搭建负载均衡(NLB)详解
- mt4 指标 涨跌幅 颜色k线_通达信精选指标——彩色K线指标
- 京东抽奖项目开发笔记
- php分布式缓存系统 Memcached 入门
- python求最大公因数函数_面试试讲 | 17学员音频示范《最大公约数》+教案+试讲稿...
- OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建
- 探索解析微服务下的RabbitMQ
- MapXtreme 2005 学习心得 了解新建MapXtreme项目结构(二)
- 支付宝出征世界杯!白岩松:“中国除了足球队没去,其他都去了”
- java开发接口文档_java之接口文档规范
- 域名注册处更改dns服务器,怎么修改DNS服务器_为什么要修改DNS服务器
- vba字典的key属性、item属性和keys方法、items方法、add方法
- Fedora 30 将默认启用 DNF-best 模式
- java填空题_JAVA填空题复习(有答案).doc
- “微笑妹妹”9岁撑起一个家
- Vue全家桶学习笔记:Vue Router篇
- 想要搭建个人博客?我调研了 100 来个 Java 开源博客系统,发现这 5 个最好用!......
热门文章
- 软件测试个人心得总结
- linux(ubuntu)给vmware中的windows虚拟机共享磁盘
- 对Linux课程内容的建议,Linux课程笔记 Day01 课程内容总结(示例代码)
- 计算机软件总体上分为,山大2017春季班期末考试 信息系统B
- oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
- 动态规划之力扣股票类问题
- 24 | 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?
- pads导出坐标文件html,【教程】PADS如何导出SMT贴片机用的坐标文件
- 1065. 单身狗(25)
- linux使用root操作文件,以root用户登录Linux系统,当前目录是/root,要求完成如下操作和功...