HaaS100开发板提供了非常灵活的存储方案。其中开发板上就自带了
同时,还支持最大支持64GB的TF卡扩展 (TF卡,即T-Flash卡,也称micro SD卡或微型SD卡)。
而HaaS100 搭载的AliOS Things操作系统中,提供了丰富的文件系统类型,以下是其中几个典型推荐:
其中,外置SD-Card适用于需要存储文件、图片、音视频等较大数据的场景。
本文就讲述如何在HaaS100开发板上进行读写SD扩展卡操作,内容包括:
HaaS100支持外接微型SD卡(Micro SD),最大支持64GB数据的存储。
SD卡槽位于开发板背面(HaaS100 logo的反面),可以外接微型SD存储卡,具体的硬件连接方法请参考下图。
SD卡在使用前,一般都需要格式化以支持特定文件系统格式(一般是FAT)数据的存储。
HaaS100软件支持SD卡上FAT16/FAT32/exFAT等格式的文件系统数据的读写访问。
请参考一下步骤准备好一张可用的微型SD存储卡(TF卡),并格式化成FAT文件系统格式。
HaaS100软件上要使用fatfs文件系统访问SD卡,则需要在对应的app工程中使能fatfs文件系统组件。以下以helloworld_demo工程为例进行说明。
1、打开application/example/helloworld_demo/aos.mk
文件,添加fatfs组件依赖。
2、打开application/example/helloworld_demo/aos.mk
文件,添加SD卡介质支持(CONFIG_AOS_FATFS_SUPPORT_MMC宏配置)。
注意,目前HaaS100软件上默认只打开了FAT16/FAT32格式的支持。
如果您选择了将SD卡格式化为exFAT格式,则需要在编译HaaS100软件前,打开exFAT格式的支持选项。
具体步骤为:
(1)打开HaaS100代码工程中的components/fs/fatfs/ff/include/ffconf.h
文件,并将FF_FS_EXFAT
配置项修改为1,参考下图。
HaaS100支持通过标准POSIX接口访问SD卡文件系统,SD卡fatfs文件系统默认的挂载路径为/sdcard
,即所有SD卡文件的访问均要以/sdcard
路径开头,如/sdcard/testfile.txt
。
请参考以下步骤添加SD卡文件的访问代码逻辑,以下示例代码展示了如何进行基本的文件打开(open)、写(write)、读(read)、关闭(close)操作。
以下测试代码均添加在application/example/helloworld_demo/appdemo.c
文件中。
1、添加头文件。示例代码使用了open/read/write/close接口,因此需要添加以下头文件:
/* 请根据调用接口的需要,添加包含相应的头文件。 */
#include
#include
#include
#include
#include "aos/cli.h"
2、添加文件读写逻辑
/* 以下逻辑包含基本的文件打开、读写、关闭操作。 */
static void sd_file_test()
{
int fd, rc, err = 0;
char buf[256] = {0};
const char *f = "/sdcard/test.txt";
const char *str = "Hello SD card file.";
/* 文件打开 */
fd = open(f, O_CREAT | O_RDWR);
if (fd < 0) {
printf("Failed to open file %s, errno: %d\r\n", f, errno);
return;
}
rc = write(fd, str, strlen(str));
if (rc < 0) {
err = 0;
printf("Failed to write to file %s, rc: %d\r\n", f);
}
close(fd);
if (err) return;
fd = open(f, O_RDONLY);
if (fd < 0) {
printf("Failed to open file %s, errno: %d\r\n", f, errno);
return;
}
rc = read(fd, buf, sizeof(buf) - 1);
if (rc < 0) {
printf("Failed to read file %s\r\n", f);
} else {
printf("Read from file: %s", buf);
}
close(fd);
}
3、添加接口调用
int application_start(int argc, char *argv[])
{
int count = 0;
printf("nano entry here!\r\n");
sd_file_test(); /* 调用SD卡文件操作接口 */
while(1) {
printf("hello world! count %d \r\n", count++);
aos_msleep(1000);
};
}
4、工程编译、收录和运行。
请参考HaaS100快速开始完成helloworld_demo工程的编译和烧录。
运行后,将看到Read from file: Hello SD card file.
的打印信息,将SD卡连接到PC上也可以看到文件test.txt
已被写入SD卡。
5、至此,即完成了访问SD卡上的文件的所有操作。
本文介绍了如何使用HaaS100读写扩展SD卡文件,包括硬件连接、软件配置、文件读写代码示例。
如需更多技术支持,可加入钉钉开发者群
更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/