NOR FLASH掛載jfss2文件系統

 

前段時間忙着找工作。項目的事情又拖了好一陣子,今天正好趁着ZTE面試的間隙把掛載JFFS2可寫文件系統的事情解決一下,其實挺快的,半天時間理清了思路,實踐成功了呵呵

具體步驟如下:

1.內核配置:根據官網上面的兩篇帖子

http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:mtd

http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:jffs

Device Drivers  --->
  Memory Technology Devices (MTD)  --->
    <*> Memory Technology Device (MTD) support
    [*]   Direct char device access to MTD devices
    [*]   Caching block device access to MTD devices

RAM/ROM/Flash chip drivers  --->

<*> Detect flash chips by Common Flash Interface (CFI) probe

<*> Support for Intel/Sharp flash chips
<*> Support for RAM chips in bus mapping

<*> Support for ROM chips in bus mapping

Mapping drivers for chip access  --->
  <*> CFI Flash device in physical memory map
         (the address/length options are ignored)

File systems   --->
  Miscellaneous filesystems  --->
    <*> Journalling Flash File System v2 (JFFS2) support
           (sub-options are up to you)

以上4個子步驟完成了內核對MTD配置以及JFSS2支持的配置

2.user下面的MTD utils配置

Flash Tools   --->
  [*] mtd-utils
  [*]   erase

  [*]   eraseall
  [*]   mkfs.jff2

3.修改uClinux-dist-2008R1-RC8/linux-2.6.x/arch/blackfin/mach-bf561/boards中對應的板子初始化文件efevm.c

相應的mtd劃分改爲

static struct mtd_partition ezkit_partitions[] = {
        {
                .name       = "Bootloader",/*uboot 256KB*/
                .size       = 0x40000,
                .offset     = 0,
        }, {
                .name       = "Kernel",/*kernel 896KB*/
                .size       = 0xE0000,
                .offset     = MTDPART_OFS_APPEND,
        }, {
                .name       = "RootFS",/*rootfs  6MB*/
                .size       = 0x600000,
                .offset     = MTDPART_OFS_APPEND,
        }, {
                .name       = "jffs2-njupt",/*jffs2 896KB*/
                .
size       = MTDPART_SIZ_FULL,
                .offset     = MTDPART_OFS_APPEND,
        }
};

4.make生成內核加文件系統的鏡像

5.uboot載入剛編譯完的內核加文件系統

root:/> cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00020000 "bootloader"
mtd1: 000E0000 00020000 "kernel"
mtd2: 00600000 00020000 "romfs"
mtd3: 000e0000 00020000 "jffs2-njupt"

NOR FLASH分了4塊,對應mtd0至mtd3

root:/> eraseall /dev/mtd3 擦除相應的存放jffs2文件系統的塊

root:~> mount -t jffs2 /dev/mtdblock3 /mnt/ 把該塊以jffs2格式掛載到mnt下

這樣在mnt目錄下面就能執行任何寫操作了。

6.掉電重啓,需要重新執行一遍mount -t jffs2 /dev/mtdblock3 /mnt/

把mtd3掛載到mnt下,可以發現原先創建的文件沒有丟失!!可以把mount的部分加載到rc中,這樣每次自啓動的時候直接把mtd3掛載到mnt下面了

至此,NOR FLASH開闢空間完成JFFS2格式寫保存的工作全部完成。:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章