diff options
Diffstat (limited to 'STM32_bootloader/FATFS/Target/user_diskio.c')
-rw-r--r-- | STM32_bootloader/FATFS/Target/user_diskio.c | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/STM32_bootloader/FATFS/Target/user_diskio.c b/STM32_bootloader/FATFS/Target/user_diskio.c deleted file mode 100644 index 25b4a68..0000000 --- a/STM32_bootloader/FATFS/Target/user_diskio.c +++ /dev/null @@ -1,210 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file user_diskio.c - * @brief This file includes a diskio driver skeleton to be completed by the user. - ****************************************************************************** - * @attention - * - * <h2><center>© Copyright (c) 2022 STMicroelectronics. - * All rights reserved.</center></h2> - * - * This software component is licensed by ST under Ultimate Liberty license - * SLA0044, the "License"; You may not use this file except in compliance with - * the License. You may obtain a copy of the License at: - * www.st.com/SLA0044 - * - ****************************************************************************** - */ - /* USER CODE END Header */ - -#ifdef USE_OBSOLETE_USER_CODE_SECTION_0 -/* - * Warning: the user section 0 is no more in use (starting from CubeMx version 4.16.0) - * To be suppressed in the future. - * Kept to ensure backward compatibility with previous CubeMx versions when - * migrating projects. - * User code previously added there should be copied in the new user sections before - * the section contents can be deleted. - */ -/* USER CODE BEGIN 0 */ -/* USER CODE END 0 */ -#endif - -/* USER CODE BEGIN DECL */ - -/* Includes ------------------------------------------------------------------*/ -#include <string.h> -#include "ff_gen_drv.h" -#include "bootloader.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ - -/* Private variables ---------------------------------------------------------*/ -/* Disk status */ -static volatile DSTATUS Stat = STA_NOINIT; - -/* USER CODE END DECL */ - -/* Private function prototypes -----------------------------------------------*/ -DSTATUS USER_initialize (BYTE pdrv); -DSTATUS USER_status (BYTE pdrv); -DRESULT USER_read (BYTE pdrv, BYTE *buff, DWORD sector, UINT count); -#if _USE_WRITE == 1 - DRESULT USER_write (BYTE pdrv, const BYTE *buff, DWORD sector, UINT count); -#endif /* _USE_WRITE == 1 */ -#if _USE_IOCTL == 1 - DRESULT USER_ioctl (BYTE pdrv, BYTE cmd, void *buff); -#endif /* _USE_IOCTL == 1 */ - -Diskio_drvTypeDef USER_Driver = -{ - USER_initialize, - USER_status, - USER_read, -#if _USE_WRITE - USER_write, -#endif /* _USE_WRITE == 1 */ -#if _USE_IOCTL == 1 - USER_ioctl, -#endif /* _USE_IOCTL == 1 */ -}; - -/* Private functions ---------------------------------------------------------*/ - -/** - * @brief Initializes a Drive - * @param pdrv: Physical drive number (0..) - * @retval DSTATUS: Operation status - */ -DSTATUS USER_initialize ( - BYTE pdrv /* Physical drive nmuber to identify the drive */ -) -{ - /* USER CODE BEGIN INIT */ - return 0; - /* USER CODE END INIT */ -} - -/** - * @brief Gets Disk Status - * @param pdrv: Physical drive number (0..) - * @retval DSTATUS: Operation status - */ -DSTATUS USER_status ( - BYTE pdrv /* Physical drive number to identify the drive */ -) -{ - /* USER CODE BEGIN STATUS */ - return 0; - /* USER CODE END STATUS */ -} - -/** - * @brief Reads Sector(s) - * @param pdrv: Physical drive number (0..) - * @param *buff: Data buffer to store read data - * @param sector: Sector address (LBA) - * @param count: Number of sectors to read (1..128) - * @retval DRESULT: Operation result - */ -DRESULT USER_read ( - BYTE pdrv, /* Physical drive nmuber to identify the drive */ - BYTE *buff, /* Data buffer to store read data */ - DWORD sector, /* Sector address in LBA */ - UINT count /* Number of sectors to read */ -) -{ - /* USER CODE BEGIN READ */ - int i; - uint32_t address = MSD_ADDRESS + sector * MSD_BLOCK_SIZE; - - for (; count > 0; count--) { - for (i = 0; i < MSD_BLOCK_SIZE; i++) { - *buff = *((volatile uint8_t*) address); - buff++; - address++; - } - } - return RES_OK; - /* USER CODE END READ */ -} - -/** - * @brief Writes Sector(s) - * @param pdrv: Physical drive number (0..) - * @param *buff: Data to be written - * @param sector: Sector address (LBA) - * @param count: Number of sectors to write (1..128) - * @retval DRESULT: Operation result - */ -#if _USE_WRITE == 1 -DRESULT USER_write ( - BYTE pdrv, /* Physical drive nmuber to identify the drive */ - const BYTE *buff, /* Data to be written */ - DWORD sector, /* Sector address in LBA */ - UINT count /* Number of sectors to write */ -) -{ - /* USER CODE BEGIN WRITE */ - /* USER CODE HERE */ - int res, i; - uint16_t value; - uint32_t address = MSD_ADDRESS + sector * MSD_BLOCK_SIZE; - - res = HAL_FLASH_Unlock(); - if (res != HAL_OK) - return RES_ERROR; - - FLASH_EraseInitTypeDef erase_init_struct; - uint32_t sector_error = 0; - erase_init_struct.TypeErase = FLASH_TYPEERASE_PAGES; - erase_init_struct.PageAddress = address; - erase_init_struct.NbPages = count; - res = HAL_FLASHEx_Erase(&erase_init_struct, §or_error); - if (res != HAL_OK) { - HAL_FLASH_Lock(); - return RES_ERROR; - } - - for (; count > 0; count--) { - for (i = 0; i < MSD_BLOCK_SIZE; i += 2) { - value = *(volatile uint16_t*) buff; - res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, value); - if (res != HAL_OK) { - HAL_FLASH_Lock(); - return RES_ERROR; - } - buff += 2; - address += 2; - } - } - - HAL_FLASH_Lock(); - return RES_OK; - /* USER CODE END WRITE */ -} -#endif /* _USE_WRITE == 1 */ - -/** - * @brief I/O control operation - * @param pdrv: Physical drive number (0..) - * @param cmd: Control code - * @param *buff: Buffer to send/receive control data - * @retval DRESULT: Operation result - */ -#if _USE_IOCTL == 1 -DRESULT USER_ioctl ( - BYTE pdrv, /* Physical drive nmuber (0..) */ - BYTE cmd, /* Control code */ - void *buff /* Buffer to send/receive control data */ -) -{ - /* USER CODE BEGIN IOCTL */ - DRESULT res = RES_ERROR; - return res; - /* USER CODE END IOCTL */ -} -#endif /* _USE_IOCTL == 1 */ - |