0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

zynq 7000系列三个命令的简单介绍

ZYNQ 来源:ZYNQ 作者:ZYNQ 2022-10-17 09:19 次阅读

前言

由于zynq 7000系列 自带的文件系统(ramdisk)大小为16M的,而我现在使用的开发板中,除去嵌入式linux系统所需要的存储空间后,剩余的空间只有4M多了。当在开发过程中移植一些库或者程序到文件系统,16M的文件系统容量更显的相形见绌了。所以给文件系统扩容是给zynq 7000 系列开发新功能的重要环节。

目前我在我的zynq 开发版上测试,成功将根文件系统扩容到336M,至于为什么只能扩容到336M,暂时还没找到相关的资料(我的zynq 开发版硬件ddr3是4G,内存是512M),如果有知道原因的,恳请留言评论,在此感激不尽。

根文件系统ramdisk扩容分为三个步骤(以扩容24M为例):

制作存储空间为24M的根文件系统(ramdisk.image.gz)

拷贝原有的linux文件系统中的所有文件

制作支持24M以上的linux内核文件(uImage)

制作存储空间为24M的根文件系统

制作存储空间为24M的根文件系统,使用到三个命令:

dd命令:作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
mke2fs命令:作用是将镜像文件制作成ext2格式的文件系统
tune2fs命令:作用是调整和查看ext2/ext3文件系统的文件系统参数
123

三个命令的简单介绍:

dd命令

主要选项:

if=file输入文件名,默认为标准输入
of=file输出文件名,默认为标准输出
ibs=bytes一次读入bytes个字节(即一个块大小为bytes个字节)
obs=bytes一次写入bytes个字节
bs=bytes同时设置读和写的块大小为bytes
cbs=bytes一次转换bytes个字节
skip=blocks从输入文件开头跳过blocks个块后再开始复制
seek=blocks从输出文件开头跳过blocks个块后再开始复制
count=blocks仅仅拷贝blocks个块,块大小等于ibs指定的字节数
1234567891011

mke2fs命令:

一般用法:

mke2fs-F设备-L标签名称-mxx%-b区块大小
-b<区块大小>指定区块大小,单位为字节。
-c检查是否有损坏的区块。
-f<不连续区段大小>指定不连续区段的大小,单位为字节。
-F不管指定的设备为何,强制执行mke2fs。
-i<字节>指定"字节/inode"的比例。
-N指定要建立的inode数目。
-l<文件>从指定的文件中,读取文件西中损坏区块的信息。
-L<标签>设置文件系统的标签名称。
-m<百分比值>指定给管理员保留区块的比例,预设为5%。
-M记录最后一次挂入的目录。
-q执行时不显示任何信息。
-r指定要建立的ext2文件系统版本。
-R=<区块数>设置磁盘阵列参数。
-S仅写入superblock与groupdescriptors,而不更改inodeableinode
bitmap以及blockbitmap。
-v执行时显示详细信息。
-V显示版本信息。
1234567891011121314151617181920

tune2fs命令:

常用选项说明:

-l查看文件系统信息
-cmax-mount-counts设置强制自检的挂载次数,如果开启,每挂载一次mountconut就会加1,超过次数就会强制自检
-iinterval-between-checks[d|m|w]设置强制自检的时间间隔[d天m月w周]
-mreserved-blocks-percentage保留块的百分比
-j将ext2文件系统转换为ext3类型的文件系统
-Lvolume-label类似e2label的功能,可以修改文件系统的标签
-rreserved-blocks-count调整系统保留空间
-o[^]mount-option[,...]Setorcleartheindicateddefaultmountoptionsinthefilesystem.设置或清除默认挂载的文件系统选项
12345678910

好了,啰嗦了那么多,现在来看制作存储空间为24M的根文件系统的详细步骤。

1. 制作 ramdisk 文件系统

1)建立文件系统映象,设置文件系统大小为24576/1024 = 24M :

Host#ddif=/dev/zeroof=ramdisk.imagebs=1kcount=24576
1

2)格式化为 ext2 文件系统:

Host#mke2fs-Framdisk.image-L“24Mvolume”-b1024-m0
1

3)调整和查看 ext2/ext3 文件系统的文件系统参数:

Host#tune2fsramdisk.image-i0
1

4)修改权限:

Host#chmoda+rwxramdisk.image
1

5)压缩镜像文件,生成 ramdisk.image.gz :

Host#gzip-v9ramdisk.image
1

拷贝原有的linux文件系统中的所有文件

扩容的根文件系统(ramdisk.image.gz)已经生成,但刚才生成的跟文件系统里什么东西都没有,而能运行linux系统的根文件系统,需要很多系统文件,直接拷贝原有的linux文件系统中的所有文件,到这个新生成的根文件系统中,就能像以前运行linux系统。

1)提取 initrd 镜像文件:

Host#gunzipramdisk.image.gz
1

2)挂载 initrd 镜像文件:

Host#chmodu+rwxramdisk.image
Host#mkdirtmp_mnt/
Host#mount-oloopramdisk.imagetmp_mnt/
123

3)提取 原有的initrd 镜像文件:

Host#gunzipramdisk.image.gz
1

4)挂载 原有的initrd 镜像文件:新建一个目录src_ramdisk,将原有的根文件系统放如这个目录下。

Host#cdsrc_ramdisk
Host#chmodu+rwxramdisk.image
Host#mkdirtmp_mnt/
Host#mount-oloopramdisk.imagetmp_mnt/
Host#cdtmp_mnt/
12345

5)将原来的文件系统中的所有文件复制到tmp_mnt中:

Host#cp-ri*../tmp_mnt
1

