新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2019-11-23
- 在线时间
- 1 小时
|
1金钱
用的是rtthread3.0.3版本。自带的SD卡驱动能正常驱动和挂载SD卡,但在打开文件的open()函数中出现问题。具体情况是,文件名前面有空格,可以检测正常,但没有空格,程序直接崩溃重启。在文件名前面有空格的时候,程序正常退出,跟踪到dfs_file.c中的dfs_file_open(struct dfs_fd *fd, const char *path, int flags)函数,在119行处 if ((result = fd->fops->open(fd)) < 0)这一语句处卡住了,因为这里定义的open函数只在dfs_file.h中有声明,并没有实现的具体代码。利用控制台输出,可以发现在这一句中result的值为-22,因此就无法正常创建文件。求助各位,这个问题应当怎么解决。
[size=18.9474px]dfs_file.h中的声明如下。
struct dfs_file_ops{
int (*open) (struct dfs_fd *fd);
int (*close) (struct dfs_fd *fd);
int (*ioctl) (struct dfs_fd *fd, int cmd, void *args);
int (*read) (struct dfs_fd *fd, void *buf, size_t count);
int (*write) (struct dfs_fd *fd, const void *buf, size_t count);
int (*flush) (struct dfs_fd *fd);
int (*lseek) (struct dfs_fd *fd, off_t offset);
int (*getdents) (struct dfs_fd *fd, struct dirent *dirp, uint32_t count);
int (*poll) (struct dfs_fd *fd, struct rt_pollreq *req);
};
|
|