ARM flash檔案系統分割槽
阿新 • • 發佈:2019-02-11
在實際應用中我們有時候需要把ARM的一個檔案系統分為多個區域,就像電腦一樣有C、D、E一樣。
前提:你編譯的核心必須支援各種不同型別檔案系統,如果你不太瞭解你的核心是否支援,可以找
部落格學習一下,網上文章一大把。
先直接上圖,說明效果!
# mount -t jffs2 /dev/mtdblock3 /ybq
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 6144 4512 1632 73% /
tmpfs 29392 4 29388 0% /dev
/dev/mtdblock3 5120 260 4860 5% /ybq
# umount /ybq
這裡有兩個分割槽,一個是/dev/root,另一個為/dev/mtdblock3,而這兩個分割槽是一塊flash中分離出來的,
就像電腦裡的硬碟分割槽一樣。同時你還可以將這兩個分割槽分為不同的格式,比如jffs2,yaffs等。
下面以hisi350d開發板為例講解,它提供一塊16M的flash。
核心編譯(linux_3.0.8)時支援uboot 命令引數分割槽:
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] Command line partition table parsing
官方SDK提供的少寫方法如下(不懂的話,可以查資料這幾句話的意思):
setenv serverip 192.168.210.62;setenv ipaddr 192.168.210.218;setenv ethaddr 192.168.210.1;setenv netmask 255.255.255.0;setenv gatewayip 192.168.210.1;ping 192.168.210.62
sf probe 0;mw.b 82000000 ff 100000;tftp 0x82000000 u-boot_hi3520d.bin;sf probe 0;sf erase 0 100000;sf write 82000000 0 100000 ;reset
setenv serverip 192.168.210.62;setenv ipaddr 192.168.210.218;setenv ethaddr 192.168.210.1;setenv netmask 255.255.255.0;setenv gatewayip 192.168.210.1;ping 192.168.210.62
mw.b 82000000 ff 400000;tftp 82000000 uImage_hi3520d_full;sf probe 0;sf erase 100000 400000;sf write 82000000 100000 400000
mw.b 82000000 ff b00000;tftp 0x82000000 rootfs_hi3520d_64k.jffs2;sf probe 0;sf erase 500000 b00000;sf write 82000000 500000 b00000
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
setenv bootargs 'bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs) ipaddr=192.168.210.218'
save
reset
地址空間說明
| 1M | 3M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
自己燒寫方法如下:
sf probe 0;mw.b 82000000 ff 100000;tftp 0x82000000 u-boot_hi3520d.bin;sf probe 0;sf erase 0 100000;sf write 82000000 0 100000 ;reset
mw.b 82000000 ff 400000;tftp 82000000 uImage_hi3520d_full;sf probe 0;sf erase 100000 400000;sf write 82000000 100000 400000
mw.b 82000000 ff 600000;tftp 0x82000000 rootfs_hi3520d_64k.squashfs;sf probe 0;sf erase 500000 600000;sf write 82000000 500000 600000
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),6M(rootfs),5M(ybq) ipaddr=192.168.210.218'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
save
reset
開機後掛載:mount -t jffs2 /dev/mtdblock3 /ybq
地址空間說明
| 1M | 3M | 6 M | 5 |
|---------------|---------------|---------------|--------------
| boot | kernel | rootfs | ybq |
前提:你編譯的核心必須支援各種不同型別檔案系統,如果你不太瞭解你的核心是否支援,可以找
部落格學習一下,網上文章一大把。
先直接上圖,說明效果!
# mount -t jffs2 /dev/mtdblock3 /ybq
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 6144 4512 1632 73% /
tmpfs 29392 4 29388 0% /dev
/dev/mtdblock3 5120 260 4860 5% /ybq
# umount /ybq
這裡有兩個分割槽,一個是/dev/root,另一個為/dev/mtdblock3,而這兩個分割槽是一塊flash中分離出來的,
就像電腦裡的硬碟分割槽一樣。同時你還可以將這兩個分割槽分為不同的格式,比如jffs2,yaffs等。
下面以hisi350d開發板為例講解,它提供一塊16M的flash。
核心編譯(linux_3.0.8)時支援uboot 命令引數分割槽:
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] Command line partition table parsing
官方SDK提供的少寫方法如下(不懂的話,可以查資料這幾句話的意思):
setenv serverip 192.168.210.62;setenv ipaddr 192.168.210.218;setenv ethaddr 192.168.210.1;setenv netmask 255.255.255.0;setenv gatewayip 192.168.210.1;ping 192.168.210.62
sf probe 0;mw.b 82000000 ff 100000;tftp 0x82000000 u-boot_hi3520d.bin;sf probe 0;sf erase 0 100000;sf write 82000000 0 100000 ;reset
setenv serverip 192.168.210.62;setenv ipaddr 192.168.210.218;setenv ethaddr 192.168.210.1;setenv netmask 255.255.255.0;setenv gatewayip 192.168.210.1;ping 192.168.210.62
mw.b 82000000 ff 400000;tftp 82000000 uImage_hi3520d_full;sf probe 0;sf erase 100000 400000;sf write 82000000 100000 400000
mw.b 82000000 ff b00000;tftp 0x82000000 rootfs_hi3520d_64k.jffs2;sf probe 0;sf erase 500000 b00000;sf write 82000000 500000 b00000
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
setenv bootargs 'bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs) ipaddr=192.168.210.218'
save
reset
地址空間說明
| 1M | 3M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
自己燒寫方法如下:
sf probe 0;mw.b 82000000 ff 100000;tftp 0x82000000 u-boot_hi3520d.bin;sf probe 0;sf erase 0 100000;sf write 82000000 0 100000 ;reset
mw.b 82000000 ff 400000;tftp 82000000 uImage_hi3520d_full;sf probe 0;sf erase 100000 400000;sf write 82000000 100000 400000
mw.b 82000000 ff 600000;tftp 0x82000000 rootfs_hi3520d_64k.squashfs;sf probe 0;sf erase 500000 600000;sf write 82000000 500000 600000
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),6M(rootfs),5M(ybq) ipaddr=192.168.210.218'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
save
reset
開機後掛載:mount -t jffs2 /dev/mtdblock3 /ybq
地址空間說明
| 1M | 3M | 6 M | 5 |
|---------------|---------------|---------------|--------------
| boot | kernel | rootfs | ybq |