在U-Boot下通过串口更新Cyclone V HPS板载固定SD卡内文件的相关问题
关于Cyclone V HPS U-Boot串口更新SD卡文件的问题解答
- 首先明确
loady命令的本质:该命令仅会将PC端传输的新文件写入开发板的DDR内存中,全程不会触碰SD卡上的原有存储内容,因此传输完成的瞬间不存在新文件覆盖旧文件、或是二者共存的情况,新旧文件分别处于内存、SD卡两个完全独立的存储介质中。 - 文件覆盖/共存的触发条件:只有当你将DDR内存中暂存的新文件写入SD卡分区时,才会涉及该问题:
- 若写入时指定的SD卡文件路径与旧文件的路径完全一致,新文件会直接覆盖旧文件的内容,旧文件会被直接清除
- 若写入时指定的SD卡文件路径与旧文件不同,两个文件会作为独立文件同时保存在SD卡对应路径下
- 删除旧文件的实现方式:Cyclone V HPS的默认U-Boot已集成SD卡文件系统操作命令,可直接通过对应命令删除旧文件:
- 若旧文件存放在FAT格式分区(大部分SD卡启动的Cyclone V方案会把启动相关文件放在FAT分区),首先用
fatls mmc 0:1确认SD卡第一分区的现有文件路径,再执行fatrm mmc 0:1 旧文件的完整路径即可删除 - 若旧文件存放在EXT4格式分区,将上述命令替换为
ext4ls和ext4rm即可 - 若你的U-Boot裁剪了文件删除命令,可将需要保留的文件全部导出后,直接写入完整的分区镜像覆盖原有分区,间接完成旧文件删除,该操作风险较高,执行前请确认镜像完整性
- 若旧文件存放在FAT格式分区(大部分SD卡启动的Cyclone V方案会把启动相关文件放在FAT分区),首先用
- 操作提示:写入或删除文件前建议先执行对应分区的ls命令确认路径,避免误操作导致文件丢失。
内容的提问来源于stack exchange,提问作者JacobMuller
相关产品推荐
相关产品推荐

