openeuler-riscv / oerv-team

OERV 实习生工作中心
6 stars 35 forks source link

验证 Uniproton riscv64 VFS 组件 #677

Open Jingwiw opened 2 months ago

Jingwiw commented 2 months ago

说明

问题背景 :

UniProton 在 riscv64 上完成了初步的移植,但是一些系统组件尚未进行验证, VFS组件还没有进行运行验证,验证完成后再利用virt 的 blk-virtio 驱动磁盘,使用mkfs.fat 相关的制作一个fat32文件系统,然后再利用VFS挂到某个目录下,

涉及软件包:

UniProton

涉及软件包地址:

UniProton: A lightweight real-time operating system (gitee.com)

所需技能:

验证方法:

  1. 打开VFS组件宏,成功编译通过【截图】
  2. 调用初始化API, 使用接口创建伪文件系统并通过接口使用存储读取文件系统内容【输出日志截图】
  3. mkfs.fat制作fat32文件系统,创建例如a,b,c之类的文件,使用文件系统结合virtio-blk 初始化持久性存储设备,读取a,b,c显示日志【输出日志截图,可选项】

其他说明 :

Ywinh commented 2 months ago

任务一:打开vfs组件并编译

开启: CONFIG_OS_OPTION_NUTTX_VFS这个宏以及其他fs相关宏

UniProton/build/uniproton_config/config_riscv64_rv64virt/defconfig这个路径下添加

#
# dirvers Modules Configuration
#
CONFIG_OS_OPTION_NUTTX_VFS=y
# if use dirver must config "CONFIG_OS_OPTION_NUTTX_VFS"
CONFIG_CONFIG_PSEUDOFS_ATTRIBUTES=y
CONFIG_CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
# CONFIG_CONFIG_DISABLE_ENVIRON=y

# OS_OPTION_FATFS_PAGE_SIZE is Byte
CONFIG_OS_OPTION_FATFS_PAGE_SIZE=512

# from fs_epoll.c
CONFIG_CONFIG_FS_NEPOLL_DESCRIPTORS=8

# from fs_sendfile.c
# CONFIG_CONFIG_NET_SENDFILE=y
CONFIG_CONFIG_SENDFILE_BUFSIZE=512

# for stm32f407 uart 
CONFIG_CONFIG_DEV_CONSOLE=y

# from lib_libstream.c
CONFIG_CONFIG_BUILD_FLAT=y

# for nuttx/clock.h 
CONFIG_CONFIG_SYSTEM_TIME64=y

# from tls.h
CONFIG_CONFIG_LIBC_MAX_EXITFUNS=0
CONFIG_CONFIG_TLS_NELEM=0
# CONFIG_CONFIG_TLS_TASK_NELEM=0

# from Make.defs
CONFIG_CONFIG_FILE_STREAM=y
# CONFIG_CONFIG_EVENT_FD=y
# CONFIG_CONFIG_TIMER_FD=y
# CONFIG_CONFIG_SIGNAL_FD=y

# from fs_poll.c
CONFIG_CONFIG_BUILD_KERNEL=y

然后编译内核 sh build_app.sh

编译过程报错解决

在log里挨个查找

build成功

image-20240416173006619

Ywinh commented 2 months ago

out.txt

inode 系列 api 验证完成: