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产品生产拷机问题思考 的相关文章

  • SmartFusion从FPGA到ARM(四)——MSS_TIMER定时器的使用

    文章目录 1 定时器资源简介 2 MSS TIMER库函数简介 3 简单的周期性中断 4 自定义产生波形 5 64位定时器的使用 6 单次中断模式 系列教程 SmartFusion从FPGA到ARM系列教程 1 定时器资源简介 SmartF
  • ZYNQ LINUX 下 PL中断PS记录

    最近ZYNQ的项目需要 调试了PL中断PS的部分 下面将其中了解到信息记录下来 以防遗忘 如图一 图二所示 PL到PS的中断分为16个共享中断 SPI 和4个私有中断 PPI 本文用到了共享中断 着重介绍SPI中断 图一 图二 PL 侧16
  • 用Vscode编辑verilog代码配置

    这篇教程感觉很详细了 我这里分享一下vscode和插件的安装包链接 都是官网下载的 放心食用 用VSCode编辑verilog代码 iverilog编译 自动例化 自动补全 自动格式化等常用插件 链接 https pan baidu com
  • FPGA实战--等精度频率测量

    首先放置效果图 本次试验中采用的是等精度测频率 等精度测频的原理是产生一个1s的高电平 在高电平中对被测方波进行计数 所测得数字即该波形频率 具体等精度测量原理请参考 http www elecfans com d 591858 html
  • FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)

    目录 一 验证与门 二 验证与非门 三 验证二选一数据选择器 四 验证2 4译码器 五 验证半加器 六 验证全加器 0 初始化定义 1 第一个半加器 2 第二个半加器 3 得到最终进位Co 代码 0决定与 1决定或 一 验证与门 只要有一个
  • verilog 基本语法 {}大括号的使用

    的基本使用是两个 一个是拼接 一个是复制 下面列举了几种常见用法 基本用法 表示拼接 第一位 第二位 表示复制 4 a 等同于 a a a a 所以 13 1 b1 就表示将13个1拼接起来 即13 b1111111111111 拼接语法详
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • 从零开始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的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • FPGA实现VGA显示图片

    利用FPGA在带有VGA接口的液晶显示器上显示图片 电路原理图 端口说明 VGA R2 VGAB0的8个端口位VGA的RGB数据位 VGA HS为行同步信号 VGA VS为场同步信号 以分辨率为640x480为例 刷新速率为60Hz 每幅图
  • [从零开始学习FPGA编程-38]:进阶篇 -语法-函数与任务

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 前言 第1章 什么是函数Function 1 1 什么是函数 1 2 函
  • VHDL:按钮去抖动(或不去抖动,视情况而定)

    我已阅读其他帖子 但似乎无法修复我的 我是 VHDL 新手 所以我确信这是一个简单的修复 简而言之 按钮没有防抖 代码编译和比特流程序 在测试台中 按下按钮可以工作 但输出 LED 不会改变 在板上 按下按钮会使随机 LED 亮起 我猜是因
  • Verilog、FPGA、统一寄存器的使用

    我有一个问题 关于我正在开发的 AGC SPI 控制器在我看来奇怪的行为 它是用 Verilog 完成的 针对的是 Xilinx Spartan 3e FPGA 该控制器是一个依赖外部输入来启动的 FSM FSM的状态存储在状态寄存器它没有
  • VHDL门控时钟如何避免

    我收到了避免使用门控时钟的建议 因为它可能会导致松弛和时序限制问题 但我想问一下我可以认为什么是门控时钟 例如 此代码对时钟进行门控 因为 StopCount 对它进行门控 process ModuleCLK begin if rising
  • Linux驱动程序DMA传输到PC作为主机的PCIe卡

    我正在开发一个 DMA 例程 将数据从 PC 传输到 PCIe 卡上的 FPGA 我阅读了 DMA API txt 和 LDD3 ch 15 详细信息 但是 我不知道如何从 PC 到 PCIe 卡上的一致 iomem 块进行 DMA 传输
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • VHDL 中的 BRAM_INIT

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

    我正在尝试编译用于 FPGA 编程的 verilog 代码 我将在其中实现 VGA 应用程序 我使用 QuartusII 和 Altera 我正在尝试正确使用 readmemh 来逐像素获取图片 现在 我已经使用 matlab 将图片转换为
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S

随机推荐

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

    很多人不禁问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