i.MXU6LL - 制作烧录SD卡详细步骤

2023-11-04

i.MXU6LL - 制作烧录SD卡详细步骤



本文所有操作均在root模式下进行!

本篇博客步骤主要参考NXP官方的手册《i.MX_Linux_Users_Guide.pdf》的这一章节:


1、SD卡分区

提示:我们常用的SD卡一个扇区的大小是512字节。

先说一下i.MX6ULL使用SD卡启动时的分区情况,NXP官方给的镜像布局结构如下所示:

可以看到,上图将一张SD卡分成了三部分:

  • 第一部分:扇区起始地址2,大小为20478个扇区,分区格式为原始格式,用于存放uboot;
  • 第二部分:扇区起始地址20480,大小为1024000个扇区,分区格式为FAT,用于存放内核和设备树;
  • 第三部分:扇区起始地址1228800,大小为SD卡剩余的空间,分区格式为Ext3或Ext4,用于存放rootfs,也就是文件系统。

第一部分用于存放UBOOT,无文件系统格式的要求,所以我们对分区的创建从第二部分开始就可以。

有了以上分区布局后,我们就可以对SD进行分区了。


拿到一张SD卡,首先将SD卡在windows下格式化成FAT32格式:

插入ubuntu系统之前,先使用以下命令查看一下所有的磁盘:

fdisk -l

将SD卡插入ubuntu,再次输入以上命令查看一下所有磁盘,会发现多出来一个/dev/sdb和/dev/sdb1:

其中,/dev/sdb代表的就是SD卡本身,/dev/sdb1代表的是SD卡上的分区一,且格式为FAT32。

注意:SD卡插入ubuntu后,会出现/dev/sdX,具体是/dev/sdb还是/dev/sdc又或者是/dev/sdd要视个人插入ubuntu的USB口设备情况而定。

接下来对SD卡重新分区:

fdisk /dev/sdb

依次输入:

d         ---> 删除分区
n         ---> 创建分区 
p         ---> 选择为主分区
1         ---> 分区编号为1
20480     ---> 分区1起始扇区
+500M     ---> 分区大小:500MB
p         ---> 显示当前分区
n         ---> 创建分区
p         ---> 选择为主分区
2         ---> 分区编号为2
1044480   ---> 分区起始地址
<enter>   ---> 敲回车,表示将剩下的所有空间都分给分区2
p         ---> 显示当前分区
w         ---> 保存

如下图所示:


设置sdb1分区格式为FAT:

sudo mkfs.vfat /dev/sdb1

设置sdb2分区格式为Ext3或Ext4都可以:

sudo mkfs.ext3 /dev/sdb2

sudo mkfs.ext4 /dev/sdb2

如下图:

此时SD卡的分布如下图所示:


2、拷贝uboot到SD卡

拷贝uboot到SD卡,输入以下命令:

sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync

从上面我们对SD卡分区的时候知道,第一分区的起始地址是从扇区地址2开始的,SD卡的一个扇区是512字节,也就是说第一分区的起始地址是SD卡的1K字节处,上面这条命令中,bs设置dd命令的读写块为1K大小,并且设置seek=1,表示从/dev/sdb开头的1K字节处开始写u-boot.imx,正好就是写到了u-boot在SD卡中所在的位置处。

问:为什么从SD卡1K位置处存放uboot而不是从SD卡头部开始?
答:这是NXP官方规定的,照做就是了。

dd命令可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。详细命令解释参见:https://www.runoob.com/linux/linux-comm-dd.html

  • if=文件名:输入文件名,默认为标准输入。即指定源文件。
  • of=文件名:输出文件名,默认为标准输出。即指定目的文件。
  • bs=bytes:同时设置读入/输出的块大小为bytes个字节。
  • seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
  • conv=<关键字>,关键字可以有以下11种:
    • conversion:用指定的参数转换文件。
    • ascii:转换ebcdic为ascii
    • ebcdic:转换ascii为ebcdic
    • ibm:转换ascii为alternate ebcdic
    • block:把每一行转换为长度为cbs,不足部分用空格填充
    • unblock:使每一行的长度都为cbs,不足部分用空格填充
    • lcase:把大写字符转换为小写字符
    • ucase:把小写字符转换为大写字符
    • swap:交换输入的每对字节
    • noerror:出错时不停止
    • notrunc:不截短输出文件
    • sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

