一、文檔背景
嵌入式系統通常需要記錄和存儲各種數據日志,如傳感器數據、錯誤日志等。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中間件,可以快速高效地實現文件系統功能。