前言
前面两篇博文我写了双系统下使用 sharefs 来传输共享文件,也写了单 Linux 下视频解码 sample ,那双系统下如何进行视频解码 sample 呢?前面我有提到 sharefs 只是用于传输音频的一些文件,如果是视频码流的话就不可以,那如何在双系统来跑 sample_vdec 视频解码呢? 今天我们这篇博文就是使用 RAMFS 文件系统来解决这个问题的。
一、RAMFS 基本概述
RAMFS 是一个可动态调整大小的基于 RAM 的文件系统。RAMFS 没有后备存储源。向 RAMFS 中进行的文件写操作也会分配目录项和页缓存,但是数据并不写回到任何其他存储介质上,掉电后数据丢失。
RAMFS 文件系统把所有的文件都放在 RAM 中,所以读/写 操作发生在 RAM 中,可以用 RAMFS 来存储一些临时性或经常要修改的数据,例如 /tmp 和 /var 目录,这样既避免了 对存储器的读写损耗,也提高了数据读写速度。
Huawei LiteOS 的 RAMFS 是一个简单的文件系统,它是基于 RAM 的动态文件系统的一种缓冲机制。
Huawei LiteOS 的 RAMFS 基于虚拟文件系统层 (VFS),不能格式化。
二、RAMFS文件系统初始化
在 sdk/mpp/sample/liteos/ 目录下的 app_init.c 文件中添加 ramfs 初始化函数
void ram_fs_init(void)
{
int swRet=0;
swRet = mount(NULL, RAMFS_DIR, "ramfs", 0, NULL);
if (swRet) {
dprintf("mount ramfs err %d\n", swRet);
return;
}
dprintf("Mount ramfs finished.\n");
}
调用初始化函数,随后在 Huawei LiteOS 系统启动时可以看到如下显示,表示 RAMFS 文件系统已初始化成功:
Mount ramfs finished
三、修改 sample_vdec 适配 RAMFS

2. 指定编码文件名

注意: sample_vdec 中有多个解码示例,这里以解码 h265 为例。
四、RAMFS 文件系统挂载
编译烧录这里就不叙述了,可以参考之前环境搭建的博文
烧录 A53UP Huawei LiteOS 镜像后启动 Huawei LiteOS :
在跟目录下创建 ramfs 文件夹
Huawei LiteOS# mkdir ramfs
运行命令:
Huawei LiteOS# mount 0 /ramfs ramfs
将从串口得到如下回应信息,表明挂载成功。
Huawei LiteOS# mount 0 /ramfs ramfs
mount ok
RAMFS 文件系统卸载:
Huawei LiteOS# umount /ramfs
将从串口得到如下回应信息,表明卸载成功。
Huawei LiteOS# umount /ramfs
umount ok
五、运行 sample_vdec
将source_file 中的 h265 文件拷贝到 Huawei LiteOS 端的 /ramfs 文件夹中,然后就可 以运行 sample 了。
补充: 这里可以使用前面博文 sharefs 将文件放在 linux 端的 /sharefs 中,然后启用 sharefs & 这样在 LiteOS 端就可以将文件从 sharefs 中拷贝到 ramfs 中
注意: H265 文件名需要和前面修改的同步
Huawei LiteOS# sample 0 1
六、参考资料
①《 【Hi3559AV100 Camera】Hi3559AV100 环境搭建_Dana Xiong_2020.06.16 》
②《 【Hi3559AV100 Camera】 Hi3559AV100 双系统下使用 sharefs_Dana Xiong_2020.08.31》
③《 【Hi3559AV100 Camera】Hi3559AV100 sample_vdec 视频解码_Dana Xiong_20200914》
④《 WM_Hi3559A╱C V100 SDK 安装及升级使用说明.pdf 》
⑤《 WM_Hi3559A╱C V100 开发环境用户指南.pdf 》
评论
大肥雪
2021年6月18日