3、拷贝kernel和dtbs到SD卡

创建挂载点:

mkdir /mountpoint

挂载分区一:

mount /dev/sdb1 /mountpoint

使用cp命令将zImage和*.dtb文件拷贝进/mountpoint目录,然后取消挂载:

umount mountpoint

4、拷贝文件系统到SD卡

挂载分区二:

mount /dev/sdb2 /mountpoint

解包你的文件系统,假设文件系统包为:rootfs.tar.bz2

tar -jxvf rootfs.tar.bz2

进入文件系统目录:

cd rootfs

拷贝所有文件到/mountpoint目录:

cp -a * /mountpoint

然后取消挂载:

umount mountpoint
sync

到此,SD启动卡就已经制作完成!


ends…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

i.MXU6LL - 制作烧录SD卡详细步骤 的相关文章

  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • Rabbitmq 忽略 Ubuntu 12 上的配置

    I have rabbitmq server从系统包安装乌班图12 无论我做什么 它似乎都会忽略任何配置文件 网络上的所有内容都表明服务器正在寻找 etc rabbitmq rabbitmq conf 但即使我创建该文件 服务器也报告没有配
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • systemd 错误“无法启动服务:单元服务未正确加载:exec 格式错误”

    我可以执行准确的ExecStart来自 shell 的命令并且它可以工作 但是由于某种原因在此服务文件中这不起作用 有什么想法吗 error Failed to start previewapi service Unit previewap
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • Ubuntu 中的颜色选择器实用程序(颜色移液器)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 shell 脚本将行附加到 /etc/hosts 文件

    我有一个新的 Ubuntu 12 04 VPS 我正在尝试编写一个安装脚本来完成整个 LAMP 安装 我遇到问题的地方是在 etc hosts文件 我当前的主机文件如下所示 127 0 0 1 localhost Venus The fol
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags

