zynq裸机开发:更改系统时间保存文件到SD卡

1、首先勾选文件系统库
在这里插入图片描述
2、之后导出一个SD卡文件写demo
在这里插入图片描述
在这里插入图片描述
3、SD卡创建或修改文件时的创建时间和修改时间是通过调用BSP包的diskio.c文件中的get_fattime函数
在这里插入图片描述
4、找到这段函数,先把他注释掉,之后考到导出demo的最后一行,稍作修改,比如设定时间为2025.6.21,12点30分59秒
在这里插入图片描述
在这里插入图片描述

DWORD get_fattime(){
	int fpga_hour,fpga_minute,fpga_second;
	fpga_hour   = 12;
	fpga_minute = 30;
	fpga_second = 59;
	DWORD fattime = ((2025 - 1980) << 25) | (6 << 21) | (21 << 16) |
                    (fpga_hour << 11) | (fpga_minute << 5) | (fpga_second >> 1);
	return fattime;
}

之后再运行SD卡文件的创建和修改时间就会是设定的时间了。

Zynq MP 设备上运行 R5 裸机程序时,通常需要在 Linux 系统环境中加载并启动该裸机程序。这种运行模式通常被称为异构多处理(AMP, Asymmetric Multiprocessing),其中 A53 核运行 Linux 系统,而 R5 核运行裸机程序。以下是实现这一目标的步骤: ### 1. 配置 DDR 内存分配 在运行 Linux 系统Zynq MP 设备上,首先需要确保 R5 核使用的 DDR 内存区域与 Linux 系统所使用的 DDR 内存区域不重叠。这通常通过修改设备树(Device Tree)和链接脚本(ld 文件)来实现。例如,可以将 Linux 内核放置在 `0x820000000` 地址处,而 R5 核使用的 DDR 区域则可以设置在其他地址[^2]。 ### 2. 开发 R5 裸机程序 开发 R5 裸机程序时,需要确保程序的链接脚本正确配置了 DDR 内存的起始地址和长度。这可以通过修改 `DDR_0_MEM` 的定义来实现。开发完成后,生成 R5 裸机程序的 `.elf` 文件,并进行测试以确保其功能正常[^3]。 ### 3. 打包 R5 裸机程序 由于不能使用 PetaLinux 工具打包 R5 裸机程序,因此需要使用 Xilinx SDK 的 `create image` 工具进行打包。打包顺序通常为:FSBL、PMU、BIT、BL_31、R5 裸机程序(如 `test_r5.elf`)、U-Boot。最终生成的 `BOOT.bin` 文件和 `image.ub` 文件可以放入 SD 中进行启动测试。 ### 4. 启动 Linux 系统并加载 R5 裸机程序 将生成的 `BOOT.bin` 和 `image.ub` 文件放入 SD 后,启动 Linux 系统系统启动后,可以通过 Linux 用户空间程序加载并启动 R5 裸机程序。这通常涉及使用 `devmem` 工具读取 DDR 物理空间的数据,或将 R5 裸机程序作为内核模块加载。 ### 5. 测试与调试 在 Linux 系统下运行 R5 裸机程序时,可以通过串口打印调试信息。Linux 和裸机程序的输出都可以通过串口查看,从而方便调试。如果遇到非程序错误,需要检查 R5 核的 DDR 配置是否正确,因为大部分问题是由 DDR 配置错误引起的[^2]。 ### 示例代码:使用 `devmem` 读取 DDR 物理空间 以下是一个使用 `devmem` 工具读取 DDR 物理空间数据的示例代码: ```bash # 读取 DDR 物理空间的某个地址 devmem 0x80000000 32 ``` ### 相关问题 1. 如何在 Zynq MP 设备上配置 DDR 内存分配以避免冲突? 2. 如何使用 Xilinx SDK 打包 R5 裸机程序? 3. 如何在 Linux 用户空间加载并启动 R5 裸机程序? 4. 如何使用 `devmem` 工具读取 DDR 物理空间的数据? 5. 在 Zynq MP 设备上运行 R5 裸机程序时,如何通过串口进行调试?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值