一、文档背景
嵌入式系统通常需要记录和存储各种数据日志,如传感器数据、错误日志等。FileSystem组件可以被用来创建和管理一个文件系统,方便地将这些数据写入文件并进行读取和分析。
在某些场景下,嵌入式系统可能需要从外部设备或服务器中获取文件,并进行更新或固件升级。FileSystem组件可以提供文件复制、删除和更新等功能,使文件传输和固件更新变得更加容易。
二、 应用FileSystem来实现SD卡上的文件系统功能的思路
1. 在Keil MDK中创建一个新的工程,并添加FileSystem组件。选择“FileSystem”组件,这将向工程中添加FileSystem所需要的源文件和头文件。
2. 配置SD卡的硬件连接和引脚配置。在Keil MDK中,需要根据具体的硬件平台和SD卡的接口协议进行相应的配置。
3. 在主程序中初始化SD卡和文件系统。
三、 如何应用Keil MDK的File System中间件实现文件系统功能
1. 打开uVision,创建一个名称为:STM32F746_FileSystem的项目,如图3-1所示:

图3-1
2. 选择“STM32F746NGHx”处理器,如图3-2所示:

图3-2
3. 选择“CMSIS-->CORE”和“CMSIS-->RTOS2-->Keil RTX5”组件,如图3-3所示:

图3-3
4. 选择“CMSIS Driver-->Flash-->M29W640FB”,如图3-4所示:

图3-4
5. 选择“Devide-->Startup”和“Device-->STM32Cube Framework-->Classic”组件,如图3-5

图3-5
6. 选择“File System-->CORE”,并设置“File System-->Drive-->Memory Card”组件,点击“Resolve”完成相关组件的添加,如图3-6所示:

图3-6
7. 根据目标设备的硬件情况,在“RTE_Device.h”配置文件中设置好引脚信息,如图3-7所示:

图3-7
8. 添加项目的主控程序:main.c,如图3-8所示:

图3-8
9. 添加一个线程程序:FileSystemThread.c,如图3-9所示:

图3-9
10. 修改一下“FileSystemThread.c”这个框架文件,如图3-10所示:

图3-10
11. 在“main.c”中申明一下“Init_FileSystemThread”函数,并调用这个函数,如图3-11所示:

图3-11
12. 打开“FileSystemThread.c”文件,添加与文件系统操作相关的代码(由于代码过多,参考实例代码),如图3-12所示:

图3-12
13. 添加一个键盘输入的代码文件“Getline.c”,如图3-13所示:

图3-13
14. 添加与“EventRecorder”相关组件,如图3-14所示:

图3-14
15. 选择与目标平台相连的仿真器:ST-Link Debugger,如图3-15所示:

图3-15
16. 选中“Reset and Run”,如图3-16所示:

图3-16
17. 编译项目,直到没有任何错误,如图3-17所示:

图3-17
四、在STM32F746开发板实现FileSystem功能
在SD卡中创建一个目录和一个文件,再把SD接到开发板上,连接好硬件,点击调试按钮把程序下载到目标板中,运行程序,在“Debug Viewer”的窗体中,输入“dir”,则可以看到SD的内容,如图4-1所示:

图4-1
五、讨论分析
1. 如何实现更多的文档操作的命令?
在Keil MDK中,可以使用FileSystem组件提供的API来实现更多的文件操作命令。如打开文件:使用f_open函数打开文件,指定文件名和打开模式。
2. 如何把文件系统的信息呈现在LCD屏上?
要将文件系统的信息呈现在LCD屏上,你需要使用Keil MDK提供的相关库函数和API,并结合LCD模块的驱动程序来实现。下面是一个大致的步骤:
1) 在Keil MDK中,创建LCD驱动程序,用于控制LCD屏的显示。具体的创建方式和实现方法请参考Keil MDK提供的相关文档和例程。
2) 使用FileSystem组件提供的API来获取文件系统的信息,例如获取文件列表、文件属性等。具体的API函数可以查阅Keil MDK提供的相关文档。
3) 在LCD驱动程序中,通过调用相关函数来在LCD屏上显示文件系统的信息。具体的显示方式和布局可以根据需要进行设计。
六、结论
使用Keil MDK的FileSystem中间件,可以快速高效地实现文件系统功能。