基於MTK iot Android11 支持exFat格式

隨著大存儲,大容量4G以上的大文件的出現,造成了原來基於fat的格式,已經無法滿足市場的需求,造成在linux和Android設備上無法識別大容量的文件,因此微軟推出了基於EXfat存儲格式,但是因為涉及到license的問題,在Linux和Android平台默認是無法支持大容量文件的識別,為了實現識別的話需要取多微軟的授權後才能夠支持EXFAT的格式。下面是取多授權後,如何在MTK iot Android11 支持exFat格式。

請參考如下:
    在移植之前,我們需要獲取到kernel和external 部分的源碼:kernel 層的代碼用的是1.2.24,external 的代碼用的是1.3.0。

1.kernel層增加exfat格式支持:
1)下載的代碼文件夾重命名為exfat,刪除裡面的debian文件夾,修改Kconfig。
config EXFAT_VIRTUAL_XATTR
bool "Virtual xattr support for exFAT filesystem"
default y

改成
config EXFAT_VIRTUAL_XATTR
bool "Virtual xattr support for exFAT filesystem"
default n

2)拷貝exfat文件夾到kernel-4.19/fs
編輯makefile和Kconfig

Kconfig 添加一行 

source “fs/exfat/Kconfig”


makefile 添加一行 

obj-$(CONFIG_EXFAT_FS) += exfat/



3)修改aiot8395p1_64_bsp_defconfig文件 添加一行

CONFIG_EXFAT_FS=y

kernel部分添加完成,編譯之後燒錄,燒錄完成開機,adb shell cat /proc/filesystems ,你會發現多了一下exfat格式。



2. external 增加exfat格式支持:
1)下載的代碼文件夾重命名為exfat,拷貝到external 文件夾中,這個代碼已經支持Android.bp,所以不需要修改,直接可以使用。
2)添加PRODUCT_PACKAGES
在device\mediateksample\aiot8395p1_64_bsp\device.mk里增加如下:

PRODUCT_PACKAGES += \
fsck.exfat \
mkfs.exfat \


代碼添加完成,編譯。
編譯之後會在out目錄的system/bin 裡面生成兩個可執行文件 fsck.exfat 和mkfs.exfat。

3.關於exfat格式USB和TF卡自動加載
Android 11在vold部分已經實現了exfat部分的,所以這部分的工作就可以省略了。
自此EXfat在Android11上移植基本上完成了,看如下log說明Exfat 格式掛載大功告成了

6-19 17:16:45.211  1619  1625 D vold    : VolumeManager::handleBlockEvent devName=sda1,devType=partition,eventPath=/devices/platform/5b0d0000.usb/ci_hdrc.0/usb3/3-1/3-1:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1
06-19 17:16:45.211 1619 1619 V vold : /system/bin/blkid
06-19 17:16:45.211 1619 1619 V vold : -c
06-19 17:16:45.211 1619 1619 V vold : /dev/null
06-19 17:16:45.211 1619 1619 V vold : -s
06-19 17:16:45.211 1619 1619 V vold : TYPE
06-19 17:16:45.211 1619 1619 V vold : -s

06-19 17:16:45.211 1619 1619 V vold : UUID
06-19 17:16:45.211 1619 1619 V vold : -s
06-19 17:16:45.211 1619 1619 V vold : LABEL
06-19 17:16:45.211 1619 1619 V vold : /dev/block/vold/public:8,1
06-19 17:16:45.271 1619 1619 V vold : /dev/block/vold/public:8,1: LABEL="disk" UUID="F45F-72A6" TYPE="exfat"
06-19 17:16:45.271 1619 1619 V vold :
06-19 17:16:45.272 1619 1619 W vold : getId()=public:8,1,mFsType=exfat,mFsUuid=F45F-72A6,mFsLabel=disk: No such file or directory
06-19 17:16:45.273 1619 1619 D vold : PublicVolume::doMount sysPath= /sys/devices/platform/5b0d0000.usb/ci_hdrc.0/usb3/3-1/3-1:1.0/host0/target0:0:0/0:0:0:0/block/sda,mFsType=exfat
06-19 17:16:45.273 1619 1619 V vold : /system/bin/fsck.exfat
06-19 17:16:45.273 1619 1619 V vold : /dev/block/vold/public:8,1
06-19 17:16:45.273 24631 24631 I Binder:1619_2: type=1400 audit(0.0:992): avc: denied { entrypoint } for path="/system/bin/mount.exfat" dev="dm-0" ino=3620 scontext=u:r:fsck_untrusted:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=1
06-19 17:16:45.294 1619 1619 I fsck.exfat: exFAT multi-call binary, mod/build 1.0.4 by Lurker
06-19 17:16:45.294 1619 1619 I fsck.exfat: exfatfsck 1.1.1
06-19 17:16:45.307 1619 1619 I fsck.exfat: Checking file system on /dev/block/vold/public:8,1.
06-19 17:16:45.309 1619 1619 I fsck.exfat: File system version 1.0
06-19 17:16:45.309 1619 1619 I fsck.exfat: Sector size 512 bytes
06-19 17:16:45.310 1619 1619 I fsck.exfat: Cluster size 32 KB
06-19 17:16:45.310 1619 1619 I fsck.exfat: Volume size 15 GB
06-19 17:16:45.310 1619 1619 I fsck.exfat: Used space 3401 MB
06-19 17:16:45.310 1619 1619 I fsck.exfat: Available space 11 GB
06-19 17:16:45.362 1619 1619 I fsck.exfat: Totally 27 directories and 29 files.
06-19 17:16:45.362 1619 1619 I fsck.exfat: File system checking finished.
06-19 17:16:45.365 1619 1619 I fsck.exfat: No errors found.
06-19 17:16:45.367 1619 1619 I vold : Check OK
06-19 17:16:45.367 1619 1619 E vold : +++++doMount [ /storage/udisk/ ]
06-19 17:16:45.368 1619 1619 D vold : PublicVolume::doMount mDevPath=/dev/block/vold/public:8,1,mRawPath=/mnt/media_rw/udisk/
06-19 17:16:45.453 1619 1619 V vold : Waiting for FUSE to spin up...

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論