OpenHarmony开发者论坛
标题:
如何移植OpenOarmony3.0.2LTS的文件系统?(轻量系统)
[打印本页]
作者:
paopaozhi
时间:
2023-12-12 11:28
标题:
如何移植OpenOarmony3.0.2LTS的文件系统?(轻量系统)
[md]# 如何移植OpenHarmony3.0.2LTS的文件系统?(轻量系统)
想请问如何使用OpenHarmony的文件系统?
关于文件系统时如何实现的?
如果想要实现写一个app然后多个开发板都能去使用,如何实现?
[/md]
作者:
深开鸿_王石
时间:
2023-12-12 15:18
文件系统是kernel部分呢,liteos_a的内容主要来源于nuttx,资料不少,可以找找;至于app,还是arkui框架,这部分和富设备差别不大,只是需要注意是不是有些不支持,如果你不需要界面,那就完全没区别了
作者:
dragon
时间:
2023-12-12 22:09
标题:
如何移植OpenOarmony3.0.2LTS的文件系统?(轻量系统)
Q:如何移植 OpenHarmony3.0.2LTS 的文件系统?(轻量系统)
A:
从3.0.2移植到哪里去?
Q:想请问如何使用 OpenHarmony 的文件系统?(姑且认为也是轻量系统)
A:
轻量系统的数据持久化方法,包括键值存储和文件操作两种方式。它们在公共基础库子系统中,可被各业务子系统及上层应用使用。
键值存储API列表:
接口名 描述
UtilsGetValue 根据key获取对应数据项
UtilsSetValue 用于存储/更新key对应数据项
UtilsDeleteValue 删除key对应数据项
文件操作API列表:
接口名 描述
UtilsFileOpen 打开或创建文件
UtilsFileClose 关闭文件
UtilsFileRead 读取特定长度的文件数据
UtilsFileWrite 向文件写入特定大小的数据
UtilsFileDelete 删除指定文件
UtilsFileStat 获取文件大小
UtilsFileSeek 重新定位文件读/写偏移量
UtilsFileCopy 将源文件复制一份并存储到目标文件
UtilsFileMove 将源文件移动到指定目标文件
Q:关于文件系统是如何实现的?
(姑且认为也是轻量系统)
A:
键值存储具体实现:以key为文件名,将value保存到文件中,而非键值数据库中。所以键值存储调用的是文件操作,如下图。
(, 下载次数: 15)
上传
点击文件名下载附件
(, 下载次数: 28)
上传
点击文件名下载附件
文件操作具体实现:这个帮你追一个调用层级,例如UtilsFileOpen,具体如下。
(, 下载次数: 25)
上传
点击文件名下载附件
(, 下载次数: 20)
上传
点击文件名下载附件
注意device\hisilicon\hispark_pegasus\sdk_liteos\include\hi_fs.h之下就没有开源了:
(, 下载次数: 22)
上传
点击文件名下载附件
往静态库里面追,device\hisilicon\hispark_pegasus\sdk_liteos\build\libs\hi3861\release\factory\libsystem.a:
(, 下载次数: 30)
上传
点击文件名下载附件
用IDA反汇编,里面的hi_fs.o:
(, 下载次数: 19)
上传
点击文件名下载附件
调用了LOS_Open:
(, 下载次数: 27)
上传
点击文件名下载附件
device\hisilicon\hispark_pegasus\sdk_liteos\build\libs\hi3861\release\factory\liblitekernel_flash.a里面的los_vfs.o:
(, 下载次数: 19)
上传
点击文件名下载附件
LOS_Open调用了SPIFFS_open:
(, 下载次数: 26)
上传
点击文件名下载附件
device\hisilicon\hispark_pegasus\sdk_liteos\build\libs\libspiffs.a里面的spiffs_hydrogen.o:
(, 下载次数: 18)
上传
点击文件名下载附件
从这里开始就是具体实现了,以spiffs_object_create为例,继续追:
(, 下载次数: 25)
上传
点击文件名下载附件
device\hisilicon\hispark_pegasus\sdk_liteos\build\libs\libspiffs.a里面的spiffs_nucleus.o:
(, 下载次数: 24)
上传
点击文件名下载附件
到这一级基本上没什么extern的函数了
(, 下载次数: 15)
上传
点击文件名下载附件
(, 下载次数: 23)
上传
点击文件名下载附件
Q:如果想要实现写一个 app 然后多个开发板都能去使用,如何实现?
A:缩小问题范围,只是针对文件系统和KV存储的话,如果不跨CPU,那么把相关c和h打包带走即可;如果跨cpu,需要自己进行移植(把接口打通)。
(以上反编译只用于学习目的)
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5