Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
NXP 微控制器
[新手试水] LPC1768_Nano3_DFS
发布于 2018-03-27 15:21:20 浏览:2514
订阅该版
* 本帖最后由 wlof 于 2018-3-27 15:21 编辑 * **第七章 添加DFS(SD前奏)**[align=center]Wlof摘要:本文主要介绍如何为RTT_Nano3添加DFS,主要是因为SD卡使用时,一般会用FATFS,而RTT中的FATFS放在了DFS框架下面,SO,要提前搞定DFS的添加,希望对大家有所帮助。**7.1 起源**数据存储是嵌入式开发的基本功能,SD卡是最常用的一种了,以前在使用过程中,直接使用FATFS或是MDK自带的FLASHFS,其实现基本上是从相应的例程参考过来,难度也不大。而这个DFS,搞了好几天,没有弄明白怎么回事,后来,发现我参考的示例是RTT2的,我把RTT2中的DFS搞到了Nano3上来,按理说,应该兼容一下才好的吧。但是实际上,不行这么搞,出现很多错误,俺是摸不着头脑了。为此,把RRT2的所有资料删掉【哥生气了】,直接从RRT3的组件包里复制出来。DFS的资料不算多,可能也不少,但是我是没看懂,也不指望能看懂了,只希望知道怎么用就可以了。【**组件包,一定要和对应的系统版本弄清楚,乱弄,可能会出问题】**有个网文“**rt-thread组件之dfs文件系统架构浅析**”,推荐看一下,不错。**7.2 DFS组件复制**按网文件介绍,dfs包含了4个文件**dfs_posix.c,dfs.c,dfs_file.c,dfs_fs.c**,位于**rt-thread-master\components\dfs\src**目录下,打开dfs目录看一下,里面好多文件呀,我的天呢,这里包含了几乎所有文件系统,有的听都没有听过的。然是如此,别费劲了,全部复制过来。**7.3 添加到工程编译****您看得没错,就是编译!**在工程中新建一个文件夹,叫DeivceFileSysteim专门来放这4个文件,别的先什么也不要管,直接编译,看一下有没有错。【为什么呢?编译器比人老实,人家好仔细地审查代码呢】【先不要管这宏那宏的开关什么的,没有提到去修改config时,都没有操作宏。】 ```dfs\src\dfs.c(26):error: #5: cannot open source input file"dfs.h": No such file or directory #include
``` 这里是故意不加头文件目录的,目的是让新手们知道**借助编译器找错**。将头文件目录包含进去,dfs\include\,再编!又出错了!!! ```.\dfs\include\dfs.h(35):error: #5: cannot open source input file"rtdevice.h": No such file or directory #include
``` 这下子玩蛋了,那个dfs我是没有研究过的,不像uart、i2c、SPI之类的,用到的东西明明白白的,那个**rtdevice.h一出现,我就把它删掉了**。这个dfs.h中包含了它,可能里面很多结构体定义什么的,然道要俺自己去写?不可能!!! **7.4 复制头文件**说实话,很不喜欢这种结构,那个rtdevice.h搞得到处都是,没有用到的地方就不要用它嘛,最小化,最简化。先看一下**它们**在什么地方,它们?是的,它们,那个头文件肯定包含了其他东西,统统复制过来。想也不用想,那个**rtdevice.h**肯定在include里,rt-thread-master\components\drivers\include打开目录,里面好多呢,看到一个drivers,这个文件夹不要。复制 **rtdevice.h 和文件夹ipc 到我们的目录设为 ex_inc [表示外部搞过来的]** **dfs\ex_inc tdevice.h****dfs\ex_inc\ipc\ *.h** **7.5 编译**没错,是编译,俺就是这样玩的,跟上,别说对不对,边错边改。将路径添加到包含目录,**编译!** ```dfs\src\dfs.c(223):warning: #223-D: function"rt_free" declared implicitly rt_free(fullpath); dfs\src\dfs.c(315):error: #513: a value of type"int" cannot be assigned to an entity of type "char *" fullpath =rt_malloc(strlen(directory) + strlen(filename) + 2);``` 出现两个错误!!! 这个玩样是动态分配内存用的,那肯定是我们哪个地方的开关没有打开了。**老方法,全工程查找rt_free,直接定位到一个.h文件,打开看一下,上面是不是有开关**。【这个方法,屡试不爽】 **C:\Keil_v5\ARM\PACK t-thread tthread\3.0.3\include tthread.h(254): void rt_free(void *ptr);** ```#ifdef RT_USING_HEAP /* * heap memory interface */ voidrt_system_heap_init(void *begin_addr, void *end_addr); void *rt_malloc(rt_size_tnbytes);``` **void rt_free(void *ptr);** 然后呢?老方法,全工程查找**RT_USING_HEAP ,肯定在config里,打开它!** ```。。。RTE\RTOS tconfig.h(108) : //#define RT_USING_HEAP``` 编译!世界都安静了!编译成功!到这步,有不成功拿砖来,不是拍我,是我拍你哦,好好看一下,哪错了?是不是RRT2复制过来的? **7.6 开启DFS支持**文档中说那个DFS要开启的话,得有个RT_USING_DFS,那我们查一下,有没有,废话嘛,组件都是复制过来的,怎么可能有?手动添加到config中去。编译!听说还能支持目录,加进去,编译!!! ```#define RT_USING_DFS #define DFS_USING_WORKDIR``` 肯定没有错了。我确定。它就是这么简单。就这样被你玩起来了。还有哪个操作系统可以这样玩?不要再问优势在哪里,动手玩一下就知道。那个使用env来搞的,完全体会不到,这种文件复制过来,然后,添加几个宏选项就能玩的乐趣。强烈建议,新手们不要使用env,不是说它不好,完全掩盖了,操作系统使用的乐趣。应该从Nano开始,手动添加组件,完成env自动化的工作,知道了这些,可能写文件组织脚本时,就轻松多了。 **7.7 小结**好了,写到这里,本章完,下一节将添加FatFs进来。【本章的目的是,添加DFS,所以到这里就结束了。】 本章主要介绍了如何在Nano3上添加DFS组件。 文档下载:![RT_Nano_V3初级教程_7 Nano3添加DFS.pdf](/uploads/201803/27/151752o83qthmg8qn560f8.attach)
查看更多
3
个回答
默认排序
按发布时间排序
我夏了夏天
认证专家
2018-06-05
Life isn't about finding yourself, life is about creating yourself.
厉害了 厉害了 ;P
我夏了夏天
认证专家
2018-06-05
Life isn't about finding yourself, life is about creating yourself.
[i=s] 本帖最后由 Summer_gift 于 2018-6-5 17:20 编辑 [/i] 楼主说的很对,玩RTT就是应该从Nano或者某个特定的BSP开始玩,而不是刚接触RTT就使用env。 不过后面添加更多软件包的时候,使用env来对系统配置是很方便的。 很多人没有楼主这么强的动手能力呀。
wlof
2018-06-23
这个家伙不懒,什么也没写
>楼主说的很对,玩RTT就是应该从Nano或者某个特定的BSP开始玩,而不是刚接触RTT就使用env。 >不过后面添加更 ... --- 使用env主要是为了后期真真用到项目时比较方便,用什么组件配置一下就可以了。 如果是学习,还是应该手动去添加一下,试一试能否自己搞起来,这样可能更能明白其中的关系。 更好的方法是一边使用env,一边自己建工程,对比着看,达到相同功能,简单地说,看一下env生成的都有啥,新的工程中还缺啥,怎么弄进去,这样可能进步会更快一点。 还有官方的文档是个好东西,当手册查就成,用到什么组件,有什么宏,都可以找到。
撰写答案
登录
注册新账号
关注者
0
被浏览
2.5k
关于作者
wlof
这个家伙不懒,什么也没写
提问
24
回答
64
被采纳
0
关注TA
发私信
相关问题
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
CherryUSB的bootuf2配置
2
在用clangd开发RTT吗,快来试试如何简单获得清晰干净的工作区
3
GD32F450 片内 flash驱动适配
4
STM32H7R7运行CherryUSB
5
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
6
次点赞
YZRD
2
篇文章
5
次点赞
lizimu
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部