kendryte / k230_docs

Kendryte K230 SDK Docs
BSD 2-Clause "Simplified" License
85 stars 11 forks source link

[other]: k230大核系统中,除了sharefs共享盘,其他盘都是不可写的。请问如何变为可写 #13

Closed roingbu closed 10 months ago

roingbu commented 11 months ago

Other

k230大核系统中,除了sharefs共享盘,其他盘都是不可写的。请问如何变为可写?

我现在写了一个自启的程序,需要开机快速启动后立马拍照存储,但是sharefs共享盘不是快速启动的,它是随着linux小核系统启动而启动的。而其他位置似乎都是只读,请问如何让它们变得可写,或开辟一片新的空间,可以让它是可写的

LearnigF commented 11 months ago

大核的文件系统romfs是只读的,无法改为可写。如果需要开启快速启动后立马拍照存储,可以参考我们的门锁POC代码对小核启动的优化,在即将更新的1.0版本中,小核可以在1s左右启动,且大核可以通过sharefs写入文件到小核。

也可以在大核上新增一个ramfs用于临时存储文件,不过ram掉电后会丢失文件。

roingbu commented 11 months ago

那请问,如何新增一个ramfs呢

LearnigF commented 11 months ago

在src/big/rt-smart目录下,移植如下patch尝试

diff --git a/kernel/bsp/maix3/.config b/kernel/bsp/maix3/.config
index 5675604..b3dd123 100644
--- a/kernel/bsp/maix3/.config
+++ b/kernel/bsp/maix3/.config
@@ -138,7 +138,7 @@ CONFIG_RT_DFS_ELM_REENTRANT=y
 CONFIG_RT_USING_DFS_DEVFS=y
 CONFIG_RT_USING_DFS_ROMFS=y
 # CONFIG_RT_USING_DFS_CROMFS is not set
-# CONFIG_RT_USING_DFS_RAMFS is not set
+CONFIG_RT_USING_DFS_RAMFS=y
 CONFIG_RT_USING_DFS_TMPFS=y
 # CONFIG_RT_USING_DFS_UFFS is not set
 # CONFIG_RT_USING_DFS_JFFS2 is not set
diff --git a/kernel/bsp/maix3/applications/mnt.c b/kernel/bsp/maix3/applications/mnt.c
index e423406..f8c3477 100644
--- a/kernel/bsp/maix3/applications/mnt.c
+++ b/kernel/bsp/maix3/applications/mnt.c
@@ -1,4 +1,6 @@
 #include <rtthread.h>
+#include "ioremap.h"
+#include <dfs_ramfs.h>

 #ifdef RT_USING_DFS
 #include <dfs_fs.h>
@@ -26,6 +28,12 @@ int mnt_init(void)
         return -1;
     }

+    if(dfs_mount (RT_NULL,"/ramfs","ram", 0, dfs_ramfs_create(rt_ioremap_cached((void *)0x10000000, 0x8000000), 0x8000000)) == 0)
+    {
+       rt_kprintf("ram file system initializated;\n");
+    }
+
+
 #ifdef RT_USING_SDIO
     ret = rt_thread_init(&sdcard_mount_thread, "sdcard_mount", sdcard_mount, RT_NULL,
                          &sdcard_mount_thread_stack[0], RT_SDCARD_MOUNT_STACK_SIZE, 0x16, 20);
diff --git a/kernel/bsp/maix3/rtconfig.h b/kernel/bsp/maix3/rtconfig.h
index 2bf8f6e..7a3fb8c 100644
--- a/kernel/bsp/maix3/rtconfig.h
+++ b/kernel/bsp/maix3/rtconfig.h
@@ -89,8 +89,8 @@
 #define RT_USING_DFS_SHAREFS
 #define RT_USING_DEV_BUS
 #define DFS_USING_WORKDIR
-#define DFS_FILESYSTEMS_MAX 6
-#define DFS_FILESYSTEM_TYPES_MAX 6
+#define DFS_FILESYSTEMS_MAX 7
+#define DFS_FILESYSTEM_TYPES_MAX 7
 #define DFS_FD_MAX 64
 #define RT_USING_DFS_ELMFAT

@@ -107,6 +107,7 @@
 #define RT_USING_DFS_DEVFS
 #define RT_USING_DFS_ROMFS
 #define RT_USING_DFS_TMPFS
+#define RT_USING_DFS_RAMFS

 #define RT_USING_DFS_PROCFS
 /* Device Drivers */
diff --git a/tools/mkromfs.py b/tools/mkromfs.py
index d474748..b1653b5 100644
--- a/tools/mkromfs.py
+++ b/tools/mkromfs.py
@@ -69,6 +69,7 @@ def mkromfs_dir(dirname, is_root = False):
         mkromfs_output(('#ifdef RT_USING_SDIO\n\t{ROMFS_DIRENT_DIR, "sdcard", RT_NULL, 0},\n#endif\n'))
         mkromfs_output(('#ifdef RT_USING_PROC\n\t{ROMFS_DIRENT_DIR, "proc", RT_NULL, 0},\n#endif\n'))
         mkromfs_output(('#ifdef RT_USING_DFS_SHAREFS\n\t{ROMFS_DIRENT_DIR, "sharefs", RT_NULL, 0},\n#endif\n'))
+        mkromfs_output(('#ifdef RT_USING_DFS_RAMFS\n\t{ROMFS_DIRENT_DIR, "ramfs", RT_NULL, 0},\n#endif\n'))
     else:
         mkromfs_output(('const static struct romfs_dirent %s[] = {\n' % direntname.replace('-', '_')))
chenhb3 commented 10 months ago

7天以上未反馈结果,问题先关闭;希望已帮助您解决问题;后续有其它问题再重新创建,谢谢!