-- Table structure for table `cache_discovery_migration`
--

CREATE TABLE `cache_discovery_migration` (
  `cid` varchar(255) CHARACTER SET ascii COLLATE ascii_bin NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique cache ID.',
  `data` longblob COMMENT 'A collection of data to cache.',
  `expire` int(11) NOT NULL DEFAULT '0' COMMENT 'A Unix timestamp indicating when the cache entry should expire, or -1 for never.',
  `created` decimal(14,3) NOT NULL DEFAULT '0.000' COMMENT 'A timestamp with millisecond precision indicating when the cache entry was created.',
  `serialized` smallint(6) NOT NULL DEFAULT '0' COMMENT 'A flag to indicate whether content is serialized (1) or not (0).',
  `tags` longtext COMMENT 'Space-separated list of cache tags for this entry.',
  `checksum` varchar(255) CHARACTER SET ascii NOT NULL COMMENT 'The tag invalidation checksum when this entry was saved.',
  PRIMARY KEY (`cid`),
  KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Storage for the cache API.';

--
-- Dumping data for table `cache_discovery_migration`
--

set autocommit=0;
commit;

--
-- Table structure for table `cache_dynamic_page_cache`
--

CREATE TABLE `cache_dynamic_page_cache` (
  `cid` varchar(255) CHARACTER SET ascii COLLATE ascii_bin NOT NULL DEFAULT '' COMMENT 'Primary Key: Unique cache ID.',
  `data` longblob COMMENT 'A collection of data to cache.',
  `expire` int(11) NOT NULL DEFAULT '0' COMMENT 'A Unix timestamp indicating when the cache entry should expire, or -1 for never.',
  `created` decimal(14,3) NOT NULL DEFAULT '0.000' COMMENT 'A timestamp with millisecond precision indicating when the cache entry was created.',
  `serialized` smallint(6) NOT NULL DEFAULT '0' COMMENT 'A flag to indicate whether content is serialized (1) or not (0).',
  `tags` longtext COMMENT 'Space-separated list of cache tags for this entry.',
  `checksum` varchar(255) CHARACTER SET ascii NOT NULL COMMENT 'The tag invalidation checksum when this entry was saved.',
  PRIMARY KEY (`cid`),
  KEY `expire` (`expire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Storage for the cache API.';

--
-- Dumping data for table `cache_dynamic_page_cache`
--

set autocommit=0;
INSERT INTO `cache_dynamic_page_cache` VALUES ('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezo39M5n9f7jpn6hIUc3-1FEShR1yihgiF0YlSzk7jw_ZQ','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:14 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\n    <js-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"nN5w0uKfaNLHntZoYH_dr2nHutlz4KZkbtUAiJH6byPhciE1nQpBPEB0Eg57a7d6yd6zWtYVhg\">\";}}}}',-1,1518157154.525,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezo3mZOYrJf_GeEcd9fzaiQK5OSAvt0plWQhkg5U5X__xc','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:16 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\n    <js-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"7b5YAkug9OOzv_iNclI2taj224S0zO_R64kANIHwfsg5DBi1iXkrlebVl9wh5MGjwioiV6qOLQ\">\";}}}}',-1,1518157156.429,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezo7c393x6KLBk60lxDLfkPJ2_qDZ22wi_J9diIEBchkg4','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Thu, 25 Jan 2018 19:28:52 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\n    <js-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"FafGJCZaz3NpOjtLHKvYG67dBf1SMOWf2tFazw-HyYsoJoqog_lznwnfQzp3Q7cYJ6yi2ST0IQ\">\";}}}}',-1,1516908533.010,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezoH5C4yll1ni44FM9j1-8iHQ8QlQ_UAZtaSf0DhKEtTB0','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:23 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\n    <js-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"B4ec33IRHd3VaRax4E7Ga9b7fCR5CIs8cVVXGcYQWiDf24DQB70FZY9JztB2MHSDp7g4PCP1Lg\">\";}}}}',-1,1518157163.749,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezoJbG65xhnh4TTD4OyRSepu1pj5sV8KYvAlUoyGI1OieQ','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:18 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\n    <js-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"mFttfDNNT_KuERz7v7oXvsiZ9cPnsXVhrcorFASxqZZZd-zrnjZGRaOP_0Q2TuZiO5aQ5OJozA\">\";}}}}',-1,1518157158.079,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezoMBSC_S5i8B-yT6y7wBMHUXXWLyX7WqSgsPjDBuusoXg','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:18:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:8:\"url.path\";i:9;s:17:\"url.path.is_front\";i:10;s:15:\"url.path.parent\";i:11;s:30:\"url.query_args:_wrapper_format\";i:12;s:8:\"url.site\";i:13;s:21:\"user.node_grants:view\";i:14;s:16:\"user.permissions\";i:15;s:10:\"user.roles\";i:16;s:20:\"user.roles:anonymous\";i:17;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Tue, 09 Jan 2018 17:06:59 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\n    <js-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-61433d5024fb6713107569c014564aecbf801a2571277993e9de74717cbf2370\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"0hIVKgPbrQrxTYrQxA0Euew_KakObOFM0L97rTKyACOoRb5jRqQGbga19ZVCHeg_SkFxLwUaMw\">\";}}}}',-1,1515517619.283,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2883'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezoN5G8lT8e37qV3u91fPPl2C4-S4L5dM6vDNNysEW0xco','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:31 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\n    <js-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"5tX7C5slAXmTHpmzF7zjztAKh0tQvTgzCnP4o9Z6PjnJDFKSRgQO1hTEppTkqJKdBtZbuWi0kg\">\";}}}}',-1,1518157171.873,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezoQhSbFQm_j81MB2sPtJRJZF-eDX9hJrTenu6-glizi_Q','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:19 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\n    <js-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"jNJQVX2rFqNiZChpoxOJZOVZCc0oyfm0hKnRLxi7hKzSTZ0hgtUAKlfpOFYsc3DzMQH-xLgisQ\">\";}}}}',-1,1518157159.444,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),('response:[languages:language_content]=en:[languages:language_interface]=en:[request_format]=html:[route]=entity.node.canonical0b1f169e4471d730423c454bcbef0301e39eaf65a9c1ebfbddcb8e6967b37eac:[theme]=yaffs:[timezoQwC7tgYtVnq4pdxQ50GV6LLGyni4Ao8VEMny1rkqPCU','a:5:{s:7:\"#markup\";s:0:\"\";s:9:\"#attached\";s:0:\"\";s:6:\"#cache\";a:3:{s:8:\"contexts\";a:19:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:14:\"request_format\";i:3;s:5:\"route\";i:4;s:32:\"route.menu_active_trails:account\";i:5;s:29:\"route.menu_active_trails:main\";i:6;s:5:\"theme\";i:7;s:8:\"timezone\";i:8;s:3:\"url\";i:9;s:8:\"url.path\";i:10;s:17:\"url.path.is_front\";i:11;s:15:\"url.path.parent\";i:12;s:30:\"url.query_args:_wrapper_format\";i:13;s:8:\"url.site\";i:14;s:21:\"user.node_grants:view\";i:15;s:16:\"user.permissions\";i:16;s:10:\"user.roles\";i:17;s:20:\"user.roles:anonymous\";i:18;s:24:\"user.roles:authenticated\";}s:4:\"tags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:8:\"rendered\";i:71;s:6:\"user:0\";i:72;s:6:\"user:1\";}s:7:\"max-age\";i:-1;}s:17:\"#cache_properties\";a:1:{i:0;s:9:\"#response\";}s:9:\"#response\";O:31:\"Drupal\\Core\\Render\\HtmlResponse\":8:{s:7:\"headers\";O:50:\"Symfony\\Component\\HttpFoundation\\ResponseHeaderBag\":5:{s:23:\"\0*\0computedCacheControl\";a:1:{s:8:\"no-cache\";b:1;}s:10:\"\0*\0cookies\";a:0:{}s:14:\"\0*\0headerNames\";a:3:{s:12:\"content-type\";s:12:\"Content-Type\";s:13:\"cache-control\";s:13:\"Cache-Control\";s:4:\"date\";s:4:\"Date\";}s:10:\"\0*\0headers\";a:3:{s:12:\"content-type\";a:1:{i:0;s:24:\"text/html; charset=UTF-8\";}s:13:\"cache-control\";a:1:{i:0;s:8:\"no-cache\";}s:4:\"date\";a:1:{i:0;s:29:\"Fri, 09 Feb 2018 06:19:27 GMT\";}}s:15:\"\0*\0cacheControl\";a:0:{}}s:10:\"\0*\0content\";s:34419:\"<!DOCTYPE html>\n<html  lang=\"en\" dir=\"ltr\" prefix=\"content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# \">\n  <head>\n    <head-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\n    <title>A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use</title>\n    <css-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\n    <js-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\n  </head>\n  <body class=\"fontyourface path-frontpage page-node-type-page navbar-is-fixed-top has-glyphicons\">\n    <a href=\"#main-content\" class=\"visually-hidden focusable skip-link\">\n      Skip to main content\n    </a>\n    <div style=\"background-color: ; color: \" id=\"environment-indicator\">\n  \n    </div>\n\n              <header class=\"navbar navbar-default navbar-fixed-top\" id=\"navbar\" role=\"banner\">\n              <div class=\"container\">\n            <div class=\"navbar-header\">\n          <div class=\"region region-navigation\">\n          <a class=\"logo navbar-btn pull-left\" href=\"/\" title=\"Home\" rel=\"home\">\n      <img src=\"/themes/custom/yaffs/logo.svg\" alt=\"Home\" />\n    </a>\n      \n  </div>\n\n                          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\"#navbar-collapse\">\n            <span class=\"sr-only\">Toggle navigation</span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n            <span class=\"icon-bar\"></span>\n          </button>\n              </div>\n\n                    <div id=\"navbar-collapse\" class=\"navbar-collapse collapse\">\n            <div class=\"region region-navigation-collapsible\">\n    <nav role=\"navigation\" aria-labelledby=\"block-mainnavigation-menu\" id=\"block-mainnavigation\">\n            <h2 class=\"sr-only\" id=\"block-mainnavigation-menu\">Main navigation</h2>\n\n      \n              <ul class=\"menu nav navbar-nav\">\n                            <li>\n        <a href=\"/\" data-drupal-link-system-path=\"&lt;front&gt;\">Home</a>\n                  </li>\n                        <li>\n        <a href=\"/support\" title=\"Help for Yaffs\" data-drupal-link-system-path=\"node/380\">Support</a>\n                  </li>\n                        <li>\n        <a href=\"/documents\" data-drupal-link-system-path=\"documents\">Documents</a>\n                  </li>\n                        <li>\n        <a href=\"/get-yaffs\" data-drupal-link-system-path=\"node/382\">Download</a>\n                  </li>\n                        <li>\n        <a href=\"/about-us\" data-drupal-link-system-path=\"node/325\">About us</a>\n                  </li>\n                        <li>\n        <a href=\"/contact\" data-drupal-link-system-path=\"node/73\">Contact</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n<div class=\"search-block-form block block-search block-search-form-block\" data-drupal-selector=\"search-block-form\" id=\"block-searchform\" role=\"search\">\n  \n    \n      <form action=\"/search/node\" method=\"get\" id=\"search-block-form\" accept-charset=\"UTF-8\">\n  <div class=\"form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group\">\n      <label for=\"edit-keys\" class=\"control-label sr-only\">Search</label>\n  \n  \n  <div class=\"input-group\"><input title=\"Enter the terms you wish to search for.\" data-drupal-selector=\"edit-keys\" class=\"form-search form-control\" placeholder=\"Search\" type=\"search\" id=\"edit-keys\" name=\"keys\" value=\"\" size=\"15\" maxlength=\"128\" data-toggle=\"tooltip\" /><span class=\"input-group-btn\"><button type=\"submit\" value=\"Search\" class=\"button js-form-submit form-submit btn-primary btn icon-only\" name=\"\"><span class=\"sr-only\">Search</span><span class=\"icon glyphicon glyphicon-search\" aria-hidden=\"true\"></span></button></span></div>\n\n  \n  \n  </div>\n<div class=\"form-actions form-group js-form-wrapper form-wrapper\" data-drupal-selector=\"edit-actions\" id=\"edit-actions\"></div>\n\n</form>\n\n  </div>\n\n  </div>\n\n        </div>\n                    </div>\n          </header>\n  \n  <div role=\"main\" class=\"main-container container js-quickedit-main-content\">\n    <div class=\"row\">\n\n            \n            \n                  <section class=\"col-sm-12\">\n\n                                      <div class=\"highlighted\">  <div class=\"region region-highlighted\">\n    <drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\n\n  </div>\n</div>\n                  \n                \n                \n                                      \n                  \n                          <a id=\"main-content\"></a>\n            <div class=\"region region-content\">\n        <h1 class=\"page-header\"><span property=\"schema:name\">A Robust Flash File System Since 2002</span>\n</h1>\n\n<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>  <article role=\"article\" about=\"/home\" typeof=\"schema:WebPage\" class=\"page full clearfix\">\n\n  \n      <span property=\"schema:name\" content=\"A Robust Flash File System Since 2002\" class=\"hidden\"></span>\n\n\n  \n  <div class=\"content\">\n    \n            <div property=\"schema:text\" class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p>Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices, avionics, and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.</p>\n<p>&nbsp;</p>\n</div>\n      \n  </div>\n\n</article>\n\n<section id=\"block-yaffsinspace\" class=\"panel yaffs-shout well block block-block-content block-block-content9f676777-54d9-40d2-86dd-174fff14ab1a clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h3><em>New!</em> Yaffs in space!</h3>\n<p><strong><img alt=\"Tess satellite\" data-entity-type=\"file\" data-entity-uuid=\"f06319f1-b6ac-41e2-a70d-a4c4da605b87\" height=\"246\" src=\"/sites/default/files/inline-images/tess_satellite_0.gif\" width=\"347\" class=\"align-right\" />NASA TESS Mission </strong>This <strong>Transiting Exoplanet Survey Satellite (TESS)</strong> will discover thousands of exoplanets in orbit around the brightest stars in the sky.</p>\n<p>It is a project regularly using our Yaffs File System to store incoming data and preserve it, in the rigours of the space environment, before sending it back to Earth.</p>\n<p>In a two-year survey of the solar neighborhood, TESS will monitor more than 200,000 stars for temporary drops in brightness caused by planetary transits. This first-ever spaceborne all-sky transit survey will identify planets ranging from Earth-sized to gas giants, around a wide range of stellar types and orbital distances. No ground-based survey can achieve this feat.</p>\n<p>Some File Systems are not robust enough to be suitable for such exacting work.<br />\n </p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        \n                              <div class=\"front_highlight row\">\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-1\">\n    <section id=\"block-choosingyaffs\" class=\"block block-block-content block-block-contentae8f54b9-5315-4995-a49e-c0780f3a88cc clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/documents/considerations-choosing-flash-file-system\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/choosing_yaffs_0.jpg?itok=YuV5Z__e\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Choosing Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-2\">\n    <section id=\"block-frontimagehighlight2\" class=\"block block-block-content block-block-contentfa53fc80-f3c4-4d6e-b947-0a3bcd479480 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/yaffs-action\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/atm_1.jpg?itok=HfIny6EH\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"ATM\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n              <div class=\"col-sm-4\">\n                    <div class=\"region region-front-highlight-3\">\n    <section id=\"block-downloadyaffs\" class=\"block block-block-content block-block-contenteed71eb7-98b2-4109-aabe-7718283459ad clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\"><a href=\"/get-yaffs\">\n<article class=\"embedded-entity\">\n<img src=\"/sites/default/files/styles/max_325x325/public/2017-06/download_now_0.jpg?itok=XdRx8zkI\" width=\"325\" height=\"325\" alt=\"Thumbnail\" title=\"Download Yaffs\" class=\"img-responsive\" />\n</article>\n</a> </div>\n      \n  </section>\n\n\n  </div>\n\n              </div>\n            </div>\n                        </section>\n\n                </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-1\">\n        <div class=\"container\">\n        \n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-2\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-2\">\n    <section class=\"views-element-container block block-views block-views-blockyaffs-user-logos-block-1 clearfix\" id=\"block-views-block-yaffs-user-logos-block-1\">\n  \n    \n\n      <div class=\"form-group\"><div class=\"view view-yaffs-user-logos view-id-yaffs_user_logos view-display-id-block_1 js-view-dom-id-8a35fcda02584f84c79a8d5e2576f68f0216117953eb3ee7556ddd61dbbc1289\">\n  \n    \n      \n      <div class=\"view-content\">\n      <div id=\"views-bootstrap-yaffs-user-logos-block-1\"  class=\"grid views-view-grid horizontal\">\n            <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/designA_logo.png?itok=5VWxByrk\" width=\"200\" height=\"141\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/eaton_logo.png?itok=kExm8d-W\" width=\"200\" height=\"84\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/LANCOM_Logo_4c.png?itok=ZIDg8yYt\" width=\"200\" height=\"50\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/bernina_international_logo.png?itok=G8DeIWtW\" width=\"200\" height=\"30\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n          <div class=\"row\">\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/gallagher_logo.png?itok=lQyDJeN1\" width=\"200\" height=\"65\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/android_logo.png?itok=MShHoIK7\" width=\"170\" height=\"71\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n                  <div class=\"col col-xs-12 col-sm-6 col-md-3 col-lg-3 \">\n            <div class=\"views-field views-field-field-yaffs-user-logo\"><div class=\"field-content\"><a href=\"/yaffs-action\">  <img src=\"/sites/default/files/styles/small/public/logos/leica_logo.png?itok=Ne2u8w3-\" width=\"200\" height=\"130\" alt=\"\" typeof=\"foaf:Image\" class=\"img-responsive\" />\n\n\n</a></div></div>\n          </div>\n              </div>\n      </div>\n\n    </div>\n  \n            <div class=\"view-footer\">\n      <a class=\"btn btn-default\" href=\"/yaffs-action\">Who uses Yaffs? Read more...</a>\n    </div>\n    </div>\n</div>\n\n  </section>\n\n\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-3\">\n        <div class=\"container\">\n          <div class=\"region region-front-pane-3\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n  <div class=\"container-fluid front-pane-4\">\n        <div class=\"container\" >\n          <div class=\"region region-front-pane-4\">\n    <drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\n  </div>\n\n    </div>\n  </div>\n\n    <div class=\"container-fluid front-pane-5\">\n                <div class=\"container\" >\n              <div class=\"region region-front-pane-5\">\n    <section id=\"block-frontpageprimeryaffs\" class=\"block block-block-content block-block-contente7a8d2de-4fbb-4680-9e18-fe4d8337f1d6 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<h1>Flash file systems primer</h1>\n<h2>Background &amp; basics</h2>\n<h3><span>What is a </span><span>F</span><span>lash </span><span>F</span><span>ile </span><span>S</span><span>ystem</span>?</h3>\n<p><span>A <span>Flash File System</span> stores data on flash memory, rather than a hard drive. Flash is used because it’s faster, much more tolerant of physical stress and takes less power. A <span>flash filesystem</span> is used to manage the data and get the best out of flash memory.</span></p>\n<p><span>As two examples, a flash memory chip needs to be erased in blocks before it is rewritten and a flash file system will manage that; flash memory has a limited number of writes per block so many flash file systems incorporate a <span>wear levelling</span> mechanism to ensure the writes are spread out.</span></p>\n<p><span>A flash file system is most useful as a part of an embedded system,. As a developer, you <em>can</em>&nbsp;read from and write directly to your Flash memory on an embedded system, but unless your use is extremely limited, you\'ll probably find that you come up against problems that Flash file systems have already solved.</span></p>\n<h3>What are NAND flash &amp; NOR flash?</h3>\n<p><span>These are the two fundamental flash architectures and have very different characteristics in performance, reliability, erase cycles, life span, and price. They also differ fundamentally from hard disk drives, and so need specialised handling.</span></p>\n<table>\n<tbody>\n <tr>\n  <td>\n  <p>&nbsp;</p>\n   </td>\n  <td>\n  <p>NAND flash</p>\n   </td>\n  <td>\n  <p>NOR flash</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage density</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Read performance</p>\n   </td>\n  <td>\n  <p>Fast</p>\n   </td>\n  <td>\n  <p>Fast (may be slowed by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Write performance</p>\n   </td>\n  <td>\n  <p>Faster</p>\n   </td>\n  <td>\n  <p>Slower (may be slowed further by serial access)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Erase performance</p>\n   </td>\n  <td>\n  <p>Faster (low ms typically)</p>\n   </td>\n  <td>\n  <p>Slower (possibly seconds)</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Storage reliability</p>\n   </td>\n  <td>\n  <p>Lower (without management)</p>\n   </td>\n  <td>\n  <p>Better</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Life span</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n </tr>\n <tr>\n  <td>\n  <p>Price</p>\n   </td>\n  <td>\n  <p>Lower</p>\n   </td>\n  <td>\n  <p>Higher</p>\n   </td>\n </tr>\n</tbody>\n</table>\n<p><span>Yaffs is both an <span>embedded NAN</span><span>D flash file system</span> and an <span>embedded N</span><span>OR Flash file system</span>. It can handle SLC, TLC and MLC NAND. It also works on MLC and SLC NOR. And it can work with parallel or serial access including Serial Peripheral Bus (SPI).</span></p>\n<h3>What special functions does a <span>file system </span><span>for flash</span> include?</h3>\n<p><span>As well as the normal file system functions, a <span>flash file system embedded</span> in hardware should help the device to start and stop quickly and deal well with losing power with no warning, without corrupting the data; and, manage the foibles of flash memory, protecting the stored data with extreme reliability. (Read our paper <a href=\"/documents/considerations-choosing-flash-file-system\">Considerations in Choosing a Flash File System</a>.)</span></p>\n<p><span><span>To these ends, an embedded flash file system must employ extra steps to achieve these such as using log structuring, rather than traditional file structuring plus a flash translation layer; manage power loss and recovery; include flash memory wear levelling; deal with the unreliability of flash from read and write disturbs, by using error correction (ECC), bad block remapping, over provision and flash block refreshing; ensure it’s ready to write fast by using garbage collection and flash block erase to prepare; and manage writing while avoiding write amplification. </span></span></p>\n<h4>What is a log-structured file system?</h4>\n<p><span>Log structuring means that data is written to the file system as a sequence of changes to the file system. This has the advantage that there is less overhead, and so it\'s faster than a non-log-structured system. More important though is that it is more robust against power failure. It also means that a file may be fragmented. For hard drives, fragmentation can mean much slower access due to the time required to mechanically move the read heads around the disk, but flash memory has no moving parts so there is no overhead for flash.</span></p>\n<p><span>Yaffs is log structured a <span>flash file system </span><span>architecture</span> which is faster and more robust than the alternatives.</span></p>\n<h4>What is a <span>Flash Translation Layer</span> (FTL) ?</h4>\n<p><span>It is sometimes desirable to use regular block file systems (such as FAT) with flash memory. In such cases, a Flash Translation Layer presents flash memory or a flash file system as if it\'s an ordinary hard drive.</span></p>\n<p><span>An FTL is an incomplete storage solution it still requires a file system. This makes two layers where data can be damaged and lost: in the FTL and in the <span>flash memory </span><span>file system</span>.</span></p>\n<p><span>True <span>file systems for flash memory</span>, such as Yaffs, do not use FTLs. They deal directly with the idiosyncrasies of flash, providing a faster and more reliable solution.</span></p>\n<h4>What is power loss recovery?</h4>\n<p><span>When power to any storage device is suddenly lost, the device can end up in an unknown state and may have damaged areas. Most file systems have to work hard to ensure that they are in a consistent state after power loss. <span>E</span><span>mbedded file systems</span> <span>for flash</span> may make allowances for unscheduled power loss with a recovery process.</span></p>\n<p><span>Yaffs is built with fault tolerance as a guiding principle and so is designed so power loss is considered a normal event.</span></p>\n<h4>What is <span>wear levelling</span>?</h4>\n<p><span>Flash chips wear out. Each time a part of the flash memory is erased and written, it is slightly damaged. <span>Embedded f</span><span>lash file systems</span> note the danger, and sometimes try to spread the damage rather than having it concentrated in one region, so prolonging the life of the memory and the life of the device.</span></p>\n<p><span>Yaffs is designed so that extra <span>wear leveling</span> is unnecessary. Instead, it’s automatically <span>wear levelling</span> because of the log structure.</span></p>\n<h4>What is flash read disturb? What is flash write disturb?</h4>\n<p><span><a href=\"/documents/yaffs-nand-flash-failure-mitigation\">NAND flash may experience degradation or loss of data</a> owing to reads of pages in the same block or data changes in neighbouring blocks of the NAND device. This is particularly true for MLC NAND.</span></p>\n<p><span>Yaffs uses block refreshing to deal with such problems.</span></p>\n<h4>What is flash error correction/flash ECC?</h4>\n<p><span>There are ways in which flash memory can be corrupted – for instance F-N tunnelling problems and leaky oxide layers. See our <a href=\"/documents/yaffs-nand-flash-failure-mitigation\">detailed discussion of flash memory problems</a>.</span></p>\n<p><span>But every bit counts, and especially if it\'s part of critical data or essential to the correct working of a system. Flash error correction keeps track of a section of memory to tell if there\'s corruption, and provides ways to correct these small errors.</span></p>\n<p><span>Yaffs can use hardware or software based ECC.</span></p>\n<h4>What is bad-block remapping?</h4>\n<p><span>File systems are built upon storing data on physical media. But all media suffers deterioration. Some hardware or <span>flash media </span><span>file systems</span> keep lists of damaged regions and behind the scenes, substitute known good ones in their place.</span></p>\n<p><span>Because of the way that Yaffs works, there\'s no need for bad block remapping because it isn’t a block structured file system.</span></p>\n<h4>What is <span>o</span><span>ver-provisioning</span> ?</h4>\n<p><span>Knowing that the media will degrade and suffer errors, and needing space to alter data because of the nature of flash memory, sometimes a <span>flash memory based </span><span>file system</span> puts aside a portion of the media for this use. This is <span>overprovisioning</span>. Often this space used when remapping bad blocks.</span></p>\n<p><span>Because Yaffs is log structured, it has the advantage that it does not need <span>over provision</span><span>ing</span>, making more memory available to store data.</span></p>\n<h4>What is flash block refreshing?</h4>\n<p><span>To counteract the problems of unreliable flash memory – for instance errors due to read and write disturbs – a flash filesystem can refresh the memory, by making a new copy of a block.</span></p>\n<p><span>Yaffs includes flash block refreshing.</span></p>\n<h4>What is flash garbage collection?</h4>\n<p><span>When a file is deleted, or a part of a file is overwritten, file systems often simply mark the flash space as deleted, rather than removing it. Later they reclaim the space for reuse. This is garbage collection.</span></p>\n<p><span>Yaffs has garbage collection to maximise the amount of data the file system can store.</span></p>\n<h4>What is flash block erase?</h4>\n<p><span>Data must be written into blank areas of the flash chip, but erasing takes time. Rather than erase and write at the same time, in order to speed writes, NAND and <span>NOR flash file systems</span> can prepare blocks for later use. This is not usually necessary for other storage media.</span></p>\n<p><span>As part of garbage collection, Yaffs uses a block erase strategy.</span></p>\n<h4>What is flash write amplification ?</h4>\n<p><span>In many block-based flash file systems, when data changes the new data must be written to the disk, and then the old data must be marked as invalid. A small change to the data can have consequences that propagate involving writing to the memory twice or more as the old data is cleaned up by garbage collection and files are organised to take the minimum amount of space. This is write amplification - a single small write causing a cascade of writes (and erases) of whole blocks.</span></p>\n<p><span>Yaffs avoids much of this problem by being log structured, meaning that flash memory is slower to reach it\'s maximum number of cycles, while writing is faster.</span></p>\n<h2>How does Yaffs work?</h2>\n<p><span>You can find full details in our paper <a href=\"/documents/how-yaffs-works\">How Yaffs Works</a>&nbsp;but briefly, here\'s how it works.</span></p>\n<p><span>It\'s a log-structured filing system. This also ensures that Yaffs is wear-levelling is built into the design because no one part of the flash memory is used any more than another.</span></p>\n<p><span>A Yaffs object is anything that Yaffs stores - for instance a file or a directory.</span></p>\n<p><span>The memory in NAND flash is arranged in pages. A page is the unit of allocation and programming. In Yaffs, the unit of allocation is called the chunk. Typically a chunk will be the same as a NAND page, but there is flexibility to use chunks which map to multiple pages (eg. A system may have two NAND chips in parallel requiring 2x2048 = 4096 byte chunks) . This distinction gives a lot of flexibility in how the system can be configured.</span></p>\n<p><span>A fixed but configurable number of chunks form a block which is the unit of erasure.</span></p>\n<p><span>NAND flash is shipped with bad blocks and further blocks may go bad during the operation of the device so Yaffs detects and marks bad blocks.</span></p>\n<p><span>NAND flash also typically requires the use of some sort of error detection and correction code (ECC). Yaffs can either use existing ECC logic or provide its own.</span></p>\n<p><span>Yaffs maintains data in RAM about the file system, but this is not needed for Yaffs to work - so the device can safely lose power at any point without data corruption.</span></p>\n<p><span>Here\'s how the Yaffs filesystem works to ensure data safety and a very fast startup... At regular points and on controlled shutdown, checkpoint blocks are written to the flash memory, containing all the data to quickly rebuild the file system. Under usual circumstances this checkpoint is used when a device is started, to very quickly rebuild the RAM data about the file system. If the checkpoint is determined to be corrupted, or if the user requested then the file system is rebuilt by scanning.</span></p>\n<p><span>To do this, Yaffs makes a prescan, to find the sequence numbers for blocks. Then it scans through blocks backwards to build up the list of chunks that make up objects. It speeds up this process by using Block Summaries, which are collections of all the tags in a data in a block. (But it\'s still always possible to go back to the chunks themselves, to find the tags, if a summary is missing or damaged.)</span></p>\n<p><span>And tags are how Yaffs tells that a chunk belongs to a particular object.</span></p>\n<p><span>Tags are also how Yaffs knows which chunks make up the current version of an object... Because the file system is log structured, if an object has been updated, only the latest chunks are used, giving the correct version of the object. A full description of the process is available in the technical documentation, and of course you can browse the code to see exactly how it all works; there\'s a lot more to tags, the metadata that they can hold, how they are stored, and how tags are used to link together objects into a file system with a POSIX interface.</span></p>\n<p><span>And of course that\'s not the end of the story. There\'s caching to deal with repeated small changes to data. There\'s garbage collection to let space be re-used, and Yaffs deals with collecting garbage differently depending on whether there\'s lots of free space or only a little. And part of making Yaffs a high performance flash file system is to make sure that re-useable blocks are erased well before they are needed, so that writing involves only a single operation. There\'s lazy loading to reduce scanning time. And all of this is built in a portable way, so that Yaffs can be configured to match almost any hardware, and can be ported to any operating system, or work on bare metal without an operating system. There\'s a test harness which is used to subject Yaffs to power failure, and ensure it works even with external data corruption. That\'s what makes it robust enough to send into space and to handle hundreds of terabytes of mission critical data.</span></p>\n<h4>Why is Yaffs special as an embedded flash file system?</h4>\n<p><span>Yaffs has been in use since 2002, and so it is hardened. It has been used in everything from phones to sewing machines to satellites. It is popular with Aerospace companies, and firms managing large infrastructure and in Point-of-Sale (POS) equipment (where customer feedback is very rapid!) It has been used in extreme conditions where it must not lose data, and where there is no chance for maintenance. It\'s been used for very large file systems up to 190TB. It\'s been used for safety critical applications, and millions of consumer devices.</span></p>\n<p><span>We carry out testing in a <a href=\"/documents/yaffs-robustness-and-testing\">rig which can simulate random power failures</a> and proved its reliability after tens to hundreds of millions of power failures.&nbsp;It\'s designed with an understanding of the constraints of flash memory and for speed.</span></p>\n<p><span>Yaffs works on multiple operating systems – Linux, VxWorks, Windows CE, eCos. - and also directly on bare metal, with no operating system. And it\'s easy to integrate into your RTOS or application using the Yaffs Direct Interface. It works with multiple types of flash memory - NAND &amp; NOR, SLC, MLC &amp; TLC.&nbsp;It\'s endian neutral. It\'s been used with 32-bit and 64-bit CPUs including MIPS, 68000, ARM, ColdFire, PowerPC and x86 variants. Yaffs has even been used with various DSP architectures! And it\'ll work with 16-bit with some tuning. So it can be configured to work with your design and the flash geometry that you need.</span></p>\n<p><span>And it\'s a <span>free embedded flash file system - </span><span>it’s open</span> <span>source</span>! <a href=\"/get-yaffs\">Grab the GPL version now</a>! Check out our the active community. And that\'s not the whole story - there are lots more reasons that make Yaffs special.&nbsp;</span></p>\n<p>&nbsp;</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n        </div>\n    </div>\n\n      <footer class=\"footer container\" role=\"contentinfo\">\n        <div class=\"primary_footer row\">\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col1\">\n    <section id=\"block-yaffs-block-6\" class=\"block block-block-content block-block-content6c2d4b45-4dba-4b2d-8b9f-76701bf27533 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<ul class=\"fa-ul\">\n<li><i class=\"fa-li fa fa-phone\"></i>+44 (0)1223 811679</li>\n<li><i class=\"fa-li fa fa-envelope\"></i><a href=\"denied:mailto:info@aleph1.co.uk?Subject=Website contact\" target=\"_top\">info@aleph1.co.uk</a></li>\n</ul>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                \n            </div>\n            <div class=\"col-sm-3\">\n                  <div class=\"region region-footer-col4\">\n    <section id=\"block-footerlegal\" class=\"block block-block-content block-block-content78ab593d-35b6-4772-a141-30216e7fcbb2 clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-right\">&nbsp;<a href=\"/legal\">Legal &amp; Cookies</a></p>\n</div>\n      \n  </section>\n\n<section id=\"block-cookieinfo\" class=\"block block-block-content block-block-content4848c58d-90df-4819-81d8-0f9568eeeaac clearfix\">\n  \n    \n\n      \n            <div class=\"field field--name-body field--type-text-with-summary field--label-hidden field--item\">\n<p class=\"text-align-justify\"><br />\nWe use <a href=\"/legal\">cookies on this site</a>. By using it, you are giving us consent to set cookies.</p>\n</div>\n      \n  </section>\n\n\n  </div>\n\n            </div>\n        </div>\n        <div class = \"secondary_footer row\">\n            <div class=\"col-sm-12\">\n                <div class=\"region region-footer\">\n    <nav role=\"navigation\" aria-labelledby=\"block-yaffs-account-menu-menu\" id=\"block-yaffs-account-menu\">\n            <h2 class=\"sr-only\" id=\"block-yaffs-account-menu-menu\">User account menu</h2>\n\n      \n              <ul class=\"menu nav navbar-nav navbar-right\">\n                            <li>\n        <a href=\"/user/login\" data-drupal-link-system-path=\"user/login\">Log in</a>\n                  </li>\n        </ul>\n  \n\n\n  </nav>\n\n  </div>\n\n            </div>\n        </div>\n    </footer>\n  \n    \n    <js-bottom-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\n  </body>\n</html>\n\";s:10:\"\0*\0version\";s:3:\"1.0\";s:13:\"\0*\0statusCode\";i:200;s:13:\"\0*\0statusText\";s:2:\"OK\";s:10:\"\0*\0charset\";N;s:23:\"\0*\0cacheabilityMetadata\";O:35:\"Drupal\\Core\\Cache\\CacheableMetadata\":3:{s:16:\"\0*\0cacheContexts\";a:17:{i:0;s:26:\"languages:language_content\";i:1;s:28:\"languages:language_interface\";i:2;s:5:\"route\";i:3;s:32:\"route.menu_active_trails:account\";i:4;s:29:\"route.menu_active_trails:main\";i:5;s:5:\"theme\";i:6;s:8:\"timezone\";i:7;s:8:\"url.path\";i:8;s:17:\"url.path.is_front\";i:9;s:15:\"url.path.parent\";i:10;s:30:\"url.query_args:_wrapper_format\";i:11;s:8:\"url.site\";i:12;s:21:\"user.node_grants:view\";i:13;s:16:\"user.permissions\";i:14;s:10:\"user.roles\";i:15;s:20:\"user.roles:anonymous\";i:16;s:24:\"user.roles:authenticated\";}s:12:\"\0*\0cacheTags\";a:73:{i:0;s:16:\"block_content:18\";i:1;s:16:\"block_content:23\";i:2;s:16:\"block_content:25\";i:3;s:16:\"block_content:27\";i:4;s:16:\"block_content:28\";i:5;s:16:\"block_content:29\";i:6;s:16:\"block_content:30\";i:7;s:15:\"block_content:7\";i:8;s:18:\"block_content_view\";i:9;s:10:\"block_view\";i:10;s:32:\"config:block.block.choosingyaffs\";i:11;s:29:\"config:block.block.cookieinfo\";i:12;s:32:\"config:block.block.downloadyaffs\";i:13;s:30:\"config:block.block.footerlegal\";i:14;s:39:\"config:block.block.frontimagehighlight2\";i:15;s:32:\"config:block.block.frontpagehero\";i:16;s:39:\"config:block.block.frontpageprimeryaffs\";i:17;s:33:\"config:block.block.mainnavigation\";i:18;s:35:\"config:block.block.mainnavigation_2\";i:19;s:29:\"config:block.block.searchform\";i:20;s:31:\"config:block.block.sitebranding\";i:21;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";i:22;s:66:\"config:block.block.views_block__yaffs_admin_recent_content_block_1\";i:23;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";i:24;s:56:\"config:block.block.views_block__yaffs_user_logos_block_1\";i:25;s:37:\"config:block.block.yaffs_account_menu\";i:26;s:33:\"config:block.block.yaffs_block_10\";i:27;s:32:\"config:block.block.yaffs_block_5\";i:28;s:32:\"config:block.block.yaffs_block_6\";i:29;s:32:\"config:block.block.yaffs_block_8\";i:30;s:32:\"config:block.block.yaffs_block_9\";i:31;s:36:\"config:block.block.yaffs_breadcrumbs\";i:32;s:32:\"config:block.block.yaffs_content\";i:33;s:29:\"config:block.block.yaffs_help\";i:34;s:36:\"config:block.block.yaffs_local_tasks\";i:35;s:33:\"config:block.block.yaffs_messages\";i:36;s:35:\"config:block.block.yaffs_page_title\";i:37;s:32:\"config:block.block.yaffs_user_21\";i:38;s:31:\"config:block.block.yaffsinspace\";i:39;s:17:\"config:block_list\";i:40;s:24:\"config:color.theme.yaffs\";i:41;s:47:\"config:field.storage.node.field_yaffs_user_logo\";i:42;s:30:\"config:filter.format.full_html\";i:43;s:29:\"config:filter.format.raw_html\";i:44;s:24:\"config:image.style.small\";i:45;s:22:\"config:search.settings\";i:46;s:26:\"config:system.menu.account\";i:47;s:23:\"config:system.menu.main\";i:48;s:18:\"config:system.site\";i:49;s:34:\"config:views.view.yaffs_user_logos\";i:50;s:7:\"file:40\";i:51;s:7:\"file:43\";i:52;s:7:\"file:44\";i:53;s:7:\"file:45\";i:54;s:7:\"file:46\";i:55;s:7:\"file:47\";i:56;s:7:\"file:48\";i:57;s:7:\"media:5\";i:58;s:7:\"media:8\";i:59;s:7:\"media:9\";i:60;s:8:\"node:397\";i:61;s:8:\"node:398\";i:62;s:8:\"node:399\";i:63;s:8:\"node:400\";i:64;s:8:\"node:401\";i:65;s:8:\"node:457\";i:66;s:8:\"node:460\";i:67;s:8:\"node:487\";i:68;s:9:\"node_list\";i:69;s:9:\"node_view\";i:70;s:6:\"user:0\";i:71;s:6:\"user:1\";i:72;s:8:\"rendered\";}s:14:\"\0*\0cacheMaxAge\";i:-1;}s:14:\"\0*\0attachments\";a:6:{s:7:\"library\";a:11:{i:0;s:14:\"core/html5shiv\";i:1;s:11:\"system/base\";i:2;s:15:\"bootstrap/theme\";i:3;s:20:\"yaffs/global-styling\";i:4;s:23:\"yaffs/bootstrap-scripts\";i:5;s:19:\"yaffs/yaffs-helpers\";i:6;s:17:\"bootstrap/popover\";i:7;s:17:\"bootstrap/tooltip\";i:8;s:18:\"views/views.module\";i:9;s:18:\"views/views.module\";i:10;s:50:\"environment_indicator/drupal.environment_indicator\";}s:9:\"html_head\";a:20:{i:0;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:5:\"title\";s:7:\"content\";s:84:\"A Robust Flash File System Since 2002 | Yaffs - A Flash File System for embedded use\";}}i:1;s:5:\"title\";}i:1;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"shortlink\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:9:\"shortlink\";}i:2;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:2:{s:3:\"rel\";s:9:\"canonical\";s:4:\"href\";s:18:\"https://yaffs.net/\";}}i:1;s:13:\"canonical_url\";}i:3;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:13:\"news_keywords\";s:7:\"content\";s:17:\"Flash File System\";}}i:1;s:13:\"news_keywords\";}i:4;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:11:\"description\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:11:\"description\";}i:5;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"abstract\";s:7:\"content\";s:352:\"Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices and critical infrastructure. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.\";}}i:1;s:8:\"abstract\";}i:6;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"keywords\";s:7:\"content\";s:82:\"flash File System, flash, file System, flash storage, NAND flash, NOR flash, Yaffs\";}}i:1;s:8:\"keywords\";}i:7;a:2:{i:0;a:3:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:1:{s:7:\"charset\";s:5:\"utf-8\";}s:7:\"#weight\";i:-1000;}i:1;s:24:\"system_meta_content_type\";}i:8;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:9:\"Generator\";s:7:\"content\";s:33:\"Drupal 8 (https://www.drupal.org)\";}}i:1;s:21:\"system_meta_generator\";}i:9;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:15:\"MobileOptimized\";s:7:\"content\";s:5:\"width\";}}i:1;s:15:\"MobileOptimized\";}i:10;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:16:\"HandheldFriendly\";s:7:\"content\";s:4:\"true\";}}i:1;s:16:\"HandheldFriendly\";}i:11;a:2:{i:0;a:2:{s:4:\"#tag\";s:4:\"meta\";s:11:\"#attributes\";a:2:{s:4:\"name\";s:8:\"viewport\";s:7:\"content\";s:37:\"width=device-width, initial-scale=1.0\";}}i:1;s:8:\"viewport\";}i:12;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1151\";}i:13;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:124:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1152\";}i:14;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:122:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1153\";}i:15;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:123:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBold-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1149\";}i:16;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:129:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1150\";}i:17;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:125:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1148\";}i:18;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:126:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSerifRegular-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1147\";}i:19;a:2:{i:0;a:3:{s:5:\"#type\";s:8:\"html_tag\";s:4:\"#tag\";s:4:\"link\";s:11:\"#attributes\";a:3:{s:3:\"rel\";s:10:\"stylesheet\";s:4:\"href\";s:128:\"https://yaffs.net/sites/default/files/fontyourface/fontsquirrel/LiberationSansBoldItalic-fontfacekit/fontyourface-stylesheet.css\";s:5:\"media\";s:3:\"all\";}}i:1;s:21:\"fontsquirrel-api-1154\";}}s:14:\"html_head_link\";a:2:{i:0;a:1:{i:0;a:3:{s:3:\"rel\";s:13:\"shortcut icon\";s:4:\"href\";s:38:\"/sites/default/files/yaffs_favicon.png\";s:4:\"type\";s:9:\"image/png\";}}i:1;a:2:{i:0;a:2:{s:3:\"rel\";s:8:\"revision\";s:4:\"href\";s:5:\"/home\";}i:1;b:1;}}s:12:\"placeholders\";a:4:{s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__yaffs_documents_highlights_block_1&amp;1=full&amp;2\" token=\"bZIW0U1_F_84C39HtNdqosgCfD9uISVXB9SoG_DMDYw\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__yaffs_documents_highlights_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__yaffs_documents_highlights_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__yaffs_documents_highlights_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:240:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=views_block__highlighted_yaffs_features_block_1&amp;1=full&amp;2\" token=\"gB3-IGC5aZ2ydGwcNwWipMPBfoe83OMhTnU9K538T4I\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:47:\"views_block__highlighted_yaffs_features_block_1\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:66:\"config:block.block.views_block__highlighted_yaffs_features_block_1\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:47:\"views_block__highlighted_yaffs_features_block_1\";i:1;s:4:\"full\";i:2;N;}}}s:210:\"<drupal-render-placeholder callback=\"Drupal\\block\\BlockViewBuilder::lazyBuilder\" arguments=\"0=yaffs_local_tasks&amp;1=full&amp;2\" token=\"w23j7iE363xxUJCXKAtJQdcjG4ZZoQ4QEIV26-ZdK5w\"></drupal-render-placeholder>\";a:2:{s:6:\"#cache\";a:4:{s:4:\"keys\";a:3:{i:0;s:11:\"entity_view\";i:1;s:5:\"block\";i:2;s:17:\"yaffs_local_tasks\";}s:8:\"contexts\";a:3:{i:0;s:28:\"languages:language_interface\";i:1;s:5:\"theme\";i:2;s:16:\"user.permissions\";}s:4:\"tags\";a:2:{i:0;s:10:\"block_view\";i:1;s:36:\"config:block.block.yaffs_local_tasks\";}s:7:\"max-age\";i:-1;}s:13:\"#lazy_builder\";a:2:{i:0;s:42:\"Drupal\\block\\BlockViewBuilder::lazyBuilder\";i:1;a:3:{i:0;s:17:\"yaffs_local_tasks\";i:1;s:4:\"full\";i:2;N;}}}s:190:\"<drupal-render-placeholder callback=\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\" arguments=\"0\" token=\"_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA\"></drupal-render-placeholder>\";a:1:{s:13:\"#lazy_builder\";a:2:{i:0;s:57:\"Drupal\\Core\\Render\\Element\\StatusMessages::renderMessages\";i:1;a:1:{i:0;N;}}}}s:14:\"drupalSettings\";a:2:{s:9:\"bootstrap\";a:25:{s:28:\"forms_has_error_value_toggle\";i:1;s:15:\"modal_animation\";i:1;s:14:\"modal_backdrop\";s:4:\"true\";s:14:\"modal_keyboard\";i:1;s:10:\"modal_show\";i:1;s:10:\"modal_size\";s:0:\"\";s:15:\"popover_enabled\";i:1;s:17:\"popover_animation\";i:1;s:17:\"popover_container\";s:4:\"body\";s:15:\"popover_content\";s:0:\"\";s:13:\"popover_delay\";s:1:\"0\";s:12:\"popover_html\";i:0;s:17:\"popover_placement\";s:5:\"right\";s:16:\"popover_selector\";s:0:\"\";s:13:\"popover_title\";s:0:\"\";s:15:\"popover_trigger\";s:5:\"click\";s:25:\"popover_trigger_autoclose\";i:1;s:15:\"tooltip_enabled\";i:1;s:17:\"tooltip_animation\";i:1;s:17:\"tooltip_container\";s:4:\"body\";s:13:\"tooltip_delay\";s:1:\"0\";s:12:\"tooltip_html\";i:0;s:17:\"tooltip_placement\";s:9:\"auto left\";s:16:\"tooltip_selector\";s:0:\"\";s:15:\"tooltip_trigger\";s:5:\"hover\";}s:14:\"ajaxTrustedUrl\";a:1:{s:12:\"/search/node\";b:1;}}s:37:\"html_response_attachment_placeholders\";a:4:{s:6:\"styles\";s:100:\"<css-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\";s:7:\"scripts\";s:99:\"<js-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\";s:14:\"scripts_bottom\";s:106:\"<js-bottom-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\";s:4:\"head\";s:101:\"<head-placeholder token=\"D3HzFQdmoNJIhEAvHQNfAtkLyku4nCpdVT2eIoGq5GtjMqX1jpe6iz4yX9o2tfnAO3btGJowGg\">\";}}}}',-1,1518157167.060,1,'block_content:18 block_content:23 block_content:25 block_content:27 block_content:28 block_content:29 block_content:30 block_content:7 block_content_view block_view config:block.block.choosingyaffs config:block.block.cookieinfo config:block.block.downloadyaffs config:block.block.footerlegal config:block.block.frontimagehighlight2 config:block.block.frontpagehero config:block.block.frontpageprimeryaffs config:block.block.mainnavigation config:block.block.mainnavigation_2 config:block.block.searchform config:block.block.sitebranding config:block.block.views_block__highlighted_yaffs_features_block_1 config:block.block.views_block__yaffs_admin_recent_content_block_1 config:block.block.views_block__yaffs_documents_highlights_block_1 config:block.block.views_block__yaffs_user_logos_block_1 config:block.block.yaffs_account_menu config:block.block.yaffs_block_10 config:block.block.yaffs_block_5 config:block.block.yaffs_block_6 config:block.block.yaffs_block_8 config:block.block.yaffs_block_9 config:block.block.yaffs_breadcrumbs config:block.block.yaffs_content config:block.block.yaffs_help config:block.block.yaffs_local_tasks config:block.block.yaffs_messages config:block.block.yaffs_page_title config:block.block.yaffs_user_21 config:block.block.yaffsinspace config:block_list config:color.theme.yaffs config:field.storage.node.field_yaffs_user_logo config:filter.format.full_html config:filter.format.raw_html config:image.style.small config:search.settings config:system.menu.account config:system.menu.main config:system.site config:views.view.yaffs_user_logos file:40 file:43 file:44 file:45 file:46 file:47 file:48 media:5 media:8 media:9 node:397 node:398 node:399 node:400 node:401 node:457 node:460 node:487 node_list node_view rendered user:0 user:1','2884'),