
rtems filesystem
文章平均质量分 67
binbinyantai
脚踏实地,一步一个脚印的积累
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
rtems 文件系统(5)_1
之前讲到 rtems_filesystem_initialize 函数中调用了mount函数,在该函数中实现了文件系统的挂载,那么到底怎么挂载的呢?下面具体分析一下int mount( const char *source, const char *target, const char原创 2018-01-21 11:31:32 · 505 阅读 · 0 评论 -
rtems 文件系统(13)-flash 底层驱动
根据之前的描述, 只需要实现对应flash芯片的底层驱动就可以了。还是挺方便的。flash一部分作为存放代码,一部分作为文件系统使用,存放代码的部分属于核心部分,不允许随意改动。所以对flash整体的划分规划很重要。暂时想到分为两部分。对于是否那一部分需要加密等操作后续再考虑吧。因为使用的是xilinx的zynq 7000系列。所以先阅读手册。看看qspi的接口。这部分比较简单,主要是查看原创 2018-01-24 15:28:39 · 548 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(7)--->cd命令错误问题查找
[/flash] # cd a0jffs2_lookup()jffs2_igetilookupmalloc new_inode 6440a8 ####################################jffs2_read_inode(): inode->i_ino == 2[JFFS2 DBG] jffs2_do_read_inode: read inode原创 2018-01-31 21:09:12 · 1351 阅读 · 1 评论 -
rtems文件系统(1)
本文主要整理了 rtems 文件系统相关的知识。rtems 架构支持• Mountable file systems 可挂载• Hierarchical file system directory structure 分级• POSIX compliant set of routines for the manipulation of files and directories p原创 2018-01-19 16:01:31 · 775 阅读 · 0 评论 -
rtems文件系统(2)
看到rtems手册上写pathname evaluation process 路径评估过程,因为对文件系统理解不多。暂时理解为实现文件系统时需要考虑的功能------- 路径的检查功能在 RTEMS 文件系统结构下的路径检查处理包括三部分:1)路径检查handler函数 2)跨越挂载点的路径检查3)系统节点信息表数据结构 1:路径检查函数包括 patheval()和原创 2018-01-19 18:56:17 · 438 阅读 · 0 评论 -
rtems 文件系统(4)
上一篇中说道 这个地方是入口,再向上追溯,可以找到在cpukit/libcsupport/include/rtems/libio.h中定义了这个函数指针类型,typedef void (*rtems_libio_helper)(void);然后下面定义了一个该类型的函数指针。 rtems_fs_init_helperconst rtems_libio_helper rtems_原创 2018-01-19 21:20:49 · 351 阅读 · 0 评论 -
rtems 文件系统(3)
通过查询源码,有一点点模糊的感觉,还是接着看文档比较靠谱。调用rtems_filesystem_initialize()函数将会挂载‘In Memory File System’作为 the base filesystem初始化过程在 cpukit/sapi/include/confdefs.h 中有定义#ifdef CONFIGURE_INIT //一般都会定义这个宏。co原创 2018-01-19 20:17:26 · 400 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(1)
根据之前的结果,虽然能够挂载上,但是有很多问题,参考(12)中描述。因为对jffs2完全没有什么概念可言,只知道这是一个flash的文件系统,并且挂载的时候只提供了下面的信息给到jffs2.对于内部怎么操作完全无知。并且flash每次擦除都是一个块一个块的。比如删除一个东西的时候是否会删除其他部分?怎么保留下来的。还是挺好奇的。为了解决问题,只能硬着头皮看jffs2的源码。看一下它挂载原创 2018-01-27 18:06:13 · 849 阅读 · 0 评论 -
rtems 文件系统(14)-jffs2使用问题记录
问题记录1: 当我挂载好文件系统后,准备建立一个文件夹试试使用命令mkdir data 结果打印下面信息JFFS2: Node totlen on flash (0xFFFFFFFF) != totlen from node ref (0x0000000C)mkdir 'data' failed:但是后面再次调用mkdir指令的时候就成功了,创建其他的文件夹也成功了。---原创 2018-01-26 20:15:51 · 1838 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(4)
经过前面的分析。找到了问题所在,按照分析应该是一些擦除标志没有写入导致错误。追踪这个问题的代码从函数jffs2_erase_pending_blocks跟进去。内部调用了jffs2_erase_block,再调用jffs2_flash_erase。最终调用到底层驱动函数。发现底层驱动函数擦除的时候计算块的时候有问题。如果地址刚好是sector起始地址,并且擦除的数量是sector大小的时候,计原创 2018-01-30 10:31:51 · 1013 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(5)--测试打印记录mkdir,嵌套mkdir
记下来测试建立多个文件夹,和文件夹嵌套是否有问题。记录打印信息[/flash] # ls[/flash] # mkdir datajffs2_lookup()JFFS2: jffs2_reserve_space(): Requested 0x44 bytesJFFS2: jffs2_reserve_space(): alloc sem gotJFFS2: jffs2_f原创 2018-01-30 14:54:53 · 516 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(6)
发现不深入了解jffs2完全无法理解错误的根源。更别说找出错误了。还是脚踏实地慢慢来吧。根据5的一些输出信息。我来一步步分析吧输入mkdir命令后。会调用 jffs2_mknod函数,目录也是一个node1:首先分配一个jffs2_raw_inode类型2:进入jffs2_reserve_space函数,保留空间,如果需要保留的空间不够,会触发jffs2_garbage_colle原创 2018-01-31 17:19:35 · 826 阅读 · 0 评论 -
rtems 文件系统(12)-flash jffs2
现在IMFS base file system已经建立起来了。到目前为止还是不了解怎么挂载其他的系统。因此查看rtems的wiki,看是否可以获取一些信息,并且看一下confdefs.h中关于文件系统这一部分。发现可以通过配置,增加jffs2的文件系统到rtems_filesystem_table中。要使用jffs2需要包含一个库函数。libjffs2.a在配置中增加#define CON原创 2018-01-24 12:48:51 · 462 阅读 · 0 评论 -
rtems 文件系统(5)_2
接之前的(5)_1. mount函数的分析。如果找到了rtems_filesystem_fsmount_me_t类型的该文件系统的处理函数,那么下面就可以继续安装了,接下来是alloc_mount_table_entry,该函数在在cpukit/libcsupport/src/mount.c中定义,该函数主要是分配内存,多是字符串的处理。rtems_filesystem_mount_tab原创 2018-01-21 12:11:59 · 305 阅读 · 0 评论 -
rtems 文件系统(5)_3
之前讲到mount函数中会调用如下函数。那么这个函数中做了什么呢?下面对IMFS_initialize_support函数进行分析,该函数在cpukit/libfs/src/imfs/imfs_initsupp.c中。int IMFS_initialize_support( rtems_filesystem_mount_table_entry_t *mt_entry, const vo原创 2018-01-21 17:55:25 · 300 阅读 · 0 评论 -
rtems 文件系统(6)
base file system的理解通过跟踪源代码 ,rtems_filesystem_initialize跟踪下去。发现手册上写的都可以理解了• Initialization of mount table chain control structure 建立一个链表的mount结构• Allocation of ajnodestructure that will serve原创 2018-01-21 20:34:10 · 355 阅读 · 0 评论 -
rtems 文件系统(7)
上一次说了base file system,那么理解了首先要有一个base file system,这个文件系统就是IMFS,有了这个base file system以后才能挂载其他的文件系统。我最后希望能够挂载一个flash的文件系统,但是现在还是不知道该怎么做?那么阅读手册中挂载mount和解除挂载unmount挂载点的概念1:挂载点必须是一个目录。可以有文件和其他目录在它下面原创 2018-01-22 09:52:48 · 386 阅读 · 0 评论 -
rtems 文件系统(8)
实现文件系统的需求rtems的文件系统框架是兼容posix files 和 directories接口标准的。以下的文件系统特性产生了一个功能转换层。1:应用程序提供了一套标准的POSIX标准功能集,这些功能允许它们和文件,设备,目录进行接口。这些接口并不反映从属文件系统的实现类型。2:框架允许在base filesystem下面挂载不同类型的文件系统。3:定位文件信息的机制在原创 2018-01-22 14:03:14 · 424 阅读 · 0 评论 -
rtems 文件系统(9)
随着对文件系统的进一步了解。继续查看手册。IMFS(In-Memory FileSystem)是一个全功能的POSIX文件系统,在memory中保存所有的信息。 每一个文件,设备,hard link 目录都被表示为一种数据结构,叫做jnode。该类型在cpukit/libfs/src/imfs/imfs.h中定义struct IMFS_jnode_tt { rtems_cha原创 2018-01-22 14:56:34 · 399 阅读 · 0 评论 -
rtems 文件系统(10)-jffs2
根据之前的了解。查看flash文件系统该怎么挂载呢?首先在confdefs.h中看到下面的说明/** * @defgroup ConfigFilesystems Filesystems and Mount Table Configuration * * @ingroup Configuration * * Defines to control the file system转载 2018-01-22 17:06:04 · 446 阅读 · 0 评论 -
rtems 文件系统(11)
前一篇文章对 jffs2有了一定的了解,也在rtems的 cpukit/libfs/jffs2中找到了对应的rtems移植好的该文件系统。当然还没有仔细的阅读源码。因为对IMFS部分还有些疑问。 imfs的源码也在cpukit/libfs/imfs中。这里面有各种文件操作函数的文件,初始化的框架跟踪了一次,有了一定了解。但是其他的各个文件比如mknod,mount命令都有对应的文件,但是这些函数是原创 2018-01-23 16:16:37 · 366 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(2)
接着之前的说step6:1:接下来调用 jffs2_build_filesystem 函数去建立文件系统,首先是设置scan flag位,进入scan.c中进行扫描,调用的函数是jffs2_scan_medium其中有个配置是关于nand flash的CONFIG_JFFS2_FS_WRITEBUFFER,我使用的是nor,所以用不到,在网上找到解释如下JFFS2_FS_WRI原创 2018-01-29 17:29:05 · 1208 阅读 · 0 评论 -
rtems 文件系统(15)-jffs2 研究(3)
下面考虑第一个问题JFFS2: Node totlen on flash (0xFFFFFFFF) != totlen from node ref (0x0000000C)这部分在jffs2_mark_node_obsolete中打印,因为调用这个函数的太多了,没法一个个打断点,所以我在报错的地方打个断点,然后看看能不能向后追溯。输入建立文件夹的命令,然后看打印信息向后追溯[/fl原创 2018-01-29 21:35:08 · 1187 阅读 · 1 评论 -
rtems 文件系统(15)-jffs2 研究(8)总结
1:解决了之前的问题后,有发现读写大文件有问题。因此查看了底层驱动,是底层驱动的问题,首先读的时候底层驱动只设置了32个 4byte的阈值,所以读取大块的时候分开读取。写的时候不能一次超过256,不能写到一个页上面。这些都是底层驱动和文件系统联系的问题。因为文件系统是很灵活的。所以底层驱动要和上层操作系统紧密结合。2: 经过验证,现在建立文件夹,删除文件,读写文件,删除文件,建立大的文件,进入原创 2018-02-05 09:48:25 · 674 阅读 · 0 评论