ZYNQ产品生产拷机问题思考

2023-11-04

目前设计的ZYNQ产品支持QSPIFLASH、SDka\EMMC启动,主要启动方式主要有以下几种:
  1. 全部启动文件存放在QSPIFLASH,ZYNQ支持的QSPIFLASH为16MB大小,如果UBOOT,内核,设备树,文件系统全部存放在QSPIFLASH中,再加上业务程序,存储将会非常紧张,此方案不可行。
  2. 全部启动文件存放在SD卡中,这种方式可行,但从稳定性和安全性方面考虑,产品大规模生产时不宜将SD卡作为启动存储设备。
  3. 全部启动文件存放在EMMC芯片中,这种方法表面可行,但有以下弊端:生产部门大规模生产时,如何将uboot,内核,文件系统等启动文件烧写到emmc中?首先要将芯片配置为SPI启动,通过烧写器将uboot烧写到spiflash中,通过QSPIFLASH启动uboot,再在uboot下通过tftpboot的启动方式加载内核文件系统。最后在linux下将内核,文件系统等启动文件烧写到EMMC芯片中,再修改芯片启动方式为EMMC启动。完成一块单板的调试要修改两次硬件配置,不太现实而且容易出错。
  4. 目前最靠谱的方法时,将uboot在生产前通过烧写器烧写到QSPIFLASH中,配置ZYNQ为SPI启动方式,从SPIFLASH启动uboot之后,通过TFTPBOOT方式运行加载内核和文件系统并运行,在linux下对emmc进行分区,格式化,并将内核,文件系统,设备树等启动文件放到对应分区。这种方法目前来看时最靠谱的。

Linux下对EMMC进行分区

一 使用linux下的磁盘管理工具fdisk
sudo fdisk /dev/sdc
使用fdisk打开你的SD卡设备名称,我的sd卡设备名称是sdc
二进入fdisk管理工具
打开后进入如下界面
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help):
我们只需要使用到fdisk的的几个主要命令
m:使用帮助
n: 创建一个分区
d: 删除一个分区
p:打印分区信息
t:修改分区ID,通过修改ID我们可以改变分区格式,例如windows的fat32格式id为6和linux下ext3格式id为83
w:保存分区信息并退出

三:创建分区
1,打印显示已有分区
输入p
Command (m for help): p

Disk /dev/sdc: 1967 MB, 1967128576 bytes
57 heads, 56 sectors/track, 1203 cylinders
Units = cylinders of 3192 * 512 = 1634304 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdc1 1 23 36680 83 Linux
/dev/sdc2 24 34 17556 83 Linux

2,删除已有分区
输入d之后选择分区编号
Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Selected partition 2

3,新建分区
3.1建立主分区
输入n
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p

Partition number (1-4): 1
First cylinder (1-1203, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-1203, default 1203): 23
输入n后选择p建立一个主分区,选择分区编号为1,分区起始柱面位置(first cylinder)选择1,末端位置(last cylinder)选择23

3.2建立扩展分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (24-1203, default 24):
Using default value 24
Last cylinder, +cylinders or +size{K,M,G} (24-1203, default 1203):
Using default value 1203
输入n后选择e建立一个扩展分区,选择编号2,起始位置和末端选择默认的24~1023

3.3建立逻辑分区
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (24-1203, default 24):
Using default value 24
Last cylinder, +cylinders or +size{K,M,G} (24-1203, default 1203): 43
输入n后选择l建立一个逻辑分区,选选择起始和末端位置为24~43

建立第二个逻辑分区
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (44-1203, default 44):
Using default value 44
Last cylinder, +cylinders or +size{K,M,G} (44-1203, default 1203):
Using default value 1203

三修改分区ID
输入t
Command (m for help): t
Partition number (1-6): 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)
选择编号为1的分区,这里我将id设为6(FAT16格式,ext32格式的id为83)
同理修改其他分区的id

四,保存退出
Command (m for help): p

