RTEMS IMFS文件根文件系统的初始化过程

boot_card --> bootcard_bsp_libc_helper --> bsp_libc_init --> 


/*
     *  Init the RTEMS libio facility to provide UNIX-like system
     *  calls for use by newlib (ie: provide open, close, etc)
     *  Uses malloc() to get area for the iops, so must be after malloc init
     */
    if (rtems_libio_init_helper)
(*rtems_libio_init_helper)();


其实调用的是
rtems_libio_init


/*
   *  Initialize the base file system infrastructure.
   */


  if (rtems_fs_init_helper)
     (* rtems_fs_init_helper)();


实际调用的是 rtems_filesystem_initialize


是从 rtems_filesystem_mount_table 里面找到第一个需要装载的文件系统


    const rtems_filesystem_mount_table_t configuration_mount_table = {
      #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
        RTEMS_FILESYSTEM_TYPE_DEVFS,
      #elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM)
        RTEMS_FILESYSTEM_TYPE_MINIIMFS,
      #else  /* using IMFS as base filesystem */
        RTEMS_FILESYSTEM_TYPE_IMFS,
      #endif
      RTEMS_FILESYSTEM_READ_WRITE,
      NULL,
      NULL
    };


    const rtems_filesystem_mount_table_t
        *rtems_filesystem_mount_table = &configuration_mount_table;
    const int rtems_filesystem_mount_table_size = 1;


可以看出,根据配置,是希望使用 devfs,还是 miniIMFS ,默认是 IMFS 作为根文件系统。
属性是可读可写,mount为 NULL


函数接着mount到 / 根目录,然后生成  /dev 目录。初始化装载文件系统就结束了。


我觉得。用内存作为基本的根文件系统的好处是稳定,至少系统不会因为存储介质的损坏。而不能
启动,或者影响内核的正常运作,至少最少系统能跑,不会死掉。

你可能感兴趣的:(RTEMS IMFS文件根文件系统的初始化过程)