imx6ull - 制作烧录SD卡
1、参考NXP官方的手册《i.MX_Linux_Users_Guide.pdf》的这一章节:

1、SD卡分区
提示:我们常用的SD卡一个扇区的大小是512字节。
先说一下i.MX6ULL使用SD卡启动时的分区情况,NXP官方给的镜像布局结构如下所示:

可以看到,上图将一张SD卡分成了三部分:
第一部分:扇区起始地址ox400bytes(2),大小为20478个扇区,分区格式为原始格式,用于存放uboot;(0x400 bytes转为10进制是1024 bytes, 刚好等于2个扇区大小;这两个扇区是为了保存分区表的信息。所以从0x400地址开始存放U-boot,括号中的2可以理解为从第2个扇区的起始地址开始,扇区编号从0开始数起)
第二部分:扇区起始地址oxa0000 bytes(20480个扇区),大小为500M(1024000个扇区),分区格式为FAT,用于存放内核和设备树;
第三部分:扇区起始地址ox25800000(1228800个扇区),大小为SD卡剩余的空间,分区格式为Ext3或Ext4,用于存放rootfs,也就是文件系统。
由于第一部分用于存放UBOOT,无文件系统格式的要求,所以我们对分区的创建从第二部分(第20480扇区所在的地址)开始就可以。
拿到一张SD卡,首先将SD卡在windows下格式化成FAT32格式:

插入ubuntu系统之前,先使用以下命令查看一下所有的磁盘:
fdisk -l
将SD卡插入ubuntu,再次输入以上命令查看一下所有磁盘,会发现多出来一个/dev/sdb设备:

其中,/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
1228800 ---> 分区起始地址
<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卡分区的时候知道,uboot需要从第0分区的扇区地址2开始的,SD卡中一个扇区占512字节,SD卡偏移1K字节处开始保存uboot。上面这条命令中,bs设置dd命令的读写块为1K大小(这个数据可以任意设置,设置大一点读写就快),并且设置seek=1(单位为KB),表示从SD卡/dev/sdb开头偏移1K字节处开始写u-boot.imx,正好就是写到了u-boot在SD卡中0区所在位置处,前面预留1K字节刚好2个扇区大小保存分区表信息。
问:为什么从SD卡1K位置处存放uboot而不是从SD卡头部开始?
答:这是NXP官方手册上写前面1K字节是保存分区表的信息。

3、拷贝kernel和dtbs到SD卡
创建挂载点:
mkdir /mountpoint
挂载分区一:
mount /dev/sdb1 /mountpoint (注意根据上面的分区这是sdb1,存放kernal image和dtbs)
使用cp命令将zImage和*.dtb文件拷贝进/mountpoint目录,然后取消挂载:
umount mountpoint

4、拷贝文件系统到SD卡
挂载分区二:
mount /dev/sdb2 /mountpoint (注意根据上面的分区这是sdb2,存放根文件系统)
解包你的文件系统,假设文件系统包为:rootfs.tar.bz2
mkdir rootfs
tar -jxvf rootfs.tar.bz2 -C rootfs/
进入文件系统目录:
cd rootfs
拷贝所有文件到/mountpoint目录:
cp -a * /mountpoint
然后取消挂载:
umount mountpoint
sync
到此,SD启动卡就已经制作完成!
1. 官方资料和工具获取
1.1 官方源码资料
Embedded Linux for i.MX Applications Processors是NXP专门针对i.MX系列维护的uboot和linux等源码,有不同的版本和分支。截至文章发布官方最新版本Linux 5.15.52_2.1.0,为了和之前的iMX6ULL维护一份代码我这里选择Linux 5.15.32_2.0.0这个版本。下载文档资料和官方demo板的镜像包,可以参考使用。