Disk /dev/sdb: 1967 MB, 1967128576 bytes
57 heads, 56 sectors/track, 1203 cylinders
Units = cylinders of 3192 * 512 = 1634304 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 1 23 36680 6 FAT16
/dev/sdb2 24 1203 1883280 5 Extended
/dev/sdb5 24 43 31892 83 Linux
/dev/sdb6 44 1203 1851332 83 Linux

这里可以看见我刚刚建立的分区
输入w
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
保存退出,之前我以为到这一步就完事来,其实不然还有下面的

四:格式化分区
在第三步之后你会发现你的sd卡丝毫反应,这是因为第三步仅仅是写入分区表信息而没有完成格式化
FAT格式分区格式化命令 mkfs.vfat /dev/sdb1
ext3格式分区的格式化命令 mkfs.ext3 /dev/sdb5
这里要注意,如果你紧接着就使用这两个命令进行格式化会提示
yang@yang-pc:~$ sudo mkfs.ext3 /dev/sdb3
mke2fs 1.41.12 (17-May-2010)
无法对 /dev/sdb3 进行 stat 调用 — 没有那个文件或目录
这是因为我们写进去的分区表还未生效,把SD卡取下,再插入就OK了,这下你可以在/dev/sd*看到你建立的分区
然后使用格式化命令分区格式化对应格式的分区,如果你SD卡原先有东西,再格式化后面加 -I 参数,覆盖掉里面的内容

五,修改分区名字
在第四步完成之后就可以看见我们刚在建立的分区被自动挂载到/media/下了。可是这些分区的名字还是一串难看的字符
因此们需要修改分区的名字也就是Label
修改ext3格式的label命令 e2label /dev/sdb labelname
修改fat格式的我目前还未找到好的方法,只能在windows下重名的方法解决

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

ZYNQ产品生产拷机问题思考 的相关文章

  • STA(静态时序分析) 详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timing violation)?

    1 什么是STA STA 静态时序分析 是时序验证的一种方法 用于计算和分析电路是否满足时序约束的要求 2 为什么需要STA 电路能否正常工作 其本质上是受最长逻辑通路 即关键路径 的限制 以及受芯片中存储器件的物理约束或工作环境的影响 为
  • PLL时钟约束

    方法 1 自动创建基时钟和 PLL 输出时钟 例 derive pll clocks 这一方法使您能够自动地约束 PLL 的输入和输出时钟 ALTPLL megafunction 中指定的 所有 PLL 参数都用于约束 PLL 的输入和输出
  • [FPGA系列] 扩展知识 --- 时钟小结

    一 基本概念 时钟域 由同一个时钟信号控制的区域 时钟抖动 Jitter 相对于理想时钟信号 实际时钟信号存在时而超前 时而之后的偏移 时钟偏斜 Skew 时钟信号到达数字电路各个部分所用时间的差异 时钟漂移 Wander 工程上解释 抖动
  • ZYNQ LINUX 下 PL中断PS记录

    最近ZYNQ的项目需要 调试了PL中断PS的部分 下面将其中了解到信息记录下来 以防遗忘 如图一 图二所示 PL到PS的中断分为16个共享中断 SPI 和4个私有中断 PPI 本文用到了共享中断 着重介绍SPI中断 图一 图二 PL 侧16
  • FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)

    目录 一 验证与门 二 验证与非门 三 验证二选一数据选择器 四 验证2 4译码器 五 验证半加器 六 验证全加器 0 初始化定义 1 第一个半加器 2 第二个半加器 3 得到最终进位Co 代码 0决定与 1决定或 一 验证与门 只要有一个
  • Verilog之assign

    Verilog中的关键词assign主要用于如下两个地方 数据流建模 用于数据流建模的显示连续赋值语句语法格式如下
  • 采用Vivado 配置xilinx GTX的SATA设计

    从Vivado开始 配置GTX的时候 多了一个SATA协议支持 但有些小地方还需要自己另外设置 整理了一下 分享给大家 首先打开Transceivers wizard 打开页签 线速率和参考时钟选择 在协议里面选择SATA2或者SATA3
  • verilog 基本语法 {}大括号的使用

    的基本使用是两个 一个是拼接 一个是复制 下面列举了几种常见用法 基本用法 表示拼接 第一位 第二位 表示复制 4 a 等同于 a a a a 所以 13 1 b1 就表示将13个1拼接起来 即13 b1111111111111 拼接语法详
  • 从零开始zynq linux AXI DMA传输

    本文从0开始叙述过程 使用的工具为vivado2016 4 sdk也是2016 4 准备工作 首先下载如下的目标文件 1 下载xilinx官方的bootloader文件 git clone https github com Xilinx u
  • 【PIPE】流水线设计中的基本模块

    大概分成以下几节 1 概述及协议 2 valid forward valid超前 3 bubble collapse 消除气爆 4 input output skid 不知中文怎么说 5 pipe halt 流水停顿 6 idle pres
  • FPGA学习笔记(一)__电平知识

    常见电平标准 文章目录 1 TTL电平标准 2 LVTTL电平标准 1 LVTTL3V3 2 LVTTL2V5 3 CMOS电平标准 4 LVCOMS电平标准 1 LVCOMS3V3 2 LVCOMS2V5 3 LVCOMS1V8 4 LV
  • 在vhdl中生成随机整数

    我需要在 vhdl 中生成 0 1023 之间的随机整数 但是我在互联网上找不到这方面的好资源 请问有人帮我吗 下面是生成范围 0 1023 内均匀 均匀 分布的整数的示例 请注意 floor必须在与最大值 1 相乘之后使用运算 在本例中为
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • VHDL 中的 BRAM_INIT

    我正在模拟基于处理器的设计 其中程序存储器内容保存在 BRAM 中 我正在使用 VHDL 推断 BRAM 实现程序存储器 我试图避免使用 CoreGen 因为我想保持设计的可移植性 最终该设计将进入 FPGA 我想看看是否有一种方法可以使用
  • verilog $readmemh 对于 50x50 像素 RGB 图像花费太多时间

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • 映射 MMIO 区域写回不起作用

    我希望对 PCIe 设备的所有读写请求都由 CPU 缓存进行缓存 然而 它并没有像我预期的那样工作 这些是我对回写 MMIO 区域的假设 对 PCIe 设备的写入仅在缓存回写时发生 TLP 有效负载的大小是缓存块大小 64B 然而 捕获的
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar

