1 说明
本文内容来源于调试hi3531A的过程中总结的经验。
2 支持exFAT
linux发行版解决支持exFAT的问题很简单,通过包管理器安装相应的软件包即可,比如Ubuntu:apt-get install exfat-utils。
在hi3531A SDK嵌入式环境中,需要移植相应的驱动程序才能达到目的。
可以从官网下载最新的驱动包或者从百度网盘下载作者使用的驱动包。
链接:https://pan.baidu.com/s/1WD6N-xSkjVXg8DcdzLeu5g
提取码:wtnj
在交叉编译环境中进入hi3531A SDK内核源代码,执行
cp arch/arm/configs/hi3531a_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage
进入下载好的exfat-nofuse-master,修改Makefile


执行make,正常情况下会在exfat-nofuse-master下生成exfat.ko。
将exfat.ko拷贝至开发板并insmod,之后即可执行mount -t exfat $dev $dir挂载移动设备,此时执行mount $dev $dir既可以挂载FAT32文件系统的U盘,也能挂载exFAT文件系统的U盘。
3 支持中文文件名
3.1 修改内核
步骤1:编译内核
cp arch/arm/configs/hi3531a_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
File systems --->Native language support --->选中(*:编译进内核,M:编译成模块)Simplified Chinese charset (CP936, GB2312)
步骤2:(如果编译成模块则要加载模块nls_cp936.ko)
带指定参数挂载分区:mount -t vfat /dev/sdb /share -o codepage=936,iocharset=cp936
如下图:上一行为不带参数的挂载,下一行为用指定参数的挂载

3.2 使用mount系统调用
函数原型
#include <sys/mount.h>
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);

图中mount函数的使用相当于mount -t vfat /dev/sdb /share -o codepage=936,iocharset=cp936




