问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 11 人浏览分享

开启左侧

米联客F20-2CG(ZYNQ MPSoC)Petalinux EXT4文件系统搭建教程

[复制链接]
11 0
经验分享
经验分享: 01-AMD(XILINX) » X
米联客F20-2CG(ZYNQ MPSoC)Petalinux EXT4持久化文件系统搭建教程
适用平台:米联客MLK-F20-CM02-2CG ZYNQ MPSoC开发板
软件版本Petalinux 2021.1Ubuntu 18.04
前言
默认Petalinux编译生成的系统采用ramdisk临时文件系统,文件系统运行在内存中,开发板断电后所有修改的数据、配置都会丢失,无法满足实际项目持久化存储需求。
本文基于米联客F20-2CG开发板,手把手教大家将Petalinux根文件系统修改为EXT4持久化文件系统,通过SD卡分区存储根文件系统,实现断电数据保存,全程采用离线编译方式,规避在线编译网络报错问题,适配2021.1版本Petalinux
本文涵盖:工程配置修改、设备树适配、SD卡分区格式化、系统编译、镜像部署、板卡启动测试全流程。
前置环境
1. 已搭建完成Petalinux2021.1开发环境(米联客定制Ubuntu18.04虚拟机)
2. 已准备好离线编译依赖包(适配MPSoC 64位处理器)
3. 提前获取F20-2CG对应的Vivado导出XSA硬件描述文件
4. 8G及以上SD卡(格式清空,用于分区制作启动卡)
5. 开发板、串口线、SD卡读卡器、电源适配器
一、核心原理说明
1. ramdisk模式:根文件系统挂载在内存,读写速度快,但断电数据清零,仅适用于调试测试
2. EXT4持久化模式:将根文件系统挂载在SDEXT4分区,所有文件修改、程序安装、配置保存均可永久生效,断电不丢失
3. SD卡双分区设计:
• FAT32分区(boot):存放BOOT.BINboot.scrImagesystem.dtb等启动镜像
• EXT4分区(rootfs):挂载Linux根文件系统,持久化存储系统数据
二、进入工程并配置离线编译(必做)
为避免在线编译网络超时、服务器连接失败问题,全程使用离线编译配置,沿用前文搭建的工程目录。
1. 进入Petalinux工程目录,加载环境变量
Plain Text
cd /home/uisrc/project/system
source ../../petalinux2021.1/settings.sh
2. 打开工程配置界面
Plain Text
petalinux-config
3. 配置Yocto离线编译参数(已有配置可跳过,新工程必须配置)
进入 Yocto Settings -> Add pre-mirror url,输入路径:file:///home/uisrc/downloads_2021.1_update1
进入 Yocto Settings -> Local sstate feeds settings,输入64MPSoC路径:/home/uisrc/sstate_aaarch64_2021.1_update1/aarch64
取消勾选 Enable Network sstate feeds,关闭网络编译模式
配置完成后暂不保存,继续下一步文件系统配置。
三、修改根文件系统为EXT4模式
3.1 配置文件系统类型与挂载盘符
petalinux-config配置界面,依次进入:
Image Packaging Configuration -> Root filesystem type
默认为ramdisk模式,修改为:EXT4(SD/eMMC/SATA/USB)
选中后界面会新增盘符配置项,填写F20-2CG开发板SD卡挂载节点:
Device node of SD device = /dev/mmcblk1p2
关键说明F20-2CG板卡sdhci0对应SD卡设备,系统识别为mmcblk1,第二分区p2专门用于挂载EXT4根文件系统,切勿填错盘符,否则系统启动失败。
3.2 设备树适配SD卡(防止写保护报错)
修改设备树文件,关闭SD卡写保护,避免挂载失败:
编辑设备树配置文件:
Plain Text
vim /home/uisrc/project/system/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
在文件末尾添加如下配置:
Plain Text
&sdhci0 {
    disable-wp;
};
&sdhci1 {
    disable-wp;
};
保存退出(ESC :wq),完成设备树适配。
四、清理缓存并编译系统
1. 清理历史编译缓存,避免配置残留冲突
Plain Text
petalinux-build -x cleanall
2. 执行离线编译(耗时取决于电脑配置,无网络依赖)
Plain Text
petalinux-build
编译成功会提示:Successfully built project
3. 打包生成BOOT.BIN启动镜像
Plain Text
petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/*.bit --force
执行完成后,images/linux目录下生成核心启动文件:BOOT.BINimage.ubsystem.dtbrootfs.tar.gz
五、SD卡双分区格式化与系统部署
SD卡通过读卡器接入Ubuntu虚拟机,使用系统自带磁盘工具分区,禁止Windows格式化(会导致分区格式异常)。
5.1 SD卡分区划分
1. 打开Ubuntu磁盘工具,选中接入的SD卡,删除原有所有分区
2. 新建第一个分区:
分区大小:500MB
格式:FAT32
分区名称:boot
3. 新建第二个分区:
占用剩余全部空间
格式:EXT4
分区名称:rootfs
保存分区方案,等待格式化完成,手动挂载两个分区。
5.2 部署启动文件与根文件系统
1. 拷贝启动文件到FAT32 boot分区
images/linux 目录下的 boot.scrBOOT.BINimage.ub 三个文件复制到SDboot分区。
2. 解压根文件系统到EXT4 rootfs分区
Plain Text
sudo tar zxvf rootfs.tar.gz -C /media/uisrc/rootfs/
3. 强制写入缓存,避免文件丢失
Plain Text
sync
操作完成后安全弹出SD卡,完成系统部署。
六、开发板启动配置与测试
6.1 拨码开关配置(F20-2CG专用)
将开发板拨码开关调整为 SD卡启动模式:OFF-ON-OFF
接线说明:插入SD卡,连接USB串口、电源,打开Putty串口工具,波特率默认115200
6.2 持久化功能验证
1. 上电启动开发板,系统正常进入Linux终端
2. 创建测试文件
Plain Text
touch test.txt
echo "EXT4持久化测试" > test.txt
3. 断电重启开发板,重新进入系统
4. 查看文件是否存在
Plain Text
ls
test.txt文件保留、内容未丢失,说明EXT4持久化文件系统配置成功
七、常见问题与解决方案
问题1:系统启动提示mmcblk0p1挂载失败
解决方案:检查设备树是否添加disable-wp配置,关闭SD卡写保护,重新编译烧录。
问题2:断电后数据依旧丢失
解决方案:确认petalinux-config中文件系统类型已改为EXT4,且盘符/dev/mmcblk1p2填写正确,重新配置编译。
问题3:编译过程sstate匹配失败
解决方案:检查离线包路径配置,确认64位离线包适配MPSoC架构,关闭网络编译模式。
问题4SD卡分区后无法挂载
解决方案:使用Ubuntu原生磁盘工具分区,禁止Windows格式化,确保分区格式为纯FAT32EXT4
八、总结
本文基于米联客F20-2CG ZYNQ MPSoC开发板,完成了Petalinux2021.1从临时ramdiskEXT4持久化文件系统的完整改造。通过修改系统配置、适配设备树、SD卡双分区部署,彻底解决了断电数据丢失问题,完全满足嵌入式Linux项目长期运行、数据存储、程序自启动的开发需求。
该方案全程离线编译,规避了官方服务器网络问题,稳定性高、适配性强,可直接用于F20-2CG板卡的项目开发落地。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

10

粉丝

168

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版