核心新增對yaffs2檔案系統的支援
CSDN | GitHub |
---|---|
核心新增對yaffs2檔案系統的支援 | AderXCoding/system/tools/yaffs2 |
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作
1 yaffs介紹
YAFFS
, Yet Another Flash File System
, 是一種類似於 JFFS/JFFS2
的專門為 Flash
設計的嵌入式檔案系統. 與 JFFS
相比, 它減少了一些功能, 因此速度更快、佔用記憶體更少. YAFFS
和 JFFS
都提供了寫均衡, 垃圾收集等底層操作. 它們的不同之處在於 :
JFFS
是一種日誌檔案系統, 通過日誌機制保證檔案系統的穩定性.YAFFS
僅僅借鑑了日誌系統的思想, 不提供日誌機能, 所以穩定性不如JAFFS
, 但是資源佔用少.JFFS
中使用多級連結串列管理需要回收的髒塊, 並且使用系統生成偽隨機變數決定要回收的塊, 通過這種方法能提供較好的寫均衡, 在YAFFS
中是從頭到尾對塊搜尋, 所以在垃圾收集上JFFS
的速度慢, 但是能延長 NAND 的壽命.JFFS
支援檔案壓縮, 適合儲存容量較小的系統;YAFFS
不支援壓縮, 更適合儲存容量大的系統.YAFFS
還帶有NAND
晶片驅動, 併為嵌入式系統提供了直接訪問檔案系統的API
, 使用者可以不使用Linux
中的MTD
和VFS
, 直接對檔案進行操作.NAND Flash
大多采用MTD+YAFFS
的模式.MTD
(Memory Technology Devices
, 記憶體技術裝置)是對Flash
操作的介面, 提供了一系列的標準函式, 將硬體驅動設計和系統程式設計分開.
YAFFS2
是 YAFFS
的升級版, 能更好的支援 NAND FLASH
, 我們採用最新的 YAFFS2
檔案系統. 我們首先下載 YAFFS
檔案系統.
2 核心新增對yaffs2檔案系統的支援
核心中預設是不支援 yaffs
檔案系統的, 因此我們需要為核心打上 yaffs
的補丁
File systems --->
Miscellaneous filesystems --->
<*> YAFFS2 file system support
[*] Autoselect yaffs2 format
2.1 下載yaffs原始碼
第一步, 我們需要 YAFFS2
的原始碼, 如果大家有興趣想了解 YAFFS2
檔案系統的驅動原理的話可以直接去訪問他們的官網
官網地址 : www.yaffs2.net
有原始碼下載地址, 怕大家進去後難找, 直接貼出YAFFS2的最新原始碼地址吧 http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=summary
直接點選, 點最新版本, 點選最右邊的 SNAPSHOT
下載, 這個是目前最新的YAFFS2的原始碼了.
或者直接訪問, 即可自動下載
http://aleph1.co.uk/gitweb?p=yaffs2.git;a=snapshot;h=HEAD;
下載後解壓縮 yaffs
原始碼
當然我們也可以使用git進行下載
- 普通使用者使用
git clone git://www.aleph1.co.uk/yaffs2
- 內部開發人員
yaffs
的開發人員會有自己的開發賬戶, 因此可以直接訪問 git
進行下載
git clone ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2
2.2 為核心打上patch
第二步, 將下載下來的 YAFFS2
最新原始碼 YAFFS2.tar.gz
放入你 LINUX
的任意一個目錄下, 執行 tar zxvf YAFFS2.tar.gz
然後進入 YAFFS2
原始碼包
由於最新的原始碼再執行指令碼 patch-ker.sh
時 有四個引數, 可以追加:c,l,m,s,
./patch-ker.sh c/l m/s kernelpath
if c/l is c, then copy. If l then link
if m/s is m, then use multi version code. If s then use single version code
上面這段英文應該很好懂吧, 簡而言之, C 是複製檔案, L是連結檔案, M是多種, S是單個的,
那麼在這裡, 我們只需執行
./patch-ker.sh c m your-linux-kernel-directory
執行完這條命令之後, 你將會發現在 kernel
原始碼目錄下發現有了 yaffs2
目錄了, 並且裡面也出現了好多檔案
- 修改核心
fs/Kconfig
, 增加了yaffs2
下的Kconfig
# Patched by YAFFS
source "fs/yaffs2/Kconfig"
- 修改核心
fs/Makefile
, 增加了yaffs
目錄的資訊
同時將原來的 Makefile
備份為 Makefile.pre.yaffs
# Patched by YAFFS
obj-$(CONFIG_YAFFS_FS) += yaffs2/
在核心fs/目錄下建立yaffs2子目錄
將yaffs2原始碼目錄下的Makefile.kernel複製為核心fs/yaffs2/Makefile檔案
將yaffs2原始碼目錄下的Kconfig檔案複製到核心fs/yaffs2/目錄下
將yaffs2原始碼目錄下的.c,.h檔案(不包括子目錄下的檔案)複製到核心fs/yaffs2/目錄下
2.3 配置核心
最後就是配置編譯核心, 讓核心支援yaffs2檔案系統
```cpp
File systems --->
Miscellaneous filesystems --->
<*> YAFFS2 file system support
[*] Autoselect yaffs2 format
配置語言選項
Native Language support --->
(iso8859-1) Default NLS Option
<*> Codepage 437(United States, Canada)
<*> Simplified Chinese charset(CP936, GB2312)
<*> NLS ISO8859-1 (Latin 1; Western European Language)
<*> NLS UTF-8
注
yaffs2
需要核心MTD
的支援若在
make menuconfig
中沒有出現yaffs2
檔案系統的支援, 請檢查MTD
的配置,yaffs2
依賴於MTD
.MTD
中配置了linux
核心對NANDFlash
的支援.
Device Drivers ---> Memory Technology Device (MTD) support ---> # 進一步把其中的NAND Flase的支援開啟
核心支援 NandFlash
和 yaffs2
檔案系統,將核心燒入 NandFlash
後, 再燒入 yaffs2
檔案系統, 可以使用製作好的檔案系統, 也可以自己製作
啟動時(成功掛載檔案系統)輸出:
yaffs: dev is 32505858 name is "mtdblock2"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
yaffs: auto selecting yaffs2
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) on device 31:2.
Freeing init memory: 196K
本作品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可, 轉載請註明出處, 謝謝合作.
相關文章
- 檔案系統(九):一文看懂yaffs2檔案系統原理
- Linux作業系統支援的檔案系統有哪些?Linux作業系統
- 分散式檔案系統(HDFS)與 linux系統檔案系統 對比分散式Linux
- Linux 核心101:虛擬檔案系統的使命Linux
- LiteOS-A核心中的procfs檔案系統分析
- 核心必須懂(二): 檔案系統初探
- 2.9.5 資料庫中支援的檔案系統服務資料庫
- Linux 核心中 Kconfig 檔案的作用和新增 menuconfig 項的方法Linux
- Linux核心啟動之根檔案系統掛載Linux
- 鴻蒙輕核心原始碼分析:檔案系統LittleFS鴻蒙原始碼
- 【核心檔案系統】原始碼閱讀stat.h原始碼
- OA系統之檔案借閱管理,對檔案的去向實時掌控
- DBSync新增對MongoDB、ES的支援MongoDB
- Linux支援的檔案系統有哪些?Linux基礎課程Linux
- 核心proc檔案系統與seq介面(3)---核心proc檔案底層結構淺析
- Linux系統篇-檔案系統&虛擬檔案系統Linux
- Mac OS系統中檔案新增Finder顏色標記的方法Mac
- 檔案和檔案系統
- Mybatis基礎:Mybatis對映配置檔案,Mybatis核心配置檔案,Mybatis傳統方式開發MyBatis
- linux的檔案系統Linux
- Mac的檔案系統Mac
- Laravel 檔案系統擴充套件(支援 OSS+ 七牛)Laravel套件
- 檔案系統
- 在linux系統中對檔案進行分割Linux
- 檔案系統(五):exFAT 檔案系統原理詳解
- Linux系統檔案系統及檔案基礎篇Linux
- nodejs中的檔案系統NodeJS
- 檔案系統(十):一文看懂 UBI 檔案系統
- 【檔案系統】嵌入式檔案系統Fatfs簡介
- spark直接讀取本地檔案系統的檔案Spark
- debugfs檔案系統
- Linux檔案系統Linux
- FUSE檔案系統
- 檔案系統安全
- [Linux]檔案系統Linux
- Win10系統下怎麼給影片新增srt字幕檔案Win10
- 小白自制Linux開發板 三. Linux核心與檔案系統移植Linux
- 檔案系統(四):FAT32檔案系統實現原理
- 檔案系統(十一):Linux Squashfs只讀檔案系統介紹Linux