6)压缩ramdisk.image,并生成 uramdisk.image

Host#cd..
Host#gzipramdisk.image.gz
Host#mkimage-Aarm-Tramdisk-Cgzip-dramdisk.image.gzuramdisk.image.gz
123

制作支持24M以上的linux内核文件

我们将文件系统扩容后,在启动过程中可能会报错,报错的原因是在内核配置里预留的启动内存空间不够引起的,所以需要改内核的配置,从新编译,内核配置要改的地方如下:

#makeARCH=armmenuconfig
1

470be2d4-4db4-11ed-a3b6-dac502259ad0.png4722e268-4db4-11ed-a3b6-dac502259ad0.png473f51b4-4db4-11ed-a3b6-dac502259ad0.png

保存设置后,编译生成uImage:

Host#make-j4ARCH=armCROSS_COMPILE=arm-xilinx-linux-gnueabi-UIMAGE_LOADADDR=0X8000uImage
1

验证

将修改好的uImage 和ramdisk 复制到sd卡中,并加载进入系统。

使用 df -h 命令查看空间使用情况。

Host#df-h
1
47614c56-4db4-11ed-a3b6-dac502259ad0.png
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18286

    浏览量

    288498
  • Zynq
    +关注

    关注

    9

    文章

    600

    浏览量

    46631
  • 存储空间
    +关注

    关注

    0

    文章

    47

    浏览量

    10496

原文标题:Zynq-7000移植——根文件系统ramdisk扩容教程

文章出处:【微信号:ZYNQ,微信公众号:ZYNQ】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    以Xilinx的ZYNQ7000系列为例,介绍CLB功能与结构

    ,SliceM还可以配置为分布式RAM和分布式ROM。 下面以Xilinx的ZYNQ7000系列为例介绍其功能与结构 ZYNQ7000
    的头像 发表于 11-02 17:18 5117次阅读
    以Xilinx的<b class='flag-5'>ZYNQ</b>的<b class='flag-5'>7000</b><b class='flag-5'>系列</b>为例,<b class='flag-5'>介绍</b>CLB功能与结构

    Xilinx® Zynq®7000 系列 (XC7Z015) 电源解决方案 (8W) - 参考设计

    `描述PMP10601 参考设计提供为 Xilinx® Zynq® 7000 系列 (XC7Z015) FPGA 供电时所需的所有电源轨。此设计使用多个 LMZ3 系列模块、多个 LD
    发表于 05-08 16:08

    分享黑金ZYNQ7000系列视频教程

    视频太大了,无法上传,直接分享百度网盘了介绍一下内容【黑金ZYNQ7000系列原创视频教程】20.Linux下的GPIO操作【黑金ZYNQ7000
    发表于 11-14 21:04

    Zynq-7000 SoC提供 FPGA 资源

    与内置于 TE0720 系列 Trenz Electronic SoM(采用 Zynq Z-7014S 和 Zynq Z-7020 器件)中的 FPGA 容量相比,集成到 TE0723-03M
    发表于 08-31 14:43

    如何为第方设置Zynq 7000系列进行边界扫描?

    嗨,大家好,是否有“白痴指南”如何为第方设置Zynq 7000系列进行边界扫描?我有一测试工作,但我得到间歇性的测试结果取决于
    发表于 04-17 08:56

    Zynq-7000是什么?Zynq-7000能干什么?

    Zynq-7000是什么?Zynq-7000能干什么?有何作用?
    发表于 06-30 06:22

    ZYNQ简介和Hello World介绍

    ZYNQ学习笔记_ZYNQ简介和Hello WorldZYNQ介绍PS和PL的连接ZYNQ开发工具链在PS端编写Hello World程序ZYNQ
    发表于 02-17 07:37

    Xilinx® Zynq®7000系列电源解决方案

    描述此 PMP10600.1参考设计提供为 Xilinx® Zynq® 7000 系列 (XC7Z015) FPGA供电时所需的所有电源轨。此设计使用多个 LMZ3 系列模块、多个 L
    发表于 09-23 07:43

    Xilinx® Zynq®7000系列电源解决方案

    描述 PMP10601 参考设计提供为 Xilinx® Zynq® 7000 系列 (XC7Z015) FPGA供电时所需的所有电源轨。此设计使用多个 LMZ3 系列模块、多个 LDO
    发表于 09-28 06:24

    第二章 Zynq7000芯片的简介

    详细介绍zynq7000系列板子的资料,适合初学者借鉴学习。
    发表于 02-28 15:12 11次下载

    Zynq-7000系列特征概述

    相比较经典的FPGA,Zynq-7000系列最大的特点是将处理系统PS和可编程资源PL分离开来,固化了PS系统的存在,实现了真正意义上的SOC(System On Chip)。 1.
    发表于 11-18 05:11 1.9w次阅读
    <b class='flag-5'>Zynq-7000</b><b class='flag-5'>系列</b>特征概述

    Xilinx Zynq™-7000

    Xilinx Zynq™-7000
    的头像 发表于 06-04 13:47 3426次阅读

    ZYNQ-7000系列MIO、EMIO、AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    发表于 07-25 17:41 2149次阅读
    <b class='flag-5'>ZYNQ-7000</b><b class='flag-5'>系列</b>MIO、EMIO、AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    发表于 01-31 06:50 12次下载
    <b class='flag-5'>ZYNQ-7000</b><b class='flag-5'>系列</b>MIO/EMIO/AXI_GPIO接口

    Zynq 7000系列的设计参考书中文版

    Zynq 7000系列的设计参考书中文版
    发表于 12-17 17:08 0次下载