diff --git a/hal/src/SdCardHal.cpp b/hal/src/SdCardHal.cpp index c2ef9ca..0ee6b58 100644 --- a/hal/src/SdCardHal.cpp +++ b/hal/src/SdCardHal.cpp @@ -67,14 +67,16 @@ StatusCode SdCardHal::GetCapacity(unsigned long long &totalSizeMB, unsigned long } StatusCode SdCardHal::FormatSDCard(void) { + UnInit(); char command[128] = {0}; - sprintf(command, "mkfs.ext4 -F %s", SD_CARD_DEVICE); + sprintf(command, "mkfs.vfat -F 32 %s", SD_CARD_DEVICE); int ret = fx_system(command); if (ret != 0) { LogError("Format sd card failed [%s].\n", SD_CARD_DEVICE); return CreateStatusCode(STATUS_CODE_NOT_OK); } LogInfo("Format sd card success.\n"); + Init(); return CreateStatusCode(STATUS_CODE_OK); } void SdCardHal::Init(void) @@ -91,6 +93,7 @@ void SdCardHal::UnInit(void) if (mDevDetectingThread.joinable()) { mDevDetectingThread.join(); } + UnmountSdCard(); } void SdCardHal::DevDetectingThread(void) { @@ -202,4 +205,22 @@ const char *SdCardHal::PrintfStatusString(const SdCardHalStatus &status) default: return "UNDEFINE."; } +} +void SdCardHal::UnmountSdCard(void) +{ + char command[128] = {0}; + /** TODO: + * @brief Here, the SD card is forcibly loaded, and the DevDetectingThread function of this article causes the SD + * card node to be occupied and cannot be loaded. To find problems and optimize them, it is especially important to + * check whether there are any omissions. + */ + sprintf(command, "umount -fl %s", SD_CARD_MOUNT_PATH); + int ret = fx_system(command); + if (ret != 0) { + LogError("Format sd card failed [%s].\n", SD_CARD_DEVICE); + return; + } +} +void SdCardHal::MountSdCard(void) +{ } \ No newline at end of file diff --git a/hal/src/SdCardHal.h b/hal/src/SdCardHal.h index ed81230..3adbaad 100644 --- a/hal/src/SdCardHal.h +++ b/hal/src/SdCardHal.h @@ -33,6 +33,8 @@ public: private: void ReportDetecedChangedResult(const SdCardHalStatus &status); const char *PrintfStatusString(const SdCardHalStatus &status); + void UnmountSdCard(void); + void MountSdCard(void); private: SdCardHalStatus mStatus;