嵌入式技术论坛
直播中

梅利号

8年用户 1481经验值
擅长:可编程逻辑
私信 关注
[问答]

ymodem传输文件到片外flash,通过ls命令查看片外flash没有文件是怎么回事?

我现在在做ota,通过485串口基于ymodem协议将升级文件传输到片外flash中,然后再bootloader中检测升级文件(因项目原因没使用RTT平台生成的bootloader),但发现通过ls命令查看片外flash,里面没有文件。
1.png

但是ymodem显示文件传输成功了,查看ymodem底层源码,好像是用buffer的形式写入flash的,这种情况下是不是在片外flash里就看不到文件,只有数据,需要自己在将数据保存成文件呢?第一次用不太懂,希望有大佬可以解答一下

2.png

回帖(2)

abdkjshd

2023-9-8 15:45:49
RTT的YMODEM 接收是可以配置的,在启动一个Ymodem时,有三个函数传递给Ymodem;1 传输开始,握手后调用;2 接收到数据块,收到一个数据块调用一次;3 传输完成;文件全部接收完成后调用;
你不需要修改底层,只需要实现这三个函数并在建立YYmodem时把这三个函数传递给Ymodem即可;
比如下载文件到flash,三个函数分别是:
1 获取分区;2 分区写数据;3 检查分区数据;
比如下载文件到文件系统,三个函数分别是:
1 打开文件;2 文件写数据;3 关闭文件,检查文件数据;

如果你的YMODEM过程能完成却没有列表到文件,先确认你的文件系统是ok的,建立一个文件或文件夹试试;
举报

贾永世

2023-9-21 16:23:25
您的猜测是正确的,使用Ymodem传输文件时,文件会被保存到片外flash中,但是并不会被以文件的形式存储,而是以数据块的形式存储到指定的地址。因此,在使用ls命令查看片外flash时,并不会看到传输的文件,而只能看到在指定地址上存储的数据块。

如果需要在片外flash中以文件形式查看传输的文件,您需要手动读取flash中的数据,将其保存为文件并进行解析。通过底层源码,您可以获取传输的数据块地址、长度和内容,然后将它们转换为文件的形式。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分