随机推荐

  • 浅谈游戏业务遭遇攻击的防护措施

    很多人不禁问DDoS攻击是什么 尤其是对刚入行的新手小白来说 对于这方面完全不懂 那么今天我们就来讲讲它是什么又会造成什么危害 该如何防御 DDoS攻击也叫分布式拒绝服务 Distributed Denial of Service 简称DD
  • Loadrunner 8.1 安装 & 卸载收藏(转载)

    Loadrunner 8 1 安装 1 下载Loadrunner8 1 官方英文版 2 安装Loadrunner8 1 3 破解 http download csdn net source 1348756 l 具体安装操作步骤如下 用虚拟光
  • 华为OD机试 - 数组拼接(Java)

    题目描述 现在有多组整数数组 需要将它们合并成一个新的数组 合并规则 从每个数组里按顺序取出固定长度的内容合并到新的数组中 取完的内容会删除掉 如果该行不足固定长度或者已经为空 则直接取出剩余部分的内容放到新的数组中 继续下一行 输入描述
  • Kali-Linux下载安装

    文章目录 下载 安装 准备 Kali Linux Live U盘安装过程 下载 1 进入kali逛网下载镜像文件kali官网 在Downloads中选择Download Kali Linux 如下图所示 2 根据电脑配置 选择适合自己的版本
  • Svg五角星、太阳花、多边形的绘制

    我们在学习平面几何中 学到了多边形的概念 有多少条边就有多少个顶点 本篇我们介绍一下如何用svg来绘制规则的多边形 比如三角形 五角星和任意多边形 在此 我们用到polygon标签
  • Blender 批量给材质

    妈咪妈咪哄 1 选中需要批量上材质的物体 2 ctrl 加选有目标材质的物体 3 复制材质至选中
  • 神经网络 AI torch 构造自己的数据集(包含标签或者不包含标签)

    AI learning 用于学习train 验证val的图片目录结构形式如下 一般为自己构造的图像数据的目录 这是一个简单的图像二分类问题 两个类别为正常 normal 或者异常 abnormal 数据集分为 train 训练集 val 验
  • 筛选(数组里竖向都为0的删除)

    let arr 0 0 0 0 0 1 5 6 0 0 0 0 0 0 0 0 3 1 5 6 0 0 0 0 0 0 0 0 0 1 5 6 0 4 0 0 0 0 1 0 0 1 5 6 0 0 3 0 0 0 0 0 2 1 5 6
  • VMware-tools安装以及找不到共享文件夹的解决办法

    VMware tools安装以及找不到共享文件夹的解决办法 一 安装VMWare tools 1 以root身份进入linux 2 点击VMWare虚拟机栏目下的安装VMwaretools选项 如果安装过该工具 这个选项会显示为重新安装或者
  • 表的内连接、外连接

    1 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选 是使用的最多的连接查询 select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件 一般的写法 select ename d
  • api接口、RPC、WebService分别解决什么问题?

    api接口 RPC WebService分别解决什么问题
  • 深度学习中的迁移学习介绍

    迁移学习 Transfer Learning 的概念早在20世纪80年代就有相关的研究 这期间的研究有的称为归纳研究 inductive transfer 知识迁移 knowledge transfer 终身学习 life long lea
  • Java中的DatagramPacket与DatagramSocket的初步

    1 基本概念 a DatagramPacket与DatagramSocket位于java net包中 b DatagramPacket表示存放数据的数据报 DatagramSocket表示接受或发送数据报的套接字 c 由这两个类所有构成的网
  • 安装GPU版本的pytorch

    前言 最近新建了一个虚拟环境 但是在跑代码的时候出现问题 libc10 cuda so cannot open shared object file No such file or directory 去网上搜了一下 说是安装的pytorc
  • 浅析消费金融风控之贷中、贷前、贷后风控(风控模型、决策引擎)

    消费金融迎来 爆发增长 期 预计到2020年 我国消费信贷总市场规模将达到45万亿元 年复合增长率将达到18 前景广阔的消费金融市场 将成为我国经济发展的重要内驱力 业务痛点 征信体系缺失 分支风控标准不一 欺诈手段层出不穷 多头借贷现象普
  • 谈谈「数据仓库构建与分层」

    1 先导知识之 数据库与ER建模 1 1 数据库 DataBase 数据库是按照数据结构来组织 存储和管理数据的仓库 是一个长期存储在计算机内的 有组织的 可共享的 统一管理的大量数据的集合 数据库是以一定方式储存在一起 能与多个用户共享
  • CentOS7搭建Redis Cluster

    目录 什么是Redis Cluster Redis集群介绍 Redis 集群的数据分片 Redis 集群的主从复制模型 Redis 一致性保证 搭建Redis Cluster 三主三从 准备工作 启动所有节点服务 建立集群关系 验证 集群状
  • 找回误删除的文件

    author skate time 2009 11 19 今天在网上帮个美女恢复数据 他昨天不小心 把重要文件删除 而今天又急用 于是我就帮个小忙用两款数据维护软件DiskGenius EasyRecovery帮其恢复 这两个软件结合使用
  • python自定义标识符_python自定义异常

    python自定义异常 try 异常在try块里抛 如果会产生多个异常 捕捉第一个 匹配except 后边的不再捕捉 except 抓异常 else try无异常 才会执行else finally 无论try块是否抛异常 永远执行的代码 通
  • ZYNQ产品生产拷机问题思考

    目前设计的ZYNQ产品支持QSPIFLASH SDka EMMC启动 主要启动方式主要有以下几种 全部启动文件存放在QSPIFLASH ZYNQ支持的QSPIFLASH为16MB大小 如果UBOOT 内核 设备树 文件系统全部存放在QSPI