jffs2_scan_eraseblock(): Magic和Empty Flash at…解決辦法!

來源:互聯網
上載者:User

這段時間因為工作上的需要,一直在弄Linux下的JFFS2根檔案系統,前期老是出現Empty flash at 0x0012cdff - 0x0012ffff以及jffs2_scan_eraseblock(): Magic.....這樣一大堆的警告,雖然不影響linux系統的運行,但是多少對於linux系統來說,還不是很安全的啦,畢竟老是在擦除不該擦除的地址,因為這些地方對應的是linux的核心代碼處,總感覺不是很完美的解決問題,因此在網路上也GOOGLE了一下,有很多人都遇到這樣的問題,也看到很多人寫了關於這樣問題的解決辦法,可是按照網路上的方法,始終無法解決這類現象,後來,沒有辦法,只有自己仔細看了一下MTD的詳細介紹和分析了相關代碼,最後修改兩處地方,才將問題解決。

主要還是講講JFFS2檔案系統的製作以及一些細節吧:mkfs.jffs2

在開發板中採用cat proc/mtd 查看erasesize大小為0x10000,而我製作JFFS檔案時,也是選中0x10000的啊,因此可以知道不是這裡的問題,最後,看了一下產生的JFFS2的檔案大小為1.200M,心裡想好奇怪的檔案大小哦。最後自己算了一下:1.2x1024x1024=1258291.2=0x133333,最後重建JFFS2檔案時,設定了一下:--pad=0x133333,再來查看JFFS2的檔案大小問1.218M。不一樣的哦。這就說明,很可能是將記憶體髒資料填充到檔案系統剩餘頁部分。而出現了jffs2_scan_eraseblock():
Magic和Empty Flash at...問題,之後燒錄到系統中,啟動很快,再也看不見這兩個錯誤了。問題完美解決了。

mkfs.jffs2 -n -s 512 -e 64KiB--pad=0x133333 -d
rootfs -o myjffs2.img
參數注釋:
        -s  頁大小,採用預設的設定也可。
        -e  擦除塊大小,需和手冊相匹配,此處為128(由手冊可知),1 Block = (2K + 64)B + 64 Pages=(128K + 4K)bytes
            此處如果設定過大(如 256),將出現jffs2_scan_eraseblock():Magic bitmask......問題
            如果設定過小(如 64),將出現Empth flash at .......問題 
     --pad 設定組建檔案大小,其實此處也不算是設定,因為此選項是填充的意思,當組建檔案比參數規定大小大時,此選項不起作用只有當組建檔案小於規定大小才會進行填充,如果產生的檔案大小不規範,很可能將記憶體髒資料填充到檔案系統剩餘頁部分。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.