制作jffs2.img文件系統,打包下載flash系統鏡像


1、根文件系統rootfs制作jffs2.img鏡像

Flash支持jffs2文件系統格式,所以需要使用此該rootfs制作jffs2文件系統鏡像

//使用工具
sudo apt-get install mtd-utils

操作步驟

mkdir rootfs
//創建目錄
sudo tar xzvf rootfs-brmin.tar.gz -C rootfs
//解壓文件
sudo mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img 
//把rootfs文件夾內的文件系統制作成jffs2.img鏡像

#如果使用32M的flash  mx25l25635,則需要做一些修改【-p 的文件大小多16M】:
sudo mkfs.jffs2 -s 0x100 -e 0x10000 -p 0x1AF0000 -d rootfs/ -o jffs2.img

 

  • -p 指的是rootfs占據的總空間:16M-1M-64K-4M=0xAF0000 或者 32M-1M-64K-4M=0x1AF0000   
  • -s 頁大小0x100 256字節
  • -e 塊大小0x10000 64k
  • -o jffs2.img是生成的文件系統鏡像。

2、uboot,dtb,kernel,rootfs(jffs2.img)打包系統鏡像

最后將uboot,dtb,kernel,rootfs打包成一個系統鏡像,命令如下:

dd if=/dev/zero of=flashimg.bin bs=16M count=1
dd if=u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc
dd if=linux-zero-4.13.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024  conv=notrunc
dd if=linux-zero-4.13.y/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088  conv=notrunc
dd if=jffs2.img of=flashimg.bin  bs=1K seek=5184  conv=notrunc

dd命令的解釋

dd:用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。
注意:指定數字的地方若以下列字符結尾,則乘以相應的數字:b=512;c=1;k=1024;w=2
參數注釋:
1. if=文件名:輸入文件名,缺省為標准輸入。即指定源文件。< if=input file >
2. of=文件名:輸出文件名,缺省為標准輸出。即指定目的文件。< of=output file >
3.  ibs=bytes:一次讀入bytes個字節,即指定一個塊大小為bytes個字節。
    obs=bytes:一次輸出bytes個字節,即指定一個塊大小為bytes個字節。
    bs=bytes:同時設置讀入/輸出的塊大小為bytes個字節4.  cbs=bytes:一次轉換bytes個字節,即指定轉換緩沖區大小。
5.  skip=blocks:從輸入文件開頭跳過blocks個塊后再開始復制。
6.  seek=blocks:從輸出文件開頭跳過blocks個塊后再開始復制
注意:通常只用當輸出文件是磁盤或磁帶時才有效,即備份到磁盤或磁帶時才有效。
7. count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的字節數。
8. conv=conversion:用指定的參數轉換文件。
    ascii:轉換ebcdic為ascii
    ebcdic:轉換ascii為ebcdic
    ibm:轉換ascii為alternate ebcdic
    block:把每一行轉換為長度為cbs,不足部分用空格填充
    unblock:使每一行的長度都為cbs,不足部分用空格填充
    lcase:把大寫字符轉換為小寫字符
    ucase:把小寫字符轉換為大寫字符
    swab:交換輸入的每對字節
    noerror:出錯時不停止
    notrunc:不截短輸出文件
    sync:將每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊。

地址:https://www.cnblogs.com/senior-engineer/p/6211247.html

 

 

第一步:生成一個空文件,大小是16MB
第二步:將uboot添加到文件開頭
第三步:將dtb放到1M偏移處
第四步:將kernel放到1M+64K偏移處
第五步:將rootfs放到1M+64K+4M偏移處
偏移大小是seek,單位是KB。

執行完畢后生成鏡像文件flashimg.bin

一鍵生成鏡像文件參考:https://blog.csdn.net/qq_40860568/article/details/100153681

 

2、通過FEL模式下載鏡像【全志cpu】

下載sunxiflash燒寫工具,安裝與下載參考:https://blog.csdn.net/qq_40860568/article/details/100519832

 

進入fel模式

Zero有一個usb下載模式稱為fel模式,進入fel模式有下面幾種方式:

 

1:TF卡和spi flash 同時沒有可啟動鏡像:也就是說你不插SD卡,且焊接的是新的或者沒有有效鏡像的spi flash,那就上電自動進入fel下載模式

:2:SD卡中有進入fel模式的特殊固件 fel-sdboot.sunxi :如果你的spiflash已經有了啟動鏡像,那么需要在TF卡中燒入一個sunxi提供的啟動工具(dd if=fel-sdboot.sunxi of=/dev/mmcblk0 bs=1024 seek=8),那么插入該TF卡啟動會進入fel模式;

 

3:上電時SPI_MISO拉低到GND,通常使用此方法最為方便。該引腳為boot引腳,上電時出於低電平即會進入fel下載模式。

 

sunxi-fel的操作

 

進入fel模式后使用usb數據線連接pc和zero,即可進行操作。

 

sudo sunxi-fel version        #查看連接的cpu信息
AWUSBFEX soc=00001681(V3s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000

sudo sunxi-fel spiflash-info #顯示flash信息 Manufacturer: Unknown (C2h), model: 20h, size: 33554432 bytes.

 

sudo sunxi-fel -p spiflash-write 0 flashimg.bin
# -p 顯示進度條
#    spiflash-info                     顯示flash信息 Retrieves basic information
#    spiflash-hex[dump] addr length    讀 Dumps SPI flash region in hex
#    spiflash-read addr length file    寫 Write SPI flash contents into file
#    spiflash-write addr file          寫 Store file contents into SPI flash

 

 在unbuntu下面批量輸入命令操作

當我們對這些命令的使用率較高,而且這些命令又是順序執行的時候,就不妨寫個腳本,一鍵執行。

在開發全志V3s時,就需要制作系統鏡像,每次復制粘貼真是及其麻煩。
不多說,直接上代碼:
首先創建sh文件:gedit makeimg.sh
打開makeimg.sh編輯窗口后,粘貼下面代碼:

#!/bin/bash
dd if=/dev/zero of=flashimg.bin bs=32M count=1 &&
dd if=u-boot/u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc &&
dd if=linux/arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc &&
dd if=linux/arch/arm/boot/zImage of=flashimg.bin bs=1K seek=1088  conv=notrunc &&
dd if=jffs2.img of=flashimg.bin  bs=1K seek=5184  conv=notrunc


說明:第一行是腳本聲明,下面就是你想要執行的命令,可以根據需要換成自己的命令,不過千萬注意,每個命令后,記得加個“&&”,作用就是區分相鄰的命令和使命令順序執行。


————————————————
版權聲明:本文為CSDN博主「@技術小白」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40860568/article/details/100153681

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM