暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux板端支持exFAT和中文文件名

ta是一个搬运工 2021-07-29
1470

1 说明

本文内容来源于调试hi3531A的过程中总结的经验。

2 支持exFAT

linux发行版解决支持exFAT的问题很简单,通过包管理器安装相应的软件包即可,比如Ubuntuapt-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

文章转载自ta是一个搬运工,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论