Ignore:
Timestamp:
Oct 20, 2026, 2:17:01 PM (2 weeks ago)
Author:
Zed
Message:

Commiting the project to add SDMMC2 device into FSBL to be able to deal with it correctly in debugger.

Location:
trunk/firmware/App/SES/Core/Tasks
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/firmware/App/SES/Core/Tasks/Inc/sdmmcTask.h

    r33 r36  
    11#ifndef __SDMMCTASK_H
    22#define __SDMMCTASK_H
     3
     4typedef enum SdCardCmd
     5{
     6    SDMMC_Initialize,
     7    SDMMC_Deinitialize,
     8} SdCardCmd_t;
    39
    410#ifdef __cplusplus
  • trunk/firmware/App/SES/Core/Tasks/Src/mainTask.cpp

    r35 r36  
    1212void StartMainTask(void* arg)
    1313{
     14        osDelay(6000U);
    1415        while(1)
    1516        {
  • trunk/firmware/App/SES/Core/Tasks/Src/sdmmcTask.cpp

    r35 r36  
    1616    NotPresent,
    1717    Inserted,
    18     Initialized,
    19     Deinitialized,
    20     Error
    2118};
    2219
     20extern osMessageQueueId_t sdmmcCmdQueueHandle;
     21
    2322constexpr unsigned SD_PRESENCE_SCAN_RATE_ms = 50U;
    24 constexpr unsigned MEDIA_CLOSED = 1U;
    25 constexpr unsigned MEDIA_OPENED = 0U;
    2623
    2724CHAR FX_SD_VOLUME_NAME[] = "SDMMC";
    … …  
    5350                                                        sdLastState = sdCurrentState = SdCardState::Inserted;
    5451                                                        printf("SD-card was inserted\n");
     52                                                        SdCardCmd_t msg = SDMMC_Initialize;
     53                                                        osStatus_t status = osMessageQueuePut(sdmmcCmdQueueHandle, &msg, 0U, osWaitForever);
     54                                                        if (status != osOK) printf("Cannot put SDMMC_INIT message into queue!\n");
    5555                                                }
    5656                                        }
    … …  
    6363
    6464                        case SdCardState::Inserted:
    65                                 if (HAL_GPIO_ReadPin(SD_PRESENCE_GPIO_Port, SD_PRESENCE_Pin) == SD_PRESENT)
     65                                if (HAL_GPIO_ReadPin(SD_PRESENCE_GPIO_Port, SD_PRESENCE_Pin) == SD_NOT_PRESENT)
    6666                                {
    6767                                        insertionDetectionCnt = 0;
    … …  
    7272                                                        sdLastState = sdCurrentState = SdCardState::NotPresent;
    7373                                                        printf("SD-card was extracted\n");
     74                                                        SdCardCmd_t msg = SDMMC_Deinitialize;
     75                                                        osStatus_t status = osMessageQueuePut(sdmmcCmdQueueHandle, &msg, 0U, osWaitForever);
     76                                                        if (status != osOK) printf("Cannot put SDMMC_DEINIT message into queue!\n");
    7477                                                }
    7578                                        }
    … …  
    8083                                        extractionDetectionCnt = 0;
    8184                                break;
     85                } // switch(sdCurrentState)
    8286
    83                         case SdCardState::Initialized: break;
    84                         case SdCardState::Deinitialized: break;
    85                         case SdCardState::Error: break;
     87                UINT sd_status;
     88                SdCardCmd_t msg;
     89                osStatus_t status = osMessageQueueGet(sdmmcCmdQueueHandle, &msg, NULL, SD_PRESENCE_SCAN_RATE_ms);   // wait for a message
     90                if (status == osOK)
     91                {
     92                        switch(msg)
     93                        {
     94                                case SDMMC_Initialize:
     95                                        printf("Initializing...\n");
     96                                        // Open the SD disk driver
     97                                        sd_status =  fx_media_open(&sdio_disk, FX_SD_VOLUME_NAME, fx_stm32_sd_driver, (VOID*)FX_NULL, (VOID*)fx_sd_media_memory, sizeof(fx_sd_media_memory));
     98                                        // Check the media open sd_status
     99                                        if (sd_status == FX_SUCCESS)
     100                                        {
     101                                        }
     102                                        else
     103                                                printf("Cannot open media!\n");
     104
     105                                        break;
     106
     107                                case SDMMC_Deinitialize:
     108                                        printf("Deinitializing...\n");
     109                                        break;
     110                        }
    86111                }
    87                 osDelay(SD_PRESENCE_SCAN_RATE_ms);
    88         }
    89 
    90         /*UINT sd_status = FX_SUCCESS;
    91         fx_system_initialize();                                                                                                         // Initialize FileX
    92 
    93         // Open the SD disk driver
    94         sd_status =  fx_media_open(&sdio_disk, FX_SD_VOLUME_NAME, fx_stm32_sd_driver, (VOID *)FX_NULL, (VOID *) fx_sd_media_memory, sizeof(fx_sd_media_memory));
    95 
    96         fx_media_close_notify_set(&sdio_disk, [](FX_MEDIA* media_ptr) { UNUSED(media_ptr); media_status = MEDIA_CLOSED; });
    97 
    98 
    99         // Check the media open sd_status
    100         if (sd_status != FX_SUCCESS)
    101         {
    102                 Error_Handler();
    103         }*/
    104 
    105 
    106         while(1)
    107         {
    108                 osDelay(1000U);
    109         }
     112        } // while(1)
    110113}
Note: See TracChangeset for help on using the changeset viewer.