3516開發(fā)板liteos-a分區(qū)詳解
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
之前通過tftp或ftp往板子中拷貝文件,總是出現(xiàn)拷貝不成功的時(shí)候,后來發(fā)現(xiàn)原來時(shí)磁盤滿了,可以3516的mmc容量好幾個(gè)G,怎么會(huì)滿,其實(shí)只是磁盤分區(qū)滿了,存不下文件了,所以本文介紹一下3516的lite-a的分區(qū)情況。
1 liteos-a的mount命令不能查看分區(qū)信息,只能掛載分區(qū),但是toybox下的mount命令可以查看分區(qū),分區(qū)顯示如下,
主要包括三個(gè)分區(qū),根目錄,storage和userdata

partinfo可以查看各個(gè)分區(qū)的總大?。?/p>

看到這個(gè)好多人會(huì)蒙,這到底是多大容量啊,這個(gè)容量指的是有多少塊,我們可以換算成多少M(fèi),每塊多大我們看一下代碼,在版本3.0中這個(gè)目錄是存放liteos-a相關(guān)的分區(qū)加載信息的

EMMC_SEC_SIZE這個(gè)參數(shù)值為512,所以根目錄大小是38912塊,換算成字節(jié)是38912*521=19,922,944字節(jié),也就是19M,
轉(zhuǎn)成16進(jìn)制為130 0000,代碼中有個(gè)宏
#define ROOTFS_SIZE 0x1400000 正是根目錄的文件系統(tǒng)的大小
#define USERFS_SIZE 0x3200000,目錄storage大小為50M
userdata大小為剩余空間大小是7380M,注意總體大小不是她們的和因?yàn)閡boot和一些參數(shù)也要分走一部分空間的,這三個(gè)分區(qū)只是操作系統(tǒng)的。
2 根目錄的分區(qū)大小在代碼中的設(shè)置方式是先從uboot啟動(dòng)參數(shù)獲取,如果獲取不到,采用默認(rèn)值19M,hitool燒錄的分區(qū)設(shè)置如下:

注意我們一定要設(shè)置好燒錄參數(shù)的分區(qū)大小和uboot啟動(dòng)參數(shù)的分區(qū),如果弄錯(cuò)會(huì)出現(xiàn)啟動(dòng)問題,有些目錄會(huì)不可用,
啟動(dòng)參數(shù)和燒錄見文章3516開發(fā)板window上HiTool工具USB燒錄三種固件總結(jié)
3 簡(jiǎn)單過一下代碼流程
OsMountRootfs為主函數(shù),先讀取uboot設(shè)置的參數(shù),然后mount分區(qū),參數(shù)包括root,fstype,rootaddr,rootsize和ro,
調(diào)用AddPartitions(dev, rootAddr, rootSize, userAddr, userSize)設(shè)置分區(qū)大小,三個(gè)分區(qū)開始地址和大小計(jì)算如下:


其中add_mmc_partition和los_disk_init是驅(qū)動(dòng)中的函數(shù),最后調(diào)用函數(shù)MountPartitions(fstype, mountFlags);
fstype代表文件系統(tǒng)類型,mountFlags代表分區(qū)加載方式,主要是ro只讀和rw可讀寫。
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)