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 烧写脚本分析相关推荐

  1. 【KV260】K26 SOM烧写脚本

    K26 SOM烧写脚本 一.概述 二.具体操作 1.下载压缩包 2.指定vitis的安装目录 3.参考日志 一.概述 除了红色带风扇的KV260开发套件,还有一种如图所示的K26 SOM板.而全新的K ...

  2. Banana Pi BPI-M2U不能烧写原因分析

    本文主要解决问题: 安装LiveSuit后, 按住Banana PI BPI-M2U升级仍然不能进入烧写模式: $lsusb 其中错误信息为:   "1f3a:efe8 Onda (unve ...

  3. 嵌入式系统 - Nand Flash 烧写问题排查

    问题背景 板卡:SOM-TL437x-A1 事件:生产了 410 PCS 需要测试.烧写系统,部分板卡烧写出货系统异常. 现象:其中 78 PCS 由于 BTB 问题未测试.332 PCS 功能测试后 ...

  4. 嵌入式Linux学习笔记—fastboot烧写Android

    本系列为本人在自学过程中的学习笔记,如有错误欢迎大家指正. 学习资料为讯为ITOP4412开发板. fastboot烧写Android 1.主要工具 OTG 接口烧写方式也叫 fastboot 烧写方 ...

  5. 系统烧写方法(MfgTool烧写工具)

    目录 MfgTool 工具简介 MfgTool 工作原理简介 USB接线 系统烧写原理 烧写NXP 官方系统 烧写自制的系统 系统烧写 网络开机自启动设置 改造我们自己的烧写工具 改造MfgTool ...

  6. 将MfgTool工具改造为自己的烧写工具

    以前通过MfgTool工具烧写,都是讲自己的文件名改成和官方要求的烧写文件名.这样虽然能烧写,但是终于不是真正意义上自己的烧写. 那么能不能将MfgTool工具改造为烧写自己的文件名呢?当然是可以的, ...

  7. Linux学习笔记---使用MfgTool工具烧写自己的系统(二)

    目录 准备文件 重命名文件 替换firmware文件夹中的文件 替换files文件夹中的文件 修改cfg.ini配置文件 烧写系统 启动系统 设置网络相关环境变量 设置环境变量bootcmd 和 bo ...

  8. Linux学习笔记---使用MfgTool工具烧写官方系统(一)

    目录 MfgTool工具简单介绍 软件烧写原理分析 1 .firmeare 文件夹 2 .files 文件夹 3 .ucl2.xml 文件 烧写步骤 1.连接USB线 2.开发板设置为USB模式 3. ...

  9. 使用MfgTool工具进行系统烧写

    简介 MfgTool 工具是 NXP 提供的专门用于给 I.MX 系列 CPU 烧写系统的软件,可以在 NXP 官网下载到此软件在 Windows 下使用,对于我们来说太友好了. 工具准备 目前使用的 ...

最新文章

  1. web安全之windows系统基础
  2. nexus搭建和迁移
  3. 中企ITIL需软落地
  4. SharePoint 2013 搭建负载均衡(NLB)详解
  5. mt4 指标 涨跌幅 颜色k线_通达信精选指标——彩色K线指标
  6. 京东抽奖项目开发笔记
  7. php分布式缓存系统 Memcached 入门
  8. python求最大公因数函数_面试试讲 | 17学员音频示范《最大公约数》+教案+试讲稿...
  9. OpenCV3.4.3+Qt5.9.4(QtCreator)开发环境搭建
  10. 探索解析微服务下的RabbitMQ
  11. MapXtreme 2005 学习心得 了解新建MapXtreme项目结构(二)
  12. 支付宝出征世界杯!白岩松:“中国除了足球队没去,其他都去了”
  13. java开发接口文档_java之接口文档规范
  14. 域名注册处更改dns服务器,怎么修改DNS服务器_为什么要修改DNS服务器
  15. vba字典的key属性、item属性和keys方法、items方法、add方法
  16. Fedora 30 将默认启用 DNF-best 模式
  17. java填空题_JAVA填空题复习(有答案).doc
  18. “微笑妹妹”9岁撑起一个家
  19. Vue全家桶学习笔记:Vue Router篇
  20. 想要搭建个人博客?我调研了 100 来个 Java 开源博客系统,发现这 5 个最好用!......

热门文章

  1. 软件测试个人心得总结
  2. linux(ubuntu)给vmware中的windows虚拟机共享磁盘
  3. 对Linux课程内容的建议,Linux课程笔记 Day01 课程内容总结(示例代码)
  4. 计算机软件总体上分为,山大2017春季班期末考试 信息系统B
  5. oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
  6. 动态规划之力扣股票类问题
  7. 24 | 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?
  8. pads导出坐标文件html,【教程】PADS如何导出SMT贴片机用的坐标文件
  9. 1065. 单身狗(25)
  10. linux使用root操作文件,以root用户登录Linux系统,当前目录是/root,要求完成如下操作和功...