更加详细资料获取方法请参考:iMX8MM uboot2021.04 linux5.15.32移植_arm_Sonboy(^_^)-华为云开发者联盟
参考:i.MXU6LL - 制作烧录SD卡详细步骤_imx6ullsd卡烧录程序-CSDN博客
相关文章:
imx6ull - 制作烧录SD卡
1、参考NXP官方的手册《i.MX_Linux_Users_Guide.pdf》的这一章节: 1、SD卡分区 提示:我们常用的SD卡一个扇区的大小是512字节。 先说一下i.MX6ULL使用SD卡启动时的分区情况,NXP官方给的镜像布局结构如下所示: 可以看到,…...
使用chatgpt api快速分析pdf
需求背景 搞材料的兄弟经常要分析pdf,然后看到国外有产品是专门调用chatpdf来分析pdf的,所以就来问我能不能帮他也做一个出来。正好我有chatgpt的api,所以就研究了一下这玩意怎么弄。 需求分析 由于chatgpt是按字符算钱的,所以…...
Vue:状态管理pinia
安装 npm install pinia在 main.js 中注册 // main.jsimport { createApp } from vue import { createPinia } from "pinia"; import App from ./app.vueconst app createApp(App) const pinia createPinia(); app.use(pinia).mount(#app)创建 store // stores/…...
【Android Studio】导入import android.support.v7.app.AppcompatActivity;时报错
一、问题描述 在进行安卓项目开发时使用import android.support.v7.app.AppcompatActivity;报错: 运行后会有乱码出现: 二、解决办法 将import android.support.v7.app.AppcompatActivity;改为import androidx.appcompat.app.AppCompatActivity;基本上…...
汽车区域控制器技术分析
汽车区域控制器的起源与发展 随着汽车技术的不断发展,汽车电子电气架构也在经历着深刻的变革。汽车区域控制器作为一种新兴的技术,正逐渐成为汽车电子电气架构的重要组成部分。 在早期,汽车电子电气架构主要采用分布式架构。这种架构下,各个电子控制单元(ECU)分别负责不…...
myEclipse新手使用教程
myEclipse新手使用教程 一、引言 myEclipse是一款流行的Java集成开发环境(IDE),它集成了众多的开发工具,为Java开发者提供了一个强大的开发平台。本文将详细介绍如何下载、安装和配置myEclipse,以及如何创建一个简单…...
【WPF编程宝典】第6讲:资源
研究了 WPF 资源系统使得在应用不同部分可以重用相同对象的原理,介绍了如何在代 码和标记中声明资源,如何提取系统资源,以及如何使用类库程序集在应用程序之间共享资源。 1.资源基础 1.1静态资源和动态资源 区别:静态资源只从资…...
容器化部署Pig微服务快速开发框架
系统说明 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台, 同时支持微服务架构和单体架构 提供对 Spring Authorization Server 生产级实践,支持多种安全授权模式 提供对常见容器化方案支持 Kubernetes、Rancher2 、Kubesphere、E…...
Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图
承接前文: win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列win32-鼠标消息、键盘消息、计时器消息、菜单资源 本文目录 图标资源光标资源WM_SETCURSOR 消息 字符串资源加速键资源WM_PAINT 消息绘图绘图编程绘图基础基…...
【2024 短剧0元轻资产创业风口】做自己的老板,做新媒体的领路人
好省短剧邀请码2Urux1ZoQm(长按复制粘贴即可)大多数好省短剧推广活动都会通过官方渠道发布邀请码。您可以通过关注官方社交媒体账号、订阅电子邮件通知或参与官方网站上的活动,获得邀请码的机会。官方渠道通常会提前公布邀请码的获取方式和条件,您只需按照要求执行即可。好省…...
Docker安装Bitbucket
centos7版本 [rootlocalhost ~]# cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLOR"0;31"…...
FlyMcu串口下载STLINK Utility
一、FlyMcu程序烧录软件 1、可以通过串口给STM32下载程序,如果没有STLINK,就可以用这个软件通过串口下载程序,和STC的51单片机的烧录软件STC-ISP一样,通过串口给单片机下载程序 2、创建串口下载所需要的HEX文件 3、选择串口和波…...
CSS(盒子模型,定位,浮动,扩展)
CSS 盒子模型:外边距:内边距:水平居中: 定位:相对定位:绝对定位:固定定位: 浮动:扩展: 盒子模型: 盒子模型(Box Model) 规定了元素框处理元素内容…...
AIGC如何改变人类生活20240529
AIGC如何改变人类生活 随着人工智能技术的不断发展,人类生活正经历着前所未有的变革。在这个过程中,AIGC(人工智能生成内容)的概念应运而生,它已经在很多领域产生了深远的影响。本文将探讨AIGC如何改变人类生活&#…...
【python】成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南
成功解决“TypeError: ‘method’ object is not subscriptable”错误的全面指南 一、引言 在Python编程中,TypeError: method object is not subscriptable错误是一个常见的陷阱,特别是对于初学者来说。这个错误通常意味着你尝试像访问列表、元组、字典…...
若依 Spring Security 短信,扫码登录
1. 修改 LoginBody,添加登录类型字段 Data public class LoginBody {/*** 用户名*/private String username;/*** 用户密码*/private String password;/*** 验证码*/private String code;/*** 唯一标识*/private String uuid;/*** 登录类型*/private String logi…...
Web 网页性能优化
Web 网页性能及性能优化 一、Web 性能 Web 性能是 Web 开发的一个重要方面,侧重于网页加载速度以及对用户输入的响应速度 通过优化网站来改善性能,可以在为用户提供更好的体验 网页性能既广泛又非常深入 1. 为什么性能这么重要? 1. 性能…...
JDBC-MySQL
JDBC-MySQL 1.JDBC 操作步骤1.1 DriverManager1.2.Connection对象1.3 Statement1.4 PreparedStatement 1.JDBC 操作步骤 public void quickStart() throws ClassNotFoundException, SQLException {//1、注册驱动 (确认要使用哪个数据库)Class.forName(&…...
MySQL经典练习50题(上)(解析版)
所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验(无广告且清爽),请访问本篇笔记 MySQL经典练习50题(上) 创建数据库和表 -- 建 表 -- 学 生 表 CREATE TABLE Student( s_id VARCHAR(20), s_name VARCHAR(2…...
每日一题33:数据统计之广告效果
一、每日一题 返回结果示例如下: 示例 1: 输入: Ads 表: ------------------------- | ad_id | user_id | action | ------------------------- | 1 | 1 | Clicked | | 2 | 2 | Clicked | | 3 | 3 | Viewed…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
