Ubuntu18.04烧录U

您所在的位置:网站首页 BLOCK17 Ubuntu18.04烧录U

Ubuntu18.04烧录U

#Ubuntu18.04烧录U| 来源: 网络整理| 查看: 265

Ubuntu18.04烧录U-Boot时格式化SD卡的文件类型 前言1、问题的提出2、分析问题3、用dd命令格式化SD卡dd命令:参数: 4、SD卡的烧录5、再谈SD卡的分区

前言

本文只讨论U-Boot的烧录问题,也就是说,假定已经make生成bl1.bin——即BL1镜像、bl2.bin——BL2镜像、u-boot.bin——uboot镜像。也不讨论内核的移植。 结论是:Ubuntu18.04烧录U-Boot时格式化SD卡,是RAW 格式的无名分区。无名分区在Windows 和 Linux 操作系统下均不可见,存放的是 u-boot.ais。1

1、问题的提出

在烧录U-boot之前,要对SD卡进行格式化。但是,这个格式化并不能用fdisk进行分区、再用mkfs对分区格式化文件类型。

2、分析问题

BL1(第一引导加载程序)是从SD卡的 512B 的偏移量处开始烧录,BL2是从SD卡的Block17处开始烧录。如下图:2

BL1镜像从512B的位置开始写入 但是,fdisk是从第2048个扇区开始第一个分区,明显与BL1的位置是不同的。所以,烧录U-Boot是不能用fdisk对SD卡分区的。那么,也就不能用mkfs对分区写入文件系统,也就不能用mount挂载SD卡。 只能用dd命令来格式化。

3、用dd命令格式化SD卡 dd命令:

用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。3

dd if=/dev/zero of=/dev/sdb bs=1024 count=102400 参数: if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节。4M一般没有问题。count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

这里,我理解是1个bs有1k字节,共有count=102400个bs。也就是说,给1k*100k个字节写入zero。

4、SD卡的烧录 首先,用fdisk -l查看是否能够识别SD卡。每个人的分区情况会不一样,一般/dev/sda是主硬盘。 /dev/sdb、 /dev/sdc、 /dev/sdd都有可能是SD卡,可以根据容量大小来判断。假定 /dev/sdb是SD卡,那么执行脚本烧写一定是对 /dev/sdb进行烧写。 sudo fdisk -l | grep sd Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区 /dev/sda1 * 2048 41940991 41938944 20G 83 Linux Disk /dev/sdb:967.5 MiB,1014497280 字节,1981440 个扇区

此时,/dev/sdb是不能用mount挂载到/mnt下的。这是因为文件系统错误。

sudo mount /dev/sdb /mnt mount: /mnt: can't read superblock on /dev/sdb. 在~/u-boot-2022.01-rc4-cbt4412/sd_fuse/tiny4412文件夹下,有sd_fusing.sh脚本可以烧写U-boot。脚本内容如下: # # Copyright (C) 2011 Samsung Electronics Co., Ltd. # http://www.samsung.com/ # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. # #################################### if [ -z $1 ] then echo "usage: ./sd_fusing.sh


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3