随机推荐

  • 无网络环境,如何部署Docker镜像

    一 简介 无网络环境 部署 Docker 镜像 这通常适用于一些部署环境是脱离网络的公司 或者公司内部有着严格的网络安全要求 且还是 Docker 部署的程序 这个时候怎么办 别急今天就来讲讲 无网络环境 如何部署 Docker 镜像 二
  • awk命令的使用

    1 获取根分区剩余大小 先用df h命令查看磁盘 确定我们需要获取字段的位置 再使用awk命令获取此字段 df h df h awk NR 6 print 4 2 获取当前机器ip地址 ifconfig awk NR 2 print 2 3
  • 终止for循环的方式

    continue break return 1 continue 当程序运行到 continue 语句时 会终止当前的这一次循环 进入下一次的循环中 它 适用于所有的循环结构 for int i 0 i lt 10 i 执行内容 conti
  • stm32F103C8T6 keil5编译完成使用XCOM进行串口打印时乱码

    一 检查波特率 串口调试工具和main c的串口初始化一定要相同 二 检查编码格式 第一步 点击keil5的小扳手图标 修改为Chinese GB2312 Simplified 这样一来 代码的中文就可以显示出来啦 第二步 XCOM这款串口
  • 安装Visio 2013与原本的office冲突的最终解决方案

    一 下载office visio 2013 二 开始安装 但是提示卸载原本的office 三 网上找寻答案 于是按照这篇文章https jingyan baidu com article 19192ad8c1d6dae53e570735 h
  • HashMap常用API及注意事项

    map clear map size map isEmpty map containsKey 判断 map containsValue map get key map put key value map putAll otherMap ma
  • ubuntu18.04安装cmake3.18.0

    ubuntu18 04安装cmake3 18 0 1 本方法可适用安装任何版本的cmake 可以在官网中找到需要的版本 本文以3 18 0为例 https cmake org files 2 wget https cmake org fil
  • Javaweb和微信小程序项目部署阿里云服务器总结(上)

    谈到微信小程序的java后台怎么部署在阿里云服务器上的问题 弯弯绕绕 好多坑 网上的博客资料也特别乱 博主也是在没有任何经验和指导下花了几天的工夫才完成的 这里为了方便大家不踩坑 总结了下整个流程和注意事项 由于篇幅原因 只讲重点的地方 所
  • 软件测试(3)——白盒测试

    文章目录 白盒测试 白盒测试方法 静态测试 人工代码检查 软件度量 其它方法 动态测试 覆盖测试分析 运行时错误检测 覆盖测试 逻辑覆盖方法 路径测试 数据流测试 白盒测试 白盒测试也称结构性测试 逻辑驱动测试 基于程序的测试 特点 将程序
  • Android App开机自启动

    最近项目中 有用到开机自启动的功能 这里做一下总结 供大家学习探讨 Android 开机启动延迟问题 Android 开机自启动被拦截问题 实战演练 测试手机 红米手机 Redmi 6A 安卓version 9 华为手机 DUA AL00
  • vs2010 vs2013等vs中如何统计整个项目的代码行数

    vs2010 vs2013等vs中如何统计整个项目的代码行数 在一个大工程中有很多的源文件和头文件 我如何快速统计总行数 解决方案 b b b b ctrl shift F 查找选项选 正则表达式 具体步骤 1 鼠标停靠在你的项目解决方案附
  • ERRORS: auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups‘ clashes with reverse acce

    写博客网站后台 设计数据库结构时 博客 Article 表中定义了一个作者外键 author models ForeignKey settings AUTH USER MODEL verbose name 作者 这个外键是网站注册用户 这样
  • Oracle数据库获取uuid函数

    Oracle新建系统表时 要求主键为32位uuid 猜测Oracle肯定会提供相关的函数 翻阅相关文档 果然发现Oracle提供的函数 sys guid 用于获取32位uuid 简单使用为 select sys guid from dual
  • 【Linux内核中的并发控制】- 自旋锁

    在内核中会经常看到spin lock 自旋锁 它到底是个神马东西 在驱动相关的书籍和论坛中查阅了不少资料 看的也是云里雾里 现在将知识罗列总结一下 便于日后回顾 1 自旋锁定义 在Linux内核并发控制中最常见的锁就是自旋锁 自旋锁最多只能
  • POJ 1302 Blue Gene, Jr.(递归实现)

    Inspired by IBM s Blue Gene project the CEO of Universal Biological Machinery UBM has called on you UBM s top software e
  • Intellij IDEA 报错java.lang.NoClassDefFoundError

    Intellij IDEA 报错java lang NoClassDefFoundError Intellij IDEA 报错java lang NoClassDefFoundError 11 Aug 2018 23 48 24 686 严
  • MQTT通信协议的简介、特点及实现原理 - 第1章

    目录 1 1 MQTT 特点 1 2 MQTT实现原理 1 3 术语 相关链接 MQTT是一种基于 发布 订阅 模式的 轻量级 通信协议 由IBM于1999年发布 MQTT专门针对 物联网设备 开发 是一种 低开销 低带宽占用的即时通讯协议
  • python之异常、异常的捕获、else、finally、主动抛出异常raise

    注意 当一个函数的返回值是一个布尔值的时候 如果把这个函数做为条件放到 if 或者while后面的时候 后面不用再写 True 也就是说 此时的 if 函数名 等价于 if 函数名 True 如果函数返回True 则原式就等于if True
  • AttributeError: ‘open3d.open3d.geometry.PointCloud‘ object has no attribute ‘select_by_index‘

    如果你调用时的方式是 pcd select by index ind 但是你这样却报了 AttributeError open3d open3d geometry PointCloud object has no attribute sel
  • i.MXU6LL - 制作烧录SD卡详细步骤

    i MXU6LL 制作烧录SD卡详细步骤 目录 i MXU6LL 制作烧录SD卡详细步骤 1 SD卡分区 2 拷贝uboot到SD卡 3 拷贝kernel和dtbs到SD卡 4 拷贝文件系统到SD卡 本文所有操作均在root模式下进行 本篇