S3C6410嵌入式應用平臺構建(六)——linux-3.14.4移植到OK6410-(Yaffs2文件系統移植)

我我的以爲nandflash上用yaffs2文件系統是很好的方案,可是最新的Linux並不支持yaffs2文件系統,須要你本身給內核打補丁,不過話說在前面,因爲內核間差別及兼容問題,在編譯時確定會出現各類編譯問題,須要你一一的去解決。node

   1、準備工做linux

  1. 下載源碼git

    使用git工具下載:$ git clone git://www.aleph1.co.uk/yaffs2 函數

   2. 給內核打補丁工具

    下載完成後,在該執行目錄下會有yaffs2文件夾,進入該文件夾。ui

   $  ./patch-ker.sh c m ../../kernel/test/linux-3.14.4this

Updating ../../kernel/test/linux-3.14.4/fs/Kconfig
Updating ../../kernel/test/linux-3.14.4/fs/Makefilespa

   有以上兩個信息,說明已經打好補丁,而且在fs/目錄下,多了yaffs2文件夾,其實這是從yaffs2文件夾中複製過來的。debug

   2、內核配置code

   下面配置內核,在linux目錄下make menuconfig

   咱們發如今File system—>Miscellaneous filesystems—>下面並找不到yaffs2選項。原來是這樣的

    查看YAFFS2的Kconfig文件,須要先選擇MTD_BLOCK纔會有顯示YAFFS2

      也就說須要先選擇Device Drivers-->MTD-->Caching block device access to MTD devices,而後纔可以在File Systems--->Miscellaneous filesystem下面找到YAFFS2。

image
    image

好的 ,配置完後,這下要執行make clean;make uImage了。剩下的工做就是解決一大堆編譯錯誤了!!!!

下面看看編譯的錯誤:

1. 出現error: incompatible types when initializing type 'uid_t' using type 'kuid_t' ,應該是不兼容問題致使,修改:

uid_t改成kuid_t和gid_t 改成kgid_t

剩下的關於這個變量的問題不少,可是都是關於兼容性的,你們在修改時只須要知道只要不兼容,那咱們就把全部用到的改到兼容的kuid_t爲止。

這裏修改的地方和文件有點多,我就不一一列出來了

2. error: implicit declaration of function 'create_proc_entry'

因爲最新的內核不支持這個函數,須要註釋掉並改成my_proc_entry = proc_create("yaffs",S_IRUGO | S_IFREG, YPROC_ROOT, &yaffs_fops);

最終修改以下:


3. error: unknown field 'readdir' specified in initializer

在init_yaffs_fs函數前添加如下代碼

修改了以上,咱們就能編譯經過了。目前,內核就支持yaffs2文件系統了。

下一篇文件咱們來用busybox製做yaffs2文件系統。

相關文章
相關標籤/搜索