From 20cb59ee6d2994870d253338f176358dc8cf2e6a Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Mon, 2 Feb 2026 17:13:44 +0300 Subject: [PATCH] deleted build --- build/File_Handling.d | 108 - build/File_Handling.lst | 3501 --- build/File_Handling.o | Bin 34784 -> 0 bytes build/For_stm32.bin | Bin 44412 -> 0 bytes build/For_stm32.elf | Bin 730904 -> 0 bytes build/For_stm32.hex | 2782 --- build/For_stm32.map | 5297 ----- build/bsp_driver_sd.d | 70 - build/bsp_driver_sd.lst | 1072 - build/bsp_driver_sd.o | Bin 19808 -> 0 bytes build/diskio.d | 104 - build/diskio.lst | 473 - build/diskio.o | Bin 9212 -> 0 bytes build/fatfs.d | 107 - build/fatfs.lst | 193 - build/fatfs.o | Bin 6788 -> 0 bytes build/fatfs_platform.d | 68 - build/fatfs_platform.lst | 119 - build/fatfs_platform.o | Bin 4024 -> 0 bytes build/ff.d | 101 - build/ff.lst | 22719 ------------------- build/ff.o | Bin 130972 -> 0 bytes build/ff_gen_drv.d | 104 - build/ff_gen_drv.lst | 474 - build/ff_gen_drv.o | Bin 9024 -> 0 bytes build/main.d | 112 - build/main.lst | 34296 ----------------------------- build/main.o | Bin 134592 -> 0 bytes build/sd_diskio.d | 105 - build/sd_diskio.lst | 742 - build/sd_diskio.o | Bin 11816 -> 0 bytes build/startup_stm32f767xx.d | 1 - build/startup_stm32f767xx.o | Bin 8360 -> 0 bytes build/stm32f7xx_hal.d | 67 - build/stm32f7xx_hal.lst | 1817 -- build/stm32f7xx_hal.o | Bin 22260 -> 0 bytes build/stm32f7xx_hal_adc.d | 68 - build/stm32f7xx_hal_adc.lst | 6376 ------ build/stm32f7xx_hal_adc.o | Bin 32704 -> 0 bytes build/stm32f7xx_hal_adc_ex.d | 68 - build/stm32f7xx_hal_adc_ex.lst | 4040 ---- build/stm32f7xx_hal_adc_ex.o | Bin 25984 -> 0 bytes build/stm32f7xx_hal_cortex.d | 68 - build/stm32f7xx_hal_cortex.lst | 5769 ----- build/stm32f7xx_hal_cortex.o | Bin 28472 -> 0 bytes build/stm32f7xx_hal_dma.d | 68 - build/stm32f7xx_hal_dma.lst | 4646 ---- build/stm32f7xx_hal_dma.o | Bin 26424 -> 0 bytes build/stm32f7xx_hal_dma_ex.d | 68 - build/stm32f7xx_hal_dma_ex.lst | 3762 ---- build/stm32f7xx_hal_dma_ex.o | Bin 17248 -> 0 bytes build/stm32f7xx_hal_exti.d | 68 - build/stm32f7xx_hal_exti.lst | 1554 -- build/stm32f7xx_hal_exti.o | Bin 12992 -> 0 bytes build/stm32f7xx_hal_flash.d | 68 - build/stm32f7xx_hal_flash.lst | 3466 --- build/stm32f7xx_hal_flash.o | Bin 17536 -> 0 bytes build/stm32f7xx_hal_flash_ex.d | 68 - build/stm32f7xx_hal_flash_ex.lst | 3759 ---- build/stm32f7xx_hal_flash_ex.o | Bin 20680 -> 0 bytes build/stm32f7xx_hal_gpio.d | 68 - build/stm32f7xx_hal_gpio.lst | 1814 -- build/stm32f7xx_hal_gpio.o | Bin 14484 -> 0 bytes build/stm32f7xx_hal_i2c.d | 68 - build/stm32f7xx_hal_i2c.lst | 28773 ------------------------ build/stm32f7xx_hal_i2c.o | Bin 148608 -> 0 bytes build/stm32f7xx_hal_i2c_ex.d | 68 - build/stm32f7xx_hal_i2c_ex.lst | 634 - build/stm32f7xx_hal_i2c_ex.o | Bin 11256 -> 0 bytes build/stm32f7xx_hal_msp.d | 92 - build/stm32f7xx_hal_msp.lst | 2263 -- build/stm32f7xx_hal_msp.o | Bin 32220 -> 0 bytes build/stm32f7xx_hal_pwr.d | 68 - build/stm32f7xx_hal_pwr.lst | 2379 -- build/stm32f7xx_hal_pwr.o | Bin 13612 -> 0 bytes build/stm32f7xx_hal_pwr_ex.d | 68 - build/stm32f7xx_hal_pwr_ex.lst | 1648 -- build/stm32f7xx_hal_pwr_ex.o | Bin 16236 -> 0 bytes build/stm32f7xx_hal_rcc.d | 68 - build/stm32f7xx_hal_rcc.lst | 5244 ----- build/stm32f7xx_hal_rcc.o | Bin 24432 -> 0 bytes build/stm32f7xx_hal_rcc_ex.d | 68 - build/stm32f7xx_hal_rcc_ex.lst | 4544 ---- build/stm32f7xx_hal_rcc_ex.o | Bin 20860 -> 0 bytes build/stm32f7xx_hal_sd.d | 68 - build/stm32f7xx_hal_sd.lst | 12948 ----------- build/stm32f7xx_hal_sd.o | Bin 75156 -> 0 bytes build/stm32f7xx_hal_tim.d | 68 - build/stm32f7xx_hal_tim.lst | 29972 ------------------------- build/stm32f7xx_hal_tim.o | Bin 160408 -> 0 bytes build/stm32f7xx_hal_tim_ex.d | 68 - build/stm32f7xx_hal_tim_ex.lst | 10691 --------- build/stm32f7xx_hal_tim_ex.o | Bin 67256 -> 0 bytes build/stm32f7xx_hal_uart.d | 68 - build/stm32f7xx_hal_uart.lst | 20279 ----------------- build/stm32f7xx_hal_uart.o | Bin 129304 -> 0 bytes build/stm32f7xx_hal_uart_ex.d | 68 - build/stm32f7xx_hal_uart_ex.lst | 3980 ---- build/stm32f7xx_hal_uart_ex.o | Bin 26092 -> 0 bytes build/stm32f7xx_it.d | 93 - build/stm32f7xx_it.lst | 13989 ------------ build/stm32f7xx_it.o | Bin 28160 -> 0 bytes build/stm32f7xx_ll_dma.d | 72 - build/stm32f7xx_ll_dma.lst | 3506 --- build/stm32f7xx_ll_dma.o | Bin 14784 -> 0 bytes build/stm32f7xx_ll_exti.d | 70 - build/stm32f7xx_ll_exti.lst | 1533 -- build/stm32f7xx_ll_exti.o | Bin 8940 -> 0 bytes build/stm32f7xx_ll_gpio.d | 72 - build/stm32f7xx_ll_gpio.lst | 3966 ---- build/stm32f7xx_ll_gpio.o | Bin 19376 -> 0 bytes build/stm32f7xx_ll_rcc.d | 70 - build/stm32f7xx_ll_rcc.lst | 11469 ---------- build/stm32f7xx_ll_rcc.o | Bin 48784 -> 0 bytes build/stm32f7xx_ll_sdmmc.d | 68 - build/stm32f7xx_ll_sdmmc.lst | 6063 ----- build/stm32f7xx_ll_sdmmc.o | Bin 47424 -> 0 bytes build/stm32f7xx_ll_spi.d | 74 - build/stm32f7xx_ll_spi.lst | 5233 ----- build/stm32f7xx_ll_spi.o | Bin 15748 -> 0 bytes build/stm32f7xx_ll_tim.d | 72 - build/stm32f7xx_ll_tim.lst | 11811 ---------- build/stm32f7xx_ll_tim.o | Bin 41128 -> 0 bytes build/stm32f7xx_ll_usart.d | 74 - build/stm32f7xx_ll_usart.lst | 5295 ----- build/stm32f7xx_ll_usart.o | Bin 17516 -> 0 bytes build/stm32f7xx_ll_utils.d | 76 - build/stm32f7xx_ll_utils.lst | 8356 ------- build/stm32f7xx_ll_utils.o | Bin 20452 -> 0 bytes build/syscall.d | 100 - build/syscall.lst | 33 - build/syscall.o | Bin 2620 -> 0 bytes build/syscalls.d | 1 - build/syscalls.lst | 871 - build/syscalls.o | Bin 14908 -> 0 bytes build/sysmem.d | 1 - build/sysmem.lst | 231 - build/sysmem.o | Bin 4132 -> 0 bytes build/system_stm32f7xx.d | 67 - build/system_stm32f7xx.lst | 569 - build/system_stm32f7xx.o | Bin 8312 -> 0 bytes 141 files changed, 308260 deletions(-) delete mode 100644 build/File_Handling.d delete mode 100644 build/File_Handling.lst delete mode 100644 build/File_Handling.o delete mode 100755 build/For_stm32.bin delete mode 100755 build/For_stm32.elf delete mode 100644 build/For_stm32.hex delete mode 100644 build/For_stm32.map delete mode 100644 build/bsp_driver_sd.d delete mode 100644 build/bsp_driver_sd.lst delete mode 100644 build/bsp_driver_sd.o delete mode 100644 build/diskio.d delete mode 100644 build/diskio.lst delete mode 100644 build/diskio.o delete mode 100644 build/fatfs.d delete mode 100644 build/fatfs.lst delete mode 100644 build/fatfs.o delete mode 100644 build/fatfs_platform.d delete mode 100644 build/fatfs_platform.lst delete mode 100644 build/fatfs_platform.o delete mode 100644 build/ff.d delete mode 100644 build/ff.lst delete mode 100644 build/ff.o delete mode 100644 build/ff_gen_drv.d delete mode 100644 build/ff_gen_drv.lst delete mode 100644 build/ff_gen_drv.o delete mode 100644 build/main.d delete mode 100644 build/main.lst delete mode 100644 build/main.o delete mode 100644 build/sd_diskio.d delete mode 100644 build/sd_diskio.lst delete mode 100644 build/sd_diskio.o delete mode 100644 build/startup_stm32f767xx.d delete mode 100644 build/startup_stm32f767xx.o delete mode 100644 build/stm32f7xx_hal.d delete mode 100644 build/stm32f7xx_hal.lst delete mode 100644 build/stm32f7xx_hal.o delete mode 100644 build/stm32f7xx_hal_adc.d delete mode 100644 build/stm32f7xx_hal_adc.lst delete mode 100644 build/stm32f7xx_hal_adc.o delete mode 100644 build/stm32f7xx_hal_adc_ex.d delete mode 100644 build/stm32f7xx_hal_adc_ex.lst delete mode 100644 build/stm32f7xx_hal_adc_ex.o delete mode 100644 build/stm32f7xx_hal_cortex.d delete mode 100644 build/stm32f7xx_hal_cortex.lst delete mode 100644 build/stm32f7xx_hal_cortex.o delete mode 100644 build/stm32f7xx_hal_dma.d delete mode 100644 build/stm32f7xx_hal_dma.lst delete mode 100644 build/stm32f7xx_hal_dma.o delete mode 100644 build/stm32f7xx_hal_dma_ex.d delete mode 100644 build/stm32f7xx_hal_dma_ex.lst delete mode 100644 build/stm32f7xx_hal_dma_ex.o delete mode 100644 build/stm32f7xx_hal_exti.d delete mode 100644 build/stm32f7xx_hal_exti.lst delete mode 100644 build/stm32f7xx_hal_exti.o delete mode 100644 build/stm32f7xx_hal_flash.d delete mode 100644 build/stm32f7xx_hal_flash.lst delete mode 100644 build/stm32f7xx_hal_flash.o delete mode 100644 build/stm32f7xx_hal_flash_ex.d delete mode 100644 build/stm32f7xx_hal_flash_ex.lst delete mode 100644 build/stm32f7xx_hal_flash_ex.o delete mode 100644 build/stm32f7xx_hal_gpio.d delete mode 100644 build/stm32f7xx_hal_gpio.lst delete mode 100644 build/stm32f7xx_hal_gpio.o delete mode 100644 build/stm32f7xx_hal_i2c.d delete mode 100644 build/stm32f7xx_hal_i2c.lst delete mode 100644 build/stm32f7xx_hal_i2c.o delete mode 100644 build/stm32f7xx_hal_i2c_ex.d delete mode 100644 build/stm32f7xx_hal_i2c_ex.lst delete mode 100644 build/stm32f7xx_hal_i2c_ex.o delete mode 100644 build/stm32f7xx_hal_msp.d delete mode 100644 build/stm32f7xx_hal_msp.lst delete mode 100644 build/stm32f7xx_hal_msp.o delete mode 100644 build/stm32f7xx_hal_pwr.d delete mode 100644 build/stm32f7xx_hal_pwr.lst delete mode 100644 build/stm32f7xx_hal_pwr.o delete mode 100644 build/stm32f7xx_hal_pwr_ex.d delete mode 100644 build/stm32f7xx_hal_pwr_ex.lst delete mode 100644 build/stm32f7xx_hal_pwr_ex.o delete mode 100644 build/stm32f7xx_hal_rcc.d delete mode 100644 build/stm32f7xx_hal_rcc.lst delete mode 100644 build/stm32f7xx_hal_rcc.o delete mode 100644 build/stm32f7xx_hal_rcc_ex.d delete mode 100644 build/stm32f7xx_hal_rcc_ex.lst delete mode 100644 build/stm32f7xx_hal_rcc_ex.o delete mode 100644 build/stm32f7xx_hal_sd.d delete mode 100644 build/stm32f7xx_hal_sd.lst delete mode 100644 build/stm32f7xx_hal_sd.o delete mode 100644 build/stm32f7xx_hal_tim.d delete mode 100644 build/stm32f7xx_hal_tim.lst delete mode 100644 build/stm32f7xx_hal_tim.o delete mode 100644 build/stm32f7xx_hal_tim_ex.d delete mode 100644 build/stm32f7xx_hal_tim_ex.lst delete mode 100644 build/stm32f7xx_hal_tim_ex.o delete mode 100644 build/stm32f7xx_hal_uart.d delete mode 100644 build/stm32f7xx_hal_uart.lst delete mode 100644 build/stm32f7xx_hal_uart.o delete mode 100644 build/stm32f7xx_hal_uart_ex.d delete mode 100644 build/stm32f7xx_hal_uart_ex.lst delete mode 100644 build/stm32f7xx_hal_uart_ex.o delete mode 100644 build/stm32f7xx_it.d delete mode 100644 build/stm32f7xx_it.lst delete mode 100644 build/stm32f7xx_it.o delete mode 100644 build/stm32f7xx_ll_dma.d delete mode 100644 build/stm32f7xx_ll_dma.lst delete mode 100644 build/stm32f7xx_ll_dma.o delete mode 100644 build/stm32f7xx_ll_exti.d delete mode 100644 build/stm32f7xx_ll_exti.lst delete mode 100644 build/stm32f7xx_ll_exti.o delete mode 100644 build/stm32f7xx_ll_gpio.d delete mode 100644 build/stm32f7xx_ll_gpio.lst delete mode 100644 build/stm32f7xx_ll_gpio.o delete mode 100644 build/stm32f7xx_ll_rcc.d delete mode 100644 build/stm32f7xx_ll_rcc.lst delete mode 100644 build/stm32f7xx_ll_rcc.o delete mode 100644 build/stm32f7xx_ll_sdmmc.d delete mode 100644 build/stm32f7xx_ll_sdmmc.lst delete mode 100644 build/stm32f7xx_ll_sdmmc.o delete mode 100644 build/stm32f7xx_ll_spi.d delete mode 100644 build/stm32f7xx_ll_spi.lst delete mode 100644 build/stm32f7xx_ll_spi.o delete mode 100644 build/stm32f7xx_ll_tim.d delete mode 100644 build/stm32f7xx_ll_tim.lst delete mode 100644 build/stm32f7xx_ll_tim.o delete mode 100644 build/stm32f7xx_ll_usart.d delete mode 100644 build/stm32f7xx_ll_usart.lst delete mode 100644 build/stm32f7xx_ll_usart.o delete mode 100644 build/stm32f7xx_ll_utils.d delete mode 100644 build/stm32f7xx_ll_utils.lst delete mode 100644 build/stm32f7xx_ll_utils.o delete mode 100644 build/syscall.d delete mode 100644 build/syscall.lst delete mode 100644 build/syscall.o delete mode 100644 build/syscalls.d delete mode 100644 build/syscalls.lst delete mode 100644 build/syscalls.o delete mode 100644 build/sysmem.d delete mode 100644 build/sysmem.lst delete mode 100644 build/sysmem.o delete mode 100644 build/system_stm32f7xx.d delete mode 100644 build/system_stm32f7xx.lst delete mode 100644 build/system_stm32f7xx.o diff --git a/build/File_Handling.d b/build/File_Handling.d deleted file mode 100644 index 08e22b9..0000000 --- a/build/File_Handling.d +++ /dev/null @@ -1,108 +0,0 @@ -build/File_Handling.o: Src/File_Handling.c Inc/File_Handling.h \ - Inc/fatfs.h Middlewares/Third_Party/FatFs/src/ff.h \ - Middlewares/Third_Party/FatFs/src/integer.h Inc/ffconf.h Inc/main.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h \ - Inc/stm32f7xx_hal_conf.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h \ - Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h \ - Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h \ - Drivers/CMSIS/Include/core_cm7.h Drivers/CMSIS/Include/cmsis_version.h \ - Drivers/CMSIS/Include/cmsis_compiler.h Drivers/CMSIS/Include/cmsis_gcc.h \ - Drivers/CMSIS/Include/mpu_armv7.h \ - Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h \ - Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h Inc/bsp_driver_sd.h \ - Inc/fatfs_platform.h Middlewares/Third_Party/FatFs/src/ff_gen_drv.h \ - Middlewares/Third_Party/FatFs/src/diskio.h \ - Middlewares/Third_Party/FatFs/src/ff.h Inc/sd_diskio.h -Inc/File_Handling.h: -Inc/fatfs.h: -Middlewares/Third_Party/FatFs/src/ff.h: -Middlewares/Third_Party/FatFs/src/integer.h: -Inc/ffconf.h: -Inc/main.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h: -Inc/stm32f7xx_hal_conf.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h: -Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h: -Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h: -Drivers/CMSIS/Include/core_cm7.h: -Drivers/CMSIS/Include/cmsis_version.h: -Drivers/CMSIS/Include/cmsis_compiler.h: -Drivers/CMSIS/Include/cmsis_gcc.h: -Drivers/CMSIS/Include/mpu_armv7.h: -Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h: -Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_adc_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_sd.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_sdmmc.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_spi.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_usart.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_bus.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_cortex.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_system.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_pwr.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_gpio.h: -Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_exti.h: -Inc/bsp_driver_sd.h: -Inc/fatfs_platform.h: -Middlewares/Third_Party/FatFs/src/ff_gen_drv.h: -Middlewares/Third_Party/FatFs/src/diskio.h: -Middlewares/Third_Party/FatFs/src/ff.h: -Inc/sd_diskio.h: diff --git a/build/File_Handling.lst b/build/File_Handling.lst deleted file mode 100644 index b614855..0000000 --- a/build/File_Handling.lst +++ /dev/null @@ -1,3501 +0,0 @@ -ARM GAS /tmp/cccCjqCZ.s page 1 - - - 1 .cpu cortex-m7 - 2 .arch armv7e-m - 3 .fpu fpv5-d16 - 4 .eabi_attribute 28, 1 - 5 .eabi_attribute 20, 1 - 6 .eabi_attribute 21, 1 - 7 .eabi_attribute 23, 3 - 8 .eabi_attribute 24, 1 - 9 .eabi_attribute 25, 1 - 10 .eabi_attribute 26, 1 - 11 .eabi_attribute 30, 1 - 12 .eabi_attribute 34, 1 - 13 .eabi_attribute 18, 4 - 14 .file "File_Handling.c" - 15 .text - 16 .Ltext0: - 17 .cfi_sections .debug_frame - 18 .file 1 "Src/File_Handling.c" - 19 .section .text.Send_Uart,"ax",%progbits - 20 .align 1 - 21 .global Send_Uart - 22 .syntax unified - 23 .thumb - 24 .thumb_func - 26 Send_Uart: - 27 .LVL0: - 28 .LFB1186: - 1:Src/File_Handling.c **** /* - 2:Src/File_Handling.c **** * File_Handling_RTOS.c - 3:Src/File_Handling.c **** * - 4:Src/File_Handling.c **** * Created on: 14-May-2020 - 5:Src/File_Handling.c **** * Author: Controllerstech - 6:Src/File_Handling.c **** */ - 7:Src/File_Handling.c **** - 8:Src/File_Handling.c **** #include - 9:Src/File_Handling.c **** #include "stm32f7xx_hal.h" - 10:Src/File_Handling.c **** - 11:Src/File_Handling.c **** #define UART USART1 - 12:Src/File_Handling.c **** - 13:Src/File_Handling.c **** - 14:Src/File_Handling.c **** - 15:Src/File_Handling.c **** /* =============================>>>>>>>> NO CHANGES AFTER THIS LINE =============================== - 16:Src/File_Handling.c **** - 17:Src/File_Handling.c **** FATFS fs; // file system - 18:Src/File_Handling.c **** FIL fil; // File - 19:Src/File_Handling.c **** FILINFO fno; - 20:Src/File_Handling.c **** extern FRESULT fresult; // result - 21:Src/File_Handling.c **** extern unsigned long sizeoffile; - 22:Src/File_Handling.c **** UINT br, bw; // File read/write count - 23:Src/File_Handling.c **** - 24:Src/File_Handling.c **** /**** capacity related *****/ - 25:Src/File_Handling.c **** FATFS *pfs; - 26:Src/File_Handling.c **** DWORD fre_clust; - 27:Src/File_Handling.c **** uint32_t total, free_space; - 28:Src/File_Handling.c **** - 29:Src/File_Handling.c **** - 30:Src/File_Handling.c **** void Send_Uart (char *string) - ARM GAS /tmp/cccCjqCZ.s page 2 - - - 31:Src/File_Handling.c **** { - 29 .loc 1 31 1 view -0 - 30 .cfi_startproc - 31 @ args = 0, pretend = 0, frame = 0 - 32 @ frame_needed = 0, uses_anonymous_args = 0 - 33 @ link register save eliminated. - 32:Src/File_Handling.c **** //HAL_UART_Transmit(UART, (uint8_t *)string, strlen (string), HAL_MAX_DELAY); - 33:Src/File_Handling.c **** } - 34 .loc 1 33 1 view .LVU1 - 35 0000 7047 bx lr - 36 .cfi_endproc - 37 .LFE1186: - 39 .section .text.Mount_SD,"ax",%progbits - 40 .align 1 - 41 .global Mount_SD - 42 .syntax unified - 43 .thumb - 44 .thumb_func - 46 Mount_SD: - 47 .LVL1: - 48 .LFB1187: - 34:Src/File_Handling.c **** - 35:Src/File_Handling.c **** - 36:Src/File_Handling.c **** - 37:Src/File_Handling.c **** int Mount_SD (const TCHAR* path) - 38:Src/File_Handling.c **** { - 49 .loc 1 38 1 view -0 - 50 .cfi_startproc - 51 @ args = 0, pretend = 0, frame = 0 - 52 @ frame_needed = 0, uses_anonymous_args = 0 - 53 .loc 1 38 1 is_stmt 0 view .LVU3 - 54 0000 08B5 push {r3, lr} - 55 .LCFI0: - 56 .cfi_def_cfa_offset 8 - 57 .cfi_offset 3, -8 - 58 .cfi_offset 14, -4 - 59 0002 0146 mov r1, r0 - 39:Src/File_Handling.c **** fresult = f_mount(&fs, path, 1); - 60 .loc 1 39 2 is_stmt 1 view .LVU4 - 61 .loc 1 39 12 is_stmt 0 view .LVU5 - 62 0004 0122 movs r2, #1 - 63 0006 0548 ldr r0, .L6 - 64 .LVL2: - 65 .loc 1 39 12 view .LVU6 - 66 0008 FFF7FEFF bl f_mount - 67 .LVL3: - 68 .loc 1 39 10 discriminator 1 view .LVU7 - 69 000c 044B ldr r3, .L6+4 - 70 000e 1870 strb r0, [r3] - 40:Src/File_Handling.c **** if (fresult != FR_OK) return 1; - 71 .loc 1 40 2 is_stmt 1 view .LVU8 - 72 .loc 1 40 5 is_stmt 0 view .LVU9 - 73 0010 08B1 cbz r0, .L4 - 74 .loc 1 40 31 discriminator 1 view .LVU10 - 75 0012 0120 movs r0, #1 - 76 .L2: - 41:Src/File_Handling.c **** else return 0; - ARM GAS /tmp/cccCjqCZ.s page 3 - - - 42:Src/File_Handling.c **** } - 77 .loc 1 42 1 view .LVU11 - 78 0014 08BD pop {r3, pc} - 79 .L4: - 41:Src/File_Handling.c **** else return 0; - 80 .loc 1 41 14 view .LVU12 - 81 0016 0020 movs r0, #0 - 82 0018 FCE7 b .L2 - 83 .L7: - 84 001a 00BF .align 2 - 85 .L6: - 86 001c 00000000 .word fs - 87 0020 00000000 .word fresult - 88 .cfi_endproc - 89 .LFE1187: - 91 .section .text.Unmount_SD,"ax",%progbits - 92 .align 1 - 93 .global Unmount_SD - 94 .syntax unified - 95 .thumb - 96 .thumb_func - 98 Unmount_SD: - 99 .LVL4: - 100 .LFB1188: - 43:Src/File_Handling.c **** - 44:Src/File_Handling.c **** int Unmount_SD (const TCHAR* path) - 45:Src/File_Handling.c **** { - 101 .loc 1 45 1 is_stmt 1 view -0 - 102 .cfi_startproc - 103 @ args = 0, pretend = 0, frame = 0 - 104 @ frame_needed = 0, uses_anonymous_args = 0 - 105 .loc 1 45 1 is_stmt 0 view .LVU14 - 106 0000 08B5 push {r3, lr} - 107 .LCFI1: - 108 .cfi_def_cfa_offset 8 - 109 .cfi_offset 3, -8 - 110 .cfi_offset 14, -4 - 111 0002 0146 mov r1, r0 - 46:Src/File_Handling.c **** fresult = f_mount(NULL, path, 1); - 112 .loc 1 46 2 is_stmt 1 view .LVU15 - 113 .loc 1 46 12 is_stmt 0 view .LVU16 - 114 0004 0122 movs r2, #1 - 115 0006 0020 movs r0, #0 - 116 .LVL5: - 117 .loc 1 46 12 view .LVU17 - 118 0008 FFF7FEFF bl f_mount - 119 .LVL6: - 120 .loc 1 46 10 discriminator 1 view .LVU18 - 121 000c 034B ldr r3, .L12 - 122 000e 1870 strb r0, [r3] - 47:Src/File_Handling.c **** if (fresult == FR_OK) return 0;//Send_Uart ("SD CARD UNMOUNTED successfully...\n\n\n"); - 123 .loc 1 47 2 is_stmt 1 view .LVU19 - 124 .loc 1 47 5 is_stmt 0 view .LVU20 - 125 0010 08B1 cbz r0, .L10 - 48:Src/File_Handling.c **** return 1;//else Send_Uart("ERROR!!! in UNMOUNTING SD CARD\n\n\n"); - 126 .loc 1 48 9 view .LVU21 - 127 0012 0120 movs r0, #1 - ARM GAS /tmp/cccCjqCZ.s page 4 - - - 128 .L8: - 49:Src/File_Handling.c **** } - 129 .loc 1 49 1 view .LVU22 - 130 0014 08BD pop {r3, pc} - 131 .L10: - 47:Src/File_Handling.c **** if (fresult == FR_OK) return 0;//Send_Uart ("SD CARD UNMOUNTED successfully...\n\n\n"); - 132 .loc 1 47 31 discriminator 1 view .LVU23 - 133 0016 0020 movs r0, #0 - 134 0018 FCE7 b .L8 - 135 .L13: - 136 001a 00BF .align 2 - 137 .L12: - 138 001c 00000000 .word fresult - 139 .cfi_endproc - 140 .LFE1188: - 142 .section .rodata.Scan_SD.str1.4,"aMS",%progbits,1 - 143 .align 2 - 144 .LC0: - 145 0000 53595354 .ascii "SYSTEM~1\000" - 145 454D7E31 - 145 00 - 146 0009 000000 .align 2 - 147 .LC1: - 148 000c 4469723A .ascii "Dir: %s\015\012\000" - 148 2025730D - 148 0A00 - 149 0016 0000 .align 2 - 150 .LC2: - 151 0018 2F257300 .ascii "/%s\000" - 152 .align 2 - 153 .LC3: - 154 001c 46696C65 .ascii "File: %s/%s\012\000" - 154 3A202573 - 154 2F25730A - 154 00 - 155 .section .text.Scan_SD,"ax",%progbits - 156 .align 1 - 157 .global Scan_SD - 158 .syntax unified - 159 .thumb - 160 .thumb_func - 162 Scan_SD: - 163 .LVL7: - 164 .LFB1189: - 50:Src/File_Handling.c **** - 51:Src/File_Handling.c **** /* Start node to be scanned (***also used as work area***) */ - 52:Src/File_Handling.c **** FRESULT Scan_SD (char* pat) - 53:Src/File_Handling.c **** { - 165 .loc 1 53 1 is_stmt 1 view -0 - 166 .cfi_startproc - 167 @ args = 0, pretend = 0, frame = 48 - 168 @ frame_needed = 0, uses_anonymous_args = 0 - 169 .loc 1 53 1 is_stmt 0 view .LVU25 - 170 0000 70B5 push {r4, r5, r6, lr} - 171 .LCFI2: - 172 .cfi_def_cfa_offset 16 - 173 .cfi_offset 4, -16 - ARM GAS /tmp/cccCjqCZ.s page 5 - - - 174 .cfi_offset 5, -12 - 175 .cfi_offset 6, -8 - 176 .cfi_offset 14, -4 - 177 0002 8CB0 sub sp, sp, #48 - 178 .LCFI3: - 179 .cfi_def_cfa_offset 64 - 180 0004 0546 mov r5, r0 - 54:Src/File_Handling.c **** DIR dir; - 181 .loc 1 54 5 is_stmt 1 view .LVU26 - 55:Src/File_Handling.c **** UINT i; - 182 .loc 1 55 5 view .LVU27 - 56:Src/File_Handling.c **** char *path = malloc(20*sizeof (char)); - 183 .loc 1 56 5 view .LVU28 - 184 .loc 1 56 18 is_stmt 0 view .LVU29 - 185 0006 1420 movs r0, #20 - 186 .LVL8: - 187 .loc 1 56 18 view .LVU30 - 188 0008 FFF7FEFF bl malloc - 189 .LVL9: - 190 000c 0446 mov r4, r0 - 191 .LVL10: - 57:Src/File_Handling.c **** sprintf (path, "%s",pat); - 192 .loc 1 57 5 is_stmt 1 view .LVU31 - 193 000e 2946 mov r1, r5 - 194 0010 FFF7FEFF bl strcpy - 195 .LVL11: - 58:Src/File_Handling.c **** - 59:Src/File_Handling.c **** fresult = f_opendir(&dir, path); /* Open the directory */ - 196 .loc 1 59 5 view .LVU32 - 197 .loc 1 59 15 is_stmt 0 view .LVU33 - 198 0014 2146 mov r1, r4 - 199 0016 6846 mov r0, sp - 200 0018 FFF7FEFF bl f_opendir - 201 .LVL12: - 202 .loc 1 59 13 discriminator 1 view .LVU34 - 203 001c 264B ldr r3, .L21 - 204 001e 1870 strb r0, [r3] - 60:Src/File_Handling.c **** if (fresult == FR_OK) - 205 .loc 1 60 5 is_stmt 1 view .LVU35 - 206 .loc 1 60 8 is_stmt 0 view .LVU36 - 207 0020 0028 cmp r0, #0 - 208 0022 42D1 bne .L16 - 209 0024 0BE0 b .L15 - 210 .LVL13: - 211 .L18: - 212 .LBB2: - 61:Src/File_Handling.c **** { - 62:Src/File_Handling.c **** for (;;) - 63:Src/File_Handling.c **** { - 64:Src/File_Handling.c **** fresult = f_readdir(&dir, &fno); /* Read a directory item */ - 65:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 66:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 67:Src/File_Handling.c **** { - 68:Src/File_Handling.c **** if (!(strcmp ("SYSTEM~1", fno.fname))) continue; - 69:Src/File_Handling.c **** char *buf = malloc(30*sizeof(char)); - 70:Src/File_Handling.c **** sprintf (buf, "Dir: %s\r\n", fno.fname); - 71:Src/File_Handling.c **** Send_Uart(buf); - ARM GAS /tmp/cccCjqCZ.s page 6 - - - 72:Src/File_Handling.c **** free(buf); - 73:Src/File_Handling.c **** i = strlen(path); - 74:Src/File_Handling.c **** sprintf(&path[i], "/%s", fno.fname); - 75:Src/File_Handling.c **** fresult = Scan_SD(path); /* Enter the directory */ - 76:Src/File_Handling.c **** if (fresult != FR_OK) break; - 77:Src/File_Handling.c **** path[i] = 0; - 78:Src/File_Handling.c **** } - 79:Src/File_Handling.c **** else - 80:Src/File_Handling.c **** { /* It is a file. */ - 81:Src/File_Handling.c **** char *buf = malloc(30*sizeof(char)); - 213 .loc 1 81 16 is_stmt 1 view .LVU37 - 214 .loc 1 81 28 is_stmt 0 view .LVU38 - 215 0026 1E20 movs r0, #30 - 216 0028 FFF7FEFF bl malloc - 217 .LVL14: - 218 002c 0546 mov r5, r0 - 219 .LVL15: - 82:Src/File_Handling.c **** sprintf(buf,"File: %s/%s\n", path, fno.fname); - 220 .loc 1 82 16 is_stmt 1 view .LVU39 - 221 002e 234B ldr r3, .L21+4 - 222 0030 2246 mov r2, r4 - 223 0032 2349 ldr r1, .L21+8 - 224 0034 FFF7FEFF bl sprintf - 225 .LVL16: - 83:Src/File_Handling.c **** Send_Uart(buf); - 226 .loc 1 83 16 view .LVU40 - 84:Src/File_Handling.c **** free(buf); - 227 .loc 1 84 16 view .LVU41 - 228 0038 2846 mov r0, r5 - 229 003a FFF7FEFF bl free - 230 .LVL17: - 231 .L15: - 232 .loc 1 84 16 is_stmt 0 view .LVU42 - 233 .LBE2: - 62:Src/File_Handling.c **** { - 234 .loc 1 62 9 is_stmt 1 view .LVU43 - 64:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 235 .loc 1 64 13 view .LVU44 - 64:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 236 .loc 1 64 23 is_stmt 0 view .LVU45 - 237 003e 2149 ldr r1, .L21+12 - 238 0040 6846 mov r0, sp - 239 0042 FFF7FEFF bl f_readdir - 240 .LVL18: - 64:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 241 .loc 1 64 21 discriminator 1 view .LVU46 - 242 0046 1C4B ldr r3, .L21 - 243 0048 1870 strb r0, [r3] - 65:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 244 .loc 1 65 13 is_stmt 1 view .LVU47 - 65:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 245 .loc 1 65 16 is_stmt 0 view .LVU48 - 246 004a 58BB cbnz r0, .L17 - 65:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 247 .loc 1 65 46 discriminator 1 view .LVU49 - 248 004c 1D4B ldr r3, .L21+12 - 249 004e 5B7A ldrb r3, [r3, #9] @ zero_extendqisi2 - ARM GAS /tmp/cccCjqCZ.s page 7 - - - 65:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 250 .loc 1 65 34 discriminator 1 view .LVU50 - 251 0050 43B3 cbz r3, .L17 - 66:Src/File_Handling.c **** { - 252 .loc 1 66 13 is_stmt 1 view .LVU51 - 66:Src/File_Handling.c **** { - 253 .loc 1 66 20 is_stmt 0 view .LVU52 - 254 0052 1C4B ldr r3, .L21+12 - 255 0054 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 - 66:Src/File_Handling.c **** { - 256 .loc 1 66 16 view .LVU53 - 257 0056 13F0100F tst r3, #16 - 258 005a E4D0 beq .L18 - 259 .LBB3: - 68:Src/File_Handling.c **** char *buf = malloc(30*sizeof(char)); - 260 .loc 1 68 14 is_stmt 1 view .LVU54 - 68:Src/File_Handling.c **** char *buf = malloc(30*sizeof(char)); - 261 .loc 1 68 20 is_stmt 0 view .LVU55 - 262 005c 1749 ldr r1, .L21+4 - 263 005e 1A48 ldr r0, .L21+16 - 264 0060 FFF7FEFF bl strcmp - 265 .LVL19: - 68:Src/File_Handling.c **** char *buf = malloc(30*sizeof(char)); - 266 .loc 1 68 17 discriminator 1 view .LVU56 - 267 0064 0028 cmp r0, #0 - 268 0066 EAD0 beq .L15 - 69:Src/File_Handling.c **** sprintf (buf, "Dir: %s\r\n", fno.fname); - 269 .loc 1 69 14 is_stmt 1 view .LVU57 - 69:Src/File_Handling.c **** sprintf (buf, "Dir: %s\r\n", fno.fname); - 270 .loc 1 69 26 is_stmt 0 view .LVU58 - 271 0068 1E20 movs r0, #30 - 272 006a FFF7FEFF bl malloc - 273 .LVL20: - 274 006e 0546 mov r5, r0 - 275 .LVL21: - 70:Src/File_Handling.c **** Send_Uart(buf); - 276 .loc 1 70 14 is_stmt 1 view .LVU59 - 277 0070 124E ldr r6, .L21+4 - 278 0072 3246 mov r2, r6 - 279 0074 1549 ldr r1, .L21+20 - 280 0076 FFF7FEFF bl sprintf - 281 .LVL22: - 71:Src/File_Handling.c **** free(buf); - 282 .loc 1 71 14 view .LVU60 - 72:Src/File_Handling.c **** i = strlen(path); - 283 .loc 1 72 14 view .LVU61 - 284 007a 2846 mov r0, r5 - 285 007c FFF7FEFF bl free - 286 .LVL23: - 73:Src/File_Handling.c **** sprintf(&path[i], "/%s", fno.fname); - 287 .loc 1 73 17 view .LVU62 - 73:Src/File_Handling.c **** sprintf(&path[i], "/%s", fno.fname); - 288 .loc 1 73 21 is_stmt 0 view .LVU63 - 289 0080 2046 mov r0, r4 - 290 0082 FFF7FEFF bl strlen - 291 .LVL24: - 292 0086 0546 mov r5, r0 - ARM GAS /tmp/cccCjqCZ.s page 8 - - - 293 .LVL25: - 74:Src/File_Handling.c **** fresult = Scan_SD(path); /* Enter the directory */ - 294 .loc 1 74 17 is_stmt 1 view .LVU64 - 295 0088 3246 mov r2, r6 - 296 008a 1149 ldr r1, .L21+24 - 297 008c 2018 adds r0, r4, r0 - 298 .LVL26: - 74:Src/File_Handling.c **** fresult = Scan_SD(path); /* Enter the directory */ - 299 .loc 1 74 17 is_stmt 0 view .LVU65 - 300 008e FFF7FEFF bl sprintf - 301 .LVL27: - 75:Src/File_Handling.c **** if (fresult != FR_OK) break; - 302 .loc 1 75 17 is_stmt 1 view .LVU66 - 75:Src/File_Handling.c **** if (fresult != FR_OK) break; - 303 .loc 1 75 27 is_stmt 0 view .LVU67 - 304 0092 2046 mov r0, r4 - 305 0094 FFF7FEFF bl Scan_SD - 306 .LVL28: - 75:Src/File_Handling.c **** if (fresult != FR_OK) break; - 307 .loc 1 75 25 discriminator 1 view .LVU68 - 308 0098 074B ldr r3, .L21 - 309 009a 1870 strb r0, [r3] - 76:Src/File_Handling.c **** path[i] = 0; - 310 .loc 1 76 17 is_stmt 1 view .LVU69 - 76:Src/File_Handling.c **** path[i] = 0; - 311 .loc 1 76 20 is_stmt 0 view .LVU70 - 312 009c 10B9 cbnz r0, .L17 - 77:Src/File_Handling.c **** } - 313 .loc 1 77 17 is_stmt 1 view .LVU71 - 77:Src/File_Handling.c **** } - 314 .loc 1 77 25 is_stmt 0 view .LVU72 - 315 009e 0023 movs r3, #0 - 316 00a0 6355 strb r3, [r4, r5] - 317 .LBE3: - 318 00a2 CCE7 b .L15 - 319 .LVL29: - 320 .L17: - 85:Src/File_Handling.c **** } - 86:Src/File_Handling.c **** } - 87:Src/File_Handling.c **** f_closedir(&dir); - 321 .loc 1 87 9 is_stmt 1 view .LVU73 - 322 00a4 6846 mov r0, sp - 323 00a6 FFF7FEFF bl f_closedir - 324 .LVL30: - 325 .L16: - 88:Src/File_Handling.c **** } - 89:Src/File_Handling.c **** free(path); - 326 .loc 1 89 5 view .LVU74 - 327 00aa 2046 mov r0, r4 - 328 00ac FFF7FEFF bl free - 329 .LVL31: - 90:Src/File_Handling.c **** return fresult; - 330 .loc 1 90 5 view .LVU75 - 91:Src/File_Handling.c **** } - 331 .loc 1 91 1 is_stmt 0 view .LVU76 - 332 00b0 014B ldr r3, .L21 - 333 00b2 1878 ldrb r0, [r3] @ zero_extendqisi2 - ARM GAS /tmp/cccCjqCZ.s page 9 - - - 334 00b4 0CB0 add sp, sp, #48 - 335 .LCFI4: - 336 .cfi_def_cfa_offset 16 - 337 @ sp needed - 338 00b6 70BD pop {r4, r5, r6, pc} - 339 .LVL32: - 340 .L22: - 341 .loc 1 91 1 view .LVU77 - 342 .align 2 - 343 .L21: - 344 00b8 00000000 .word fresult - 345 00bc 09000000 .word fno+9 - 346 00c0 1C000000 .word .LC3 - 347 00c4 00000000 .word fno - 348 00c8 00000000 .word .LC0 - 349 00cc 0C000000 .word .LC1 - 350 00d0 18000000 .word .LC2 - 351 .cfi_endproc - 352 .LFE1189: - 354 .section .rodata.Format_SD.str1.4,"aMS",%progbits,1 - 355 .align 2 - 356 .LC4: - 357 0000 2F00 .ascii "/\000" - 358 .section .text.Format_SD,"ax",%progbits - 359 .align 1 - 360 .global Format_SD - 361 .syntax unified - 362 .thumb - 363 .thumb_func - 365 Format_SD: - 366 .LFB1190: - 92:Src/File_Handling.c **** - 93:Src/File_Handling.c **** /* Only supports removing files from home directory */ - 94:Src/File_Handling.c **** FRESULT Format_SD (void) - 95:Src/File_Handling.c **** { - 367 .loc 1 95 1 is_stmt 1 view -0 - 368 .cfi_startproc - 369 @ args = 0, pretend = 0, frame = 48 - 370 @ frame_needed = 0, uses_anonymous_args = 0 - 371 0000 10B5 push {r4, lr} - 372 .LCFI5: - 373 .cfi_def_cfa_offset 8 - 374 .cfi_offset 4, -8 - 375 .cfi_offset 14, -4 - 376 0002 8CB0 sub sp, sp, #48 - 377 .LCFI6: - 378 .cfi_def_cfa_offset 56 - 96:Src/File_Handling.c **** DIR dir; - 379 .loc 1 96 5 view .LVU79 - 97:Src/File_Handling.c **** char *path = malloc(20*sizeof (char)); - 380 .loc 1 97 5 view .LVU80 - 381 .loc 1 97 18 is_stmt 0 view .LVU81 - 382 0004 1420 movs r0, #20 - 383 0006 FFF7FEFF bl malloc - 384 .LVL33: - 385 000a 0446 mov r4, r0 - 386 .LVL34: - ARM GAS /tmp/cccCjqCZ.s page 10 - - - 98:Src/File_Handling.c **** sprintf (path, "%s","/"); - 387 .loc 1 98 5 is_stmt 1 view .LVU82 - 388 000c 1A4B ldr r3, .L30 - 389 000e 1B88 ldrh r3, [r3] @ unaligned - 390 0010 0380 strh r3, [r0] @ unaligned - 99:Src/File_Handling.c **** - 100:Src/File_Handling.c **** fresult = f_opendir(&dir, path); /* Open the directory */ - 391 .loc 1 100 5 view .LVU83 - 392 .loc 1 100 15 is_stmt 0 view .LVU84 - 393 0012 0146 mov r1, r0 - 394 0014 6846 mov r0, sp - 395 .LVL35: - 396 .loc 1 100 15 view .LVU85 - 397 0016 FFF7FEFF bl f_opendir - 398 .LVL36: - 399 .loc 1 100 13 discriminator 1 view .LVU86 - 400 001a 184B ldr r3, .L30+4 - 401 001c 1870 strb r0, [r3] - 101:Src/File_Handling.c **** if (fresult == FR_OK) - 402 .loc 1 101 5 is_stmt 1 view .LVU87 - 403 .loc 1 101 8 is_stmt 0 view .LVU88 - 404 001e 18BB cbnz r0, .L25 - 405 0020 04E0 b .L24 - 406 .L27: - 102:Src/File_Handling.c **** { - 103:Src/File_Handling.c **** for (;;) - 104:Src/File_Handling.c **** { - 105:Src/File_Handling.c **** fresult = f_readdir(&dir, &fno); /* Read a directory item */ - 106:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 107:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 108:Src/File_Handling.c **** { - 109:Src/File_Handling.c **** if (!(strcmp ("SYSTEM~1", fno.fname))) continue; - 110:Src/File_Handling.c **** fresult = f_unlink(fno.fname); - 111:Src/File_Handling.c **** if (fresult == FR_DENIED) continue; - 112:Src/File_Handling.c **** } - 113:Src/File_Handling.c **** else - 114:Src/File_Handling.c **** { /* It is a file. */ - 115:Src/File_Handling.c **** fresult = f_unlink(fno.fname); - 407 .loc 1 115 16 is_stmt 1 view .LVU89 - 408 .loc 1 115 26 is_stmt 0 view .LVU90 - 409 0022 1748 ldr r0, .L30+8 - 410 0024 FFF7FEFF bl f_unlink - 411 .LVL37: - 412 .loc 1 115 24 discriminator 1 view .LVU91 - 413 0028 144B ldr r3, .L30+4 - 414 002a 1870 strb r0, [r3] - 415 .L24: - 103:Src/File_Handling.c **** { - 416 .loc 1 103 9 is_stmt 1 view .LVU92 - 105:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 417 .loc 1 105 13 view .LVU93 - 105:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 418 .loc 1 105 23 is_stmt 0 view .LVU94 - 419 002c 1549 ldr r1, .L30+12 - 420 002e 6846 mov r0, sp - 421 0030 FFF7FEFF bl f_readdir - 422 .LVL38: - ARM GAS /tmp/cccCjqCZ.s page 11 - - - 105:Src/File_Handling.c **** if (fresult != FR_OK || fno.fname[0] == 0) break; /* Break on error or end of dir */ - 423 .loc 1 105 21 discriminator 1 view .LVU95 - 424 0034 114B ldr r3, .L30+4 - 425 0036 1870 strb r0, [r3] - 106:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 426 .loc 1 106 13 is_stmt 1 view .LVU96 - 106:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 427 .loc 1 106 16 is_stmt 0 view .LVU97 - 428 0038 98B9 cbnz r0, .L26 - 106:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 429 .loc 1 106 46 discriminator 1 view .LVU98 - 430 003a 124B ldr r3, .L30+12 - 431 003c 5B7A ldrb r3, [r3, #9] @ zero_extendqisi2 - 106:Src/File_Handling.c **** if (fno.fattrib & AM_DIR) /* It is a directory */ - 432 .loc 1 106 34 discriminator 1 view .LVU99 - 433 003e 83B1 cbz r3, .L26 - 107:Src/File_Handling.c **** { - 434 .loc 1 107 13 is_stmt 1 view .LVU100 - 107:Src/File_Handling.c **** { - 435 .loc 1 107 20 is_stmt 0 view .LVU101 - 436 0040 104B ldr r3, .L30+12 - 437 0042 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 - 107:Src/File_Handling.c **** { - 438 .loc 1 107 16 view .LVU102 - 439 0044 13F0100F tst r3, #16 - 440 0048 EBD0 beq .L27 - 109:Src/File_Handling.c **** fresult = f_unlink(fno.fname); - 441 .loc 1 109 14 is_stmt 1 view .LVU103 - 109:Src/File_Handling.c **** fresult = f_unlink(fno.fname); - 442 .loc 1 109 20 is_stmt 0 view .LVU104 - 443 004a 0D49 ldr r1, .L30+8 - 444 004c 0E48 ldr r0, .L30+16 - 445 004e FFF7FEFF bl strcmp - 446 .LVL39: - 109:Src/File_Handling.c **** fresult = f_unlink(fno.fname); - 447 .loc 1 109 17 discriminator 1 view .LVU105 - 448 0052 0028 cmp r0, #0 - 449 0054 EAD0 beq .L24 - 110:Src/File_Handling.c **** if (fresult == FR_DENIED) continue; - 450 .loc 1 110 14 is_stmt 1 view .LVU106 - 110:Src/File_Handling.c **** if (fresult == FR_DENIED) continue; - 451 .loc 1 110 24 is_stmt 0 view .LVU107 - 452 0056 0A48 ldr r0, .L30+8 - 453 0058 FFF7FEFF bl f_unlink - 454 .LVL40: - 110:Src/File_Handling.c **** if (fresult == FR_DENIED) continue; - 455 .loc 1 110 22 discriminator 1 view .LVU108 - 456 005c 074B ldr r3, .L30+4 - 457 005e 1870 strb r0, [r3] - 111:Src/File_Handling.c **** } - 458 .loc 1 111 14 is_stmt 1 view .LVU109 - 111:Src/File_Handling.c **** } - 459 .loc 1 111 40 discriminator 1 view .LVU110 - 460 0060 E4E7 b .L24 - 461 .L26: - 116:Src/File_Handling.c **** } - 117:Src/File_Handling.c **** } - ARM GAS /tmp/cccCjqCZ.s page 12 - - - 118:Src/File_Handling.c **** f_closedir(&dir); - 462 .loc 1 118 9 view .LVU111 - 463 0062 6846 mov r0, sp - 464 0064 FFF7FEFF bl f_closedir - 465 .LVL41: - 466 .L25: - 119:Src/File_Handling.c **** } - 120:Src/File_Handling.c **** free(path); - 467 .loc 1 120 5 view .LVU112 - 468 0068 2046 mov r0, r4 - 469 006a FFF7FEFF bl free - 470 .LVL42: - 121:Src/File_Handling.c **** return fresult; - 471 .loc 1 121 5 view .LVU113 - 122:Src/File_Handling.c **** } - 472 .loc 1 122 1 is_stmt 0 view .LVU114 - 473 006e 034B ldr r3, .L30+4 - 474 0070 1878 ldrb r0, [r3] @ zero_extendqisi2 - 475 0072 0CB0 add sp, sp, #48 - 476 .LCFI7: - 477 .cfi_def_cfa_offset 8 - 478 @ sp needed - 479 0074 10BD pop {r4, pc} - 480 .LVL43: - 481 .L31: - 482 .loc 1 122 1 view .LVU115 - 483 0076 00BF .align 2 - 484 .L30: - 485 0078 00000000 .word .LC4 - 486 007c 00000000 .word fresult - 487 0080 09000000 .word fno+9 - 488 0084 00000000 .word fno - 489 0088 00000000 .word .LC0 - 490 .cfi_endproc - 491 .LFE1190: - 493 .section .text.Write_File,"ax",%progbits - 494 .align 1 - 495 .global Write_File - 496 .syntax unified - 497 .thumb - 498 .thumb_func - 500 Write_File: - 501 .LVL44: - 502 .LFB1191: - 123:Src/File_Handling.c **** - 124:Src/File_Handling.c **** - 125:Src/File_Handling.c **** - 126:Src/File_Handling.c **** - 127:Src/File_Handling.c **** FRESULT Write_File (char *name, char *data) - 128:Src/File_Handling.c **** { - 503 .loc 1 128 1 is_stmt 1 view -0 - 504 .cfi_startproc - 505 @ args = 0, pretend = 0, frame = 0 - 506 @ frame_needed = 0, uses_anonymous_args = 0 - 507 .loc 1 128 1 is_stmt 0 view .LVU117 - 508 0000 70B5 push {r4, r5, r6, lr} - 509 .LCFI8: - ARM GAS /tmp/cccCjqCZ.s page 13 - - - 510 .cfi_def_cfa_offset 16 - 511 .cfi_offset 4, -16 - 512 .cfi_offset 5, -12 - 513 .cfi_offset 6, -8 - 514 .cfi_offset 14, -4 - 515 0002 0446 mov r4, r0 - 516 0004 0D46 mov r5, r1 - 129:Src/File_Handling.c **** - 130:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 131:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 517 .loc 1 131 2 is_stmt 1 view .LVU118 - 518 .loc 1 131 12 is_stmt 0 view .LVU119 - 519 0006 1249 ldr r1, .L37 - 520 .LVL45: - 521 .loc 1 131 12 view .LVU120 - 522 0008 FFF7FEFF bl f_stat - 523 .LVL46: - 524 .loc 1 131 10 discriminator 1 view .LVU121 - 525 000c 114B ldr r3, .L37+4 - 526 000e 1870 strb r0, [r3] - 132:Src/File_Handling.c **** if (fresult != FR_OK) - 527 .loc 1 132 2 is_stmt 1 view .LVU122 - 528 .loc 1 132 5 is_stmt 0 view .LVU123 - 529 0010 08B1 cbz r0, .L33 - 530 .LBB4: - 133:Src/File_Handling.c **** { - 134:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 531 .loc 1 134 3 is_stmt 1 view .LVU124 - 135:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 136:Src/File_Handling.c **** //Send_Uart (buf); - 137:Src/File_Handling.c **** free(buf); - 532 .loc 1 137 6 view .LVU125 - 138:Src/File_Handling.c **** return fresult; - 533 .loc 1 138 6 view .LVU126 - 534 .loc 1 138 13 is_stmt 0 view .LVU127 - 535 0012 C0B2 uxtb r0, r0 - 536 .LVL47: - 537 .L34: - 538 .loc 1 138 13 view .LVU128 - 539 .LBE4: - 139:Src/File_Handling.c **** } - 140:Src/File_Handling.c **** - 141:Src/File_Handling.c **** else - 142:Src/File_Handling.c **** { - 143:Src/File_Handling.c **** /* Create a file with read write access and open it */ - 144:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_OPEN_EXISTING | FA_WRITE); - 145:Src/File_Handling.c **** if (fresult != FR_OK) - 146:Src/File_Handling.c **** { - 147:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 148:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 149:Src/File_Handling.c **** //Send_Uart(buf); - 150:Src/File_Handling.c **** free(buf); - 151:Src/File_Handling.c **** return fresult; - 152:Src/File_Handling.c **** } - 153:Src/File_Handling.c **** - 154:Src/File_Handling.c **** else - 155:Src/File_Handling.c **** { - ARM GAS /tmp/cccCjqCZ.s page 14 - - - 156:Src/File_Handling.c **** fresult = f_write(&fil, data, strlen(data), &bw); - 157:Src/File_Handling.c **** if (fresult != FR_OK) - 158:Src/File_Handling.c **** { - 159:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 160:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d while writing to the FILE *%s*\n\n", fresult, name); - 161:Src/File_Handling.c **** //Send_Uart(buf); - 162:Src/File_Handling.c **** free(buf); - 163:Src/File_Handling.c **** } - 164:Src/File_Handling.c **** - 165:Src/File_Handling.c **** /* Close file */ - 166:Src/File_Handling.c **** fresult = f_close(&fil); - 167:Src/File_Handling.c **** if (fresult != FR_OK) - 168:Src/File_Handling.c **** { - 169:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 170:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in closing file *%s* after writing it\n\n", fresult, name); - 171:Src/File_Handling.c **** //Send_Uart(buf); - 172:Src/File_Handling.c **** free(buf); - 173:Src/File_Handling.c **** } - 174:Src/File_Handling.c **** else - 175:Src/File_Handling.c **** { - 176:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 177:Src/File_Handling.c **** //sprintf (buf, "File *%s* is WRITTEN and CLOSED successfully\n", name); - 178:Src/File_Handling.c **** //Send_Uart(buf); - 179:Src/File_Handling.c **** free(buf); - 180:Src/File_Handling.c **** } - 181:Src/File_Handling.c **** } - 182:Src/File_Handling.c **** return fresult; - 183:Src/File_Handling.c **** } - 184:Src/File_Handling.c **** } - 540 .loc 1 184 1 view .LVU129 - 541 0014 70BD pop {r4, r5, r6, pc} - 542 .LVL48: - 543 .L33: - 144:Src/File_Handling.c **** if (fresult != FR_OK) - 544 .loc 1 144 6 is_stmt 1 view .LVU130 - 144:Src/File_Handling.c **** if (fresult != FR_OK) - 545 .loc 1 144 16 is_stmt 0 view .LVU131 - 546 0016 0222 movs r2, #2 - 547 0018 2146 mov r1, r4 - 548 001a 0F48 ldr r0, .L37+8 - 549 001c FFF7FEFF bl f_open - 550 .LVL49: - 144:Src/File_Handling.c **** if (fresult != FR_OK) - 551 .loc 1 144 14 discriminator 1 view .LVU132 - 552 0020 0C4B ldr r3, .L37+4 - 553 0022 1870 strb r0, [r3] - 145:Src/File_Handling.c **** { - 554 .loc 1 145 6 is_stmt 1 view .LVU133 - 145:Src/File_Handling.c **** { - 555 .loc 1 145 9 is_stmt 0 view .LVU134 - 556 0024 08B1 cbz r0, .L35 - 557 .LBB5: - 147:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 558 .loc 1 147 7 is_stmt 1 view .LVU135 - 150:Src/File_Handling.c **** return fresult; - 559 .loc 1 150 10 view .LVU136 - 151:Src/File_Handling.c **** } - ARM GAS /tmp/cccCjqCZ.s page 15 - - - 560 .loc 1 151 10 view .LVU137 - 151:Src/File_Handling.c **** } - 561 .loc 1 151 17 is_stmt 0 view .LVU138 - 562 0026 C0B2 uxtb r0, r0 - 563 0028 F4E7 b .L34 - 564 .L35: - 565 .LBE5: - 156:Src/File_Handling.c **** if (fresult != FR_OK) - 566 .loc 1 156 7 is_stmt 1 view .LVU139 - 156:Src/File_Handling.c **** if (fresult != FR_OK) - 567 .loc 1 156 17 is_stmt 0 view .LVU140 - 568 002a 2846 mov r0, r5 - 569 002c FFF7FEFF bl strlen - 570 .LVL50: - 571 0030 0246 mov r2, r0 - 156:Src/File_Handling.c **** if (fresult != FR_OK) - 572 .loc 1 156 17 discriminator 1 view .LVU141 - 573 0032 094E ldr r6, .L37+8 - 574 0034 094B ldr r3, .L37+12 - 575 0036 2946 mov r1, r5 - 576 0038 3046 mov r0, r6 - 577 003a FFF7FEFF bl f_write - 578 .LVL51: - 156:Src/File_Handling.c **** if (fresult != FR_OK) - 579 .loc 1 156 15 discriminator 2 view .LVU142 - 580 003e 054C ldr r4, .L37+4 - 581 .LVL52: - 156:Src/File_Handling.c **** if (fresult != FR_OK) - 582 .loc 1 156 15 discriminator 2 view .LVU143 - 583 0040 2070 strb r0, [r4] - 157:Src/File_Handling.c **** { - 584 .loc 1 157 7 is_stmt 1 view .LVU144 - 159:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d while writing to the FILE *%s*\n\n", fresult, name); - 585 .loc 1 159 8 view .LVU145 - 162:Src/File_Handling.c **** } - 586 .loc 1 162 8 view .LVU146 - 166:Src/File_Handling.c **** if (fresult != FR_OK) - 587 .loc 1 166 7 view .LVU147 - 166:Src/File_Handling.c **** if (fresult != FR_OK) - 588 .loc 1 166 17 is_stmt 0 view .LVU148 - 589 0042 3046 mov r0, r6 - 590 0044 FFF7FEFF bl f_close - 591 .LVL53: - 166:Src/File_Handling.c **** if (fresult != FR_OK) - 592 .loc 1 166 15 discriminator 1 view .LVU149 - 593 0048 2070 strb r0, [r4] - 167:Src/File_Handling.c **** { - 594 .loc 1 167 7 is_stmt 1 view .LVU150 - 176:Src/File_Handling.c **** //sprintf (buf, "File *%s* is WRITTEN and CLOSED successfully\n", name); - 595 .loc 1 176 8 view .LVU151 - 179:Src/File_Handling.c **** } - 596 .loc 1 179 8 view .LVU152 - 182:Src/File_Handling.c **** } - 597 .loc 1 182 6 view .LVU153 - 182:Src/File_Handling.c **** } - 598 .loc 1 182 13 is_stmt 0 view .LVU154 - 599 004a C0B2 uxtb r0, r0 - ARM GAS /tmp/cccCjqCZ.s page 16 - - - 600 004c E2E7 b .L34 - 601 .L38: - 602 004e 00BF .align 2 - 603 .L37: - 604 0050 00000000 .word fno - 605 0054 00000000 .word fresult - 606 0058 00000000 .word fil - 607 005c 00000000 .word bw - 608 .cfi_endproc - 609 .LFE1191: - 611 .section .text.Write_File_byte,"ax",%progbits - 612 .align 1 - 613 .global Write_File_byte - 614 .syntax unified - 615 .thumb - 616 .thumb_func - 618 Write_File_byte: - 619 .LVL54: - 620 .LFB1192: - 185:Src/File_Handling.c **** - 186:Src/File_Handling.c **** FRESULT Write_File_byte (char *name, uint8_t *data, unsigned int bytesize) - 187:Src/File_Handling.c **** { - 621 .loc 1 187 1 is_stmt 1 view -0 - 622 .cfi_startproc - 623 @ args = 0, pretend = 0, frame = 0 - 624 @ frame_needed = 0, uses_anonymous_args = 0 - 625 .loc 1 187 1 is_stmt 0 view .LVU156 - 626 0000 F8B5 push {r3, r4, r5, r6, r7, lr} - 627 .LCFI9: - 628 .cfi_def_cfa_offset 24 - 629 .cfi_offset 3, -24 - 630 .cfi_offset 4, -20 - 631 .cfi_offset 5, -16 - 632 .cfi_offset 6, -12 - 633 .cfi_offset 7, -8 - 634 .cfi_offset 14, -4 - 635 0002 0446 mov r4, r0 - 636 0004 0D46 mov r5, r1 - 637 0006 1646 mov r6, r2 - 188:Src/File_Handling.c **** - 189:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 190:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 638 .loc 1 190 2 is_stmt 1 view .LVU157 - 639 .loc 1 190 12 is_stmt 0 view .LVU158 - 640 0008 1049 ldr r1, .L44 - 641 .LVL55: - 642 .loc 1 190 12 view .LVU159 - 643 000a FFF7FEFF bl f_stat - 644 .LVL56: - 645 .loc 1 190 10 discriminator 1 view .LVU160 - 646 000e 104B ldr r3, .L44+4 - 647 0010 1870 strb r0, [r3] - 191:Src/File_Handling.c **** if (fresult != FR_OK) - 648 .loc 1 191 2 is_stmt 1 view .LVU161 - 649 .loc 1 191 5 is_stmt 0 view .LVU162 - 650 0012 08B1 cbz r0, .L40 - 651 .LBB6: - ARM GAS /tmp/cccCjqCZ.s page 17 - - - 192:Src/File_Handling.c **** { - 193:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 652 .loc 1 193 3 is_stmt 1 view .LVU163 - 194:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 195:Src/File_Handling.c **** //Send_Uart (buf); - 196:Src/File_Handling.c **** free(buf); - 653 .loc 1 196 6 view .LVU164 - 197:Src/File_Handling.c **** return fresult; - 654 .loc 1 197 6 view .LVU165 - 655 .loc 1 197 13 is_stmt 0 view .LVU166 - 656 0014 C0B2 uxtb r0, r0 - 657 .LVL57: - 658 .L41: - 659 .loc 1 197 13 view .LVU167 - 660 .LBE6: - 198:Src/File_Handling.c **** } - 199:Src/File_Handling.c **** - 200:Src/File_Handling.c **** else - 201:Src/File_Handling.c **** { - 202:Src/File_Handling.c **** /* Create a file with read write access and open it */ - 203:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_OPEN_EXISTING | FA_WRITE); - 204:Src/File_Handling.c **** if (fresult != FR_OK) - 205:Src/File_Handling.c **** { - 206:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 207:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 208:Src/File_Handling.c **** //Send_Uart(buf); - 209:Src/File_Handling.c **** free(buf); - 210:Src/File_Handling.c **** return fresult; - 211:Src/File_Handling.c **** } - 212:Src/File_Handling.c **** - 213:Src/File_Handling.c **** else - 214:Src/File_Handling.c **** { - 215:Src/File_Handling.c **** fresult = f_write(&fil, data, bytesize, &bw); - 216:Src/File_Handling.c **** if (fresult != FR_OK) - 217:Src/File_Handling.c **** { - 218:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 219:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d while writing to the FILE *%s*\n\n", fresult, name); - 220:Src/File_Handling.c **** //Send_Uart(buf); - 221:Src/File_Handling.c **** free(buf); - 222:Src/File_Handling.c **** } - 223:Src/File_Handling.c **** - 224:Src/File_Handling.c **** /* Close file */ - 225:Src/File_Handling.c **** fresult = f_close(&fil); - 226:Src/File_Handling.c **** if (fresult != FR_OK) - 227:Src/File_Handling.c **** { - 228:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 229:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in closing file *%s* after writing it\n\n", fresult, name); - 230:Src/File_Handling.c **** //Send_Uart(buf); - 231:Src/File_Handling.c **** free(buf); - 232:Src/File_Handling.c **** } - 233:Src/File_Handling.c **** else - 234:Src/File_Handling.c **** { - 235:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 236:Src/File_Handling.c **** //sprintf (buf, "File *%s* is WRITTEN and CLOSED successfully\n", name); - 237:Src/File_Handling.c **** //Send_Uart(buf); - 238:Src/File_Handling.c **** free(buf); - 239:Src/File_Handling.c **** } - ARM GAS /tmp/cccCjqCZ.s page 18 - - - 240:Src/File_Handling.c **** } - 241:Src/File_Handling.c **** return fresult; - 242:Src/File_Handling.c **** } - 243:Src/File_Handling.c **** } - 661 .loc 1 243 1 view .LVU168 - 662 0016 F8BD pop {r3, r4, r5, r6, r7, pc} - 663 .LVL58: - 664 .L40: - 203:Src/File_Handling.c **** if (fresult != FR_OK) - 665 .loc 1 203 6 is_stmt 1 view .LVU169 - 203:Src/File_Handling.c **** if (fresult != FR_OK) - 666 .loc 1 203 16 is_stmt 0 view .LVU170 - 667 0018 0222 movs r2, #2 - 668 001a 2146 mov r1, r4 - 669 001c 0D48 ldr r0, .L44+8 - 670 001e FFF7FEFF bl f_open - 671 .LVL59: - 203:Src/File_Handling.c **** if (fresult != FR_OK) - 672 .loc 1 203 14 discriminator 1 view .LVU171 - 673 0022 0B4B ldr r3, .L44+4 - 674 0024 1870 strb r0, [r3] - 204:Src/File_Handling.c **** { - 675 .loc 1 204 6 is_stmt 1 view .LVU172 - 204:Src/File_Handling.c **** { - 676 .loc 1 204 9 is_stmt 0 view .LVU173 - 677 0026 08B1 cbz r0, .L42 - 678 .LBB7: - 206:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 679 .loc 1 206 7 is_stmt 1 view .LVU174 - 209:Src/File_Handling.c **** return fresult; - 680 .loc 1 209 10 view .LVU175 - 210:Src/File_Handling.c **** } - 681 .loc 1 210 10 view .LVU176 - 210:Src/File_Handling.c **** } - 682 .loc 1 210 17 is_stmt 0 view .LVU177 - 683 0028 C0B2 uxtb r0, r0 - 684 002a F4E7 b .L41 - 685 .L42: - 686 .LBE7: - 215:Src/File_Handling.c **** if (fresult != FR_OK) - 687 .loc 1 215 7 is_stmt 1 view .LVU178 - 215:Src/File_Handling.c **** if (fresult != FR_OK) - 688 .loc 1 215 17 is_stmt 0 view .LVU179 - 689 002c 094F ldr r7, .L44+8 - 690 002e 0A4B ldr r3, .L44+12 - 691 0030 3246 mov r2, r6 - 692 0032 2946 mov r1, r5 - 693 0034 3846 mov r0, r7 - 694 0036 FFF7FEFF bl f_write - 695 .LVL60: - 215:Src/File_Handling.c **** if (fresult != FR_OK) - 696 .loc 1 215 15 discriminator 1 view .LVU180 - 697 003a 054C ldr r4, .L44+4 - 698 .LVL61: - 215:Src/File_Handling.c **** if (fresult != FR_OK) - 699 .loc 1 215 15 discriminator 1 view .LVU181 - 700 003c 2070 strb r0, [r4] - ARM GAS /tmp/cccCjqCZ.s page 19 - - - 216:Src/File_Handling.c **** { - 701 .loc 1 216 7 is_stmt 1 view .LVU182 - 218:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d while writing to the FILE *%s*\n\n", fresult, name); - 702 .loc 1 218 8 view .LVU183 - 221:Src/File_Handling.c **** } - 703 .loc 1 221 8 view .LVU184 - 225:Src/File_Handling.c **** if (fresult != FR_OK) - 704 .loc 1 225 7 view .LVU185 - 225:Src/File_Handling.c **** if (fresult != FR_OK) - 705 .loc 1 225 17 is_stmt 0 view .LVU186 - 706 003e 3846 mov r0, r7 - 707 0040 FFF7FEFF bl f_close - 708 .LVL62: - 225:Src/File_Handling.c **** if (fresult != FR_OK) - 709 .loc 1 225 15 discriminator 1 view .LVU187 - 710 0044 2070 strb r0, [r4] - 226:Src/File_Handling.c **** { - 711 .loc 1 226 7 is_stmt 1 view .LVU188 - 235:Src/File_Handling.c **** //sprintf (buf, "File *%s* is WRITTEN and CLOSED successfully\n", name); - 712 .loc 1 235 8 view .LVU189 - 238:Src/File_Handling.c **** } - 713 .loc 1 238 8 view .LVU190 - 241:Src/File_Handling.c **** } - 714 .loc 1 241 6 view .LVU191 - 241:Src/File_Handling.c **** } - 715 .loc 1 241 13 is_stmt 0 view .LVU192 - 716 0046 C0B2 uxtb r0, r0 - 717 0048 E5E7 b .L41 - 718 .L45: - 719 004a 00BF .align 2 - 720 .L44: - 721 004c 00000000 .word fno - 722 0050 00000000 .word fresult - 723 0054 00000000 .word fil - 724 0058 00000000 .word bw - 725 .cfi_endproc - 726 .LFE1192: - 728 .section .rodata.Read_File.str1.4,"aMS",%progbits,1 - 729 .align 2 - 730 .LC5: - 731 0000 45525252 .ascii "ERRROR!!! *%s* does not exists\012\012\000" - 731 4F522121 - 731 21202A25 - 731 732A2064 - 731 6F657320 - 732 0021 000000 .align 2 - 733 .LC6: - 734 0024 4552524F .ascii "ERROR!!! No. %d in opening file *%s*\012\012\000" - 734 52212121 - 734 204E6F2E - 734 20256420 - 734 696E206F - 735 004b 00 .align 2 - 736 .LC7: - 737 004c 4552524F .ascii "ERROR!!! No. %d in reading file *%s*\012\012\000" - 737 52212121 - 737 204E6F2E - ARM GAS /tmp/cccCjqCZ.s page 20 - - - 737 20256420 - 737 696E2072 - 738 0073 00 .align 2 - 739 .LC8: - 740 0074 4552524F .ascii "ERROR!!! No. %d in closing file *%s*\012\012\000" - 740 52212121 - 740 204E6F2E - 740 20256420 - 740 696E2063 - 741 009b 00 .align 2 - 742 .LC9: - 743 009c 46696C65 .ascii "File *%s* CLOSED successfully\012\000" - 743 202A2573 - 743 2A20434C - 743 4F534544 - 743 20737563 - 744 .section .text.Read_File,"ax",%progbits - 745 .align 1 - 746 .global Read_File - 747 .syntax unified - 748 .thumb - 749 .thumb_func - 751 Read_File: - 752 .LVL63: - 753 .LFB1193: - 244:Src/File_Handling.c **** - 245:Src/File_Handling.c **** FRESULT Read_File (char *name) - 246:Src/File_Handling.c **** { - 754 .loc 1 246 1 is_stmt 1 view -0 - 755 .cfi_startproc - 756 @ args = 0, pretend = 0, frame = 0 - 757 @ frame_needed = 0, uses_anonymous_args = 0 - 758 .loc 1 246 1 is_stmt 0 view .LVU194 - 759 0000 70B5 push {r4, r5, r6, lr} - 760 .LCFI10: - 761 .cfi_def_cfa_offset 16 - 762 .cfi_offset 4, -16 - 763 .cfi_offset 5, -12 - 764 .cfi_offset 6, -8 - 765 .cfi_offset 14, -4 - 766 0002 0446 mov r4, r0 - 247:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 248:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 767 .loc 1 248 2 is_stmt 1 view .LVU195 - 768 .loc 1 248 12 is_stmt 0 view .LVU196 - 769 0004 3749 ldr r1, .L55 - 770 0006 FFF7FEFF bl f_stat - 771 .LVL64: - 772 .loc 1 248 10 discriminator 1 view .LVU197 - 773 000a 374B ldr r3, .L55+4 - 774 000c 1870 strb r0, [r3] - 249:Src/File_Handling.c **** if (fresult != FR_OK) - 775 .loc 1 249 2 is_stmt 1 view .LVU198 - 776 .loc 1 249 5 is_stmt 0 view .LVU199 - 777 000e B8B9 cbnz r0, .L54 - 778 .LBB8: - 250:Src/File_Handling.c **** { - ARM GAS /tmp/cccCjqCZ.s page 21 - - - 251:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 252:Src/File_Handling.c **** sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); - 253:Src/File_Handling.c **** Send_Uart (buf); - 254:Src/File_Handling.c **** free(buf); - 255:Src/File_Handling.c **** return fresult; - 256:Src/File_Handling.c **** } - 257:Src/File_Handling.c **** - 258:Src/File_Handling.c **** else - 259:Src/File_Handling.c **** { - 260:Src/File_Handling.c **** /* Open file to read */ - 261:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_READ); - 779 .loc 1 261 3 is_stmt 1 view .LVU200 - 780 .loc 1 261 13 is_stmt 0 view .LVU201 - 781 0010 0122 movs r2, #1 - 782 0012 2146 mov r1, r4 - 783 0014 3548 ldr r0, .L55+8 - 784 0016 FFF7FEFF bl f_open - 785 .LVL65: - 786 001a 0546 mov r5, r0 - 787 .loc 1 261 11 discriminator 1 view .LVU202 - 788 001c 324B ldr r3, .L55+4 - 789 001e 1870 strb r0, [r3] - 262:Src/File_Handling.c **** - 263:Src/File_Handling.c **** if (fresult != FR_OK) - 790 .loc 1 263 3 is_stmt 1 view .LVU203 - 791 .loc 1 263 6 is_stmt 0 view .LVU204 - 792 0020 E0B1 cbz r0, .L49 - 793 .LBB9: - 264:Src/File_Handling.c **** { - 265:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 794 .loc 1 265 4 is_stmt 1 view .LVU205 - 795 .loc 1 265 16 is_stmt 0 view .LVU206 - 796 0022 6420 movs r0, #100 - 797 0024 FFF7FEFF bl malloc - 798 .LVL66: - 799 0028 0646 mov r6, r0 - 800 .LVL67: - 266:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 801 .loc 1 266 4 is_stmt 1 view .LVU207 - 802 002a 2346 mov r3, r4 - 803 002c 2A46 mov r2, r5 - 804 002e 3049 ldr r1, .L55+12 - 805 0030 FFF7FEFF bl sprintf - 806 .LVL68: - 267:Src/File_Handling.c **** Send_Uart(buf); - 807 .loc 1 267 7 view .LVU208 - 268:Src/File_Handling.c **** free(buf); - 808 .loc 1 268 7 view .LVU209 - 809 0034 3046 mov r0, r6 - 810 0036 FFF7FEFF bl free - 811 .LVL69: - 269:Src/File_Handling.c **** return fresult; - 812 .loc 1 269 7 view .LVU210 - 813 .loc 1 269 14 is_stmt 0 view .LVU211 - 814 003a 2B4B ldr r3, .L55+4 - 815 003c 1878 ldrb r0, [r3] @ zero_extendqisi2 - 816 003e 0CE0 b .L48 - ARM GAS /tmp/cccCjqCZ.s page 22 - - - 817 .LVL70: - 818 .L54: - 819 .loc 1 269 14 view .LVU212 - 820 .LBE9: - 821 .LBE8: - 822 .LBB13: - 251:Src/File_Handling.c **** sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); - 823 .loc 1 251 3 is_stmt 1 view .LVU213 - 251:Src/File_Handling.c **** sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); - 824 .loc 1 251 15 is_stmt 0 view .LVU214 - 825 0040 6420 movs r0, #100 - 826 0042 FFF7FEFF bl malloc - 827 .LVL71: - 828 0046 0546 mov r5, r0 - 829 .LVL72: - 252:Src/File_Handling.c **** Send_Uart (buf); - 830 .loc 1 252 3 is_stmt 1 view .LVU215 - 831 0048 2246 mov r2, r4 - 832 004a 2A49 ldr r1, .L55+16 - 833 004c FFF7FEFF bl sprintf - 834 .LVL73: - 253:Src/File_Handling.c **** free(buf); - 835 .loc 1 253 3 view .LVU216 - 254:Src/File_Handling.c **** return fresult; - 836 .loc 1 254 3 view .LVU217 - 837 0050 2846 mov r0, r5 - 838 0052 FFF7FEFF bl free - 839 .LVL74: - 255:Src/File_Handling.c **** } - 840 .loc 1 255 6 view .LVU218 - 255:Src/File_Handling.c **** } - 841 .loc 1 255 13 is_stmt 0 view .LVU219 - 842 0056 244B ldr r3, .L55+4 - 843 0058 1878 ldrb r0, [r3] @ zero_extendqisi2 - 844 .LVL75: - 845 .L48: - 255:Src/File_Handling.c **** } - 846 .loc 1 255 13 view .LVU220 - 847 .LBE13: - 270:Src/File_Handling.c **** } - 271:Src/File_Handling.c **** - 272:Src/File_Handling.c **** /* Read data from the file - 273:Src/File_Handling.c **** * see the function details for the arguments */ - 274:Src/File_Handling.c **** - 275:Src/File_Handling.c **** char *buffer = malloc(sizeof(f_size(&fil))); - 276:Src/File_Handling.c **** fresult = f_read (&fil, buffer, f_size(&fil), &br); - 277:Src/File_Handling.c **** if (fresult != FR_OK) - 278:Src/File_Handling.c **** { - 279:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 280:Src/File_Handling.c **** free(buffer); - 281:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in reading file *%s*\n\n", fresult, name); - 282:Src/File_Handling.c **** Send_Uart(buffer); - 283:Src/File_Handling.c **** free(buf); - 284:Src/File_Handling.c **** } - 285:Src/File_Handling.c **** - 286:Src/File_Handling.c **** else - 287:Src/File_Handling.c **** { - ARM GAS /tmp/cccCjqCZ.s page 23 - - - 288:Src/File_Handling.c **** Send_Uart(buffer); - 289:Src/File_Handling.c **** free(buffer); - 290:Src/File_Handling.c **** - 291:Src/File_Handling.c **** /* Close file */ - 292:Src/File_Handling.c **** fresult = f_close(&fil); - 293:Src/File_Handling.c **** if (fresult != FR_OK) - 294:Src/File_Handling.c **** { - 295:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 296:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 297:Src/File_Handling.c **** Send_Uart(buf); - 298:Src/File_Handling.c **** free(buf); - 299:Src/File_Handling.c **** } - 300:Src/File_Handling.c **** else - 301:Src/File_Handling.c **** { - 302:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 303:Src/File_Handling.c **** sprintf (buf, "File *%s* CLOSED successfully\n", name); - 304:Src/File_Handling.c **** Send_Uart(buf); - 305:Src/File_Handling.c **** free(buf); - 306:Src/File_Handling.c **** } - 307:Src/File_Handling.c **** } - 308:Src/File_Handling.c **** return fresult; - 309:Src/File_Handling.c **** } - 310:Src/File_Handling.c **** } - 848 .loc 1 310 1 view .LVU221 - 849 005a 70BD pop {r4, r5, r6, pc} - 850 .LVL76: - 851 .L49: - 852 .LBB14: - 275:Src/File_Handling.c **** fresult = f_read (&fil, buffer, f_size(&fil), &br); - 853 .loc 1 275 3 is_stmt 1 view .LVU222 - 275:Src/File_Handling.c **** fresult = f_read (&fil, buffer, f_size(&fil), &br); - 854 .loc 1 275 18 is_stmt 0 view .LVU223 - 855 005c 0420 movs r0, #4 - 856 005e FFF7FEFF bl malloc - 857 .LVL77: - 858 0062 0546 mov r5, r0 - 859 .LVL78: - 276:Src/File_Handling.c **** if (fresult != FR_OK) - 860 .loc 1 276 3 is_stmt 1 view .LVU224 - 276:Src/File_Handling.c **** if (fresult != FR_OK) - 861 .loc 1 276 35 is_stmt 0 view .LVU225 - 862 0064 2148 ldr r0, .L55+8 - 863 .LVL79: - 276:Src/File_Handling.c **** if (fresult != FR_OK) - 864 .loc 1 276 13 view .LVU226 - 865 0066 244B ldr r3, .L55+20 - 866 0068 C268 ldr r2, [r0, #12] - 867 006a 2946 mov r1, r5 - 868 006c FFF7FEFF bl f_read - 869 .LVL80: - 276:Src/File_Handling.c **** if (fresult != FR_OK) - 870 .loc 1 276 11 discriminator 1 view .LVU227 - 871 0070 1D4B ldr r3, .L55+4 - 872 0072 1870 strb r0, [r3] - 277:Src/File_Handling.c **** { - 873 .loc 1 277 3 is_stmt 1 view .LVU228 - 277:Src/File_Handling.c **** { - ARM GAS /tmp/cccCjqCZ.s page 24 - - - 874 .loc 1 277 6 is_stmt 0 view .LVU229 - 875 0074 98B1 cbz r0, .L50 - 876 .LBB10: - 279:Src/File_Handling.c **** free(buffer); - 877 .loc 1 279 4 is_stmt 1 view .LVU230 - 279:Src/File_Handling.c **** free(buffer); - 878 .loc 1 279 16 is_stmt 0 view .LVU231 - 879 0076 6420 movs r0, #100 - 880 0078 FFF7FEFF bl malloc - 881 .LVL81: - 882 007c 0646 mov r6, r0 - 883 .LVL82: - 280:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in reading file *%s*\n\n", fresult, name); - 884 .loc 1 280 4 is_stmt 1 view .LVU232 - 885 007e 2846 mov r0, r5 - 886 .LVL83: - 280:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in reading file *%s*\n\n", fresult, name); - 887 .loc 1 280 4 is_stmt 0 view .LVU233 - 888 0080 FFF7FEFF bl free - 889 .LVL84: - 281:Src/File_Handling.c **** Send_Uart(buffer); - 890 .loc 1 281 5 is_stmt 1 view .LVU234 - 891 0084 2346 mov r3, r4 - 892 0086 184A ldr r2, .L55+4 - 893 0088 1278 ldrb r2, [r2] @ zero_extendqisi2 - 894 008a 1C49 ldr r1, .L55+24 - 895 008c 3046 mov r0, r6 - 896 008e FFF7FEFF bl sprintf - 897 .LVL85: - 282:Src/File_Handling.c **** free(buf); - 898 .loc 1 282 6 view .LVU235 - 283:Src/File_Handling.c **** } - 899 .loc 1 283 6 view .LVU236 - 900 0092 3046 mov r0, r6 - 901 0094 FFF7FEFF bl free - 902 .LVL86: - 903 .L51: - 283:Src/File_Handling.c **** } - 904 .loc 1 283 6 is_stmt 0 view .LVU237 - 905 .LBE10: - 308:Src/File_Handling.c **** } - 906 .loc 1 308 6 is_stmt 1 view .LVU238 - 308:Src/File_Handling.c **** } - 907 .loc 1 308 13 is_stmt 0 view .LVU239 - 908 0098 134B ldr r3, .L55+4 - 909 009a 1878 ldrb r0, [r3] @ zero_extendqisi2 - 910 009c DDE7 b .L48 - 911 .LVL87: - 912 .L50: - 288:Src/File_Handling.c **** free(buffer); - 913 .loc 1 288 4 is_stmt 1 view .LVU240 - 289:Src/File_Handling.c **** - 914 .loc 1 289 4 view .LVU241 - 915 009e 2846 mov r0, r5 - 916 00a0 FFF7FEFF bl free - 917 .LVL88: - 292:Src/File_Handling.c **** if (fresult != FR_OK) - ARM GAS /tmp/cccCjqCZ.s page 25 - - - 918 .loc 1 292 4 view .LVU242 - 292:Src/File_Handling.c **** if (fresult != FR_OK) - 919 .loc 1 292 14 is_stmt 0 view .LVU243 - 920 00a4 1148 ldr r0, .L55+8 - 921 00a6 FFF7FEFF bl f_close - 922 .LVL89: - 923 00aa 0546 mov r5, r0 - 924 .LVL90: - 292:Src/File_Handling.c **** if (fresult != FR_OK) - 925 .loc 1 292 12 discriminator 1 view .LVU244 - 926 00ac 0E4B ldr r3, .L55+4 - 927 00ae 1870 strb r0, [r3] - 293:Src/File_Handling.c **** { - 928 .loc 1 293 4 is_stmt 1 view .LVU245 - 293:Src/File_Handling.c **** { - 929 .loc 1 293 7 is_stmt 0 view .LVU246 - 930 00b0 60B1 cbz r0, .L52 - 931 .LBB11: - 295:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 932 .loc 1 295 5 is_stmt 1 view .LVU247 - 295:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 933 .loc 1 295 17 is_stmt 0 view .LVU248 - 934 00b2 6420 movs r0, #100 - 935 00b4 FFF7FEFF bl malloc - 936 .LVL91: - 937 00b8 0646 mov r6, r0 - 938 .LVL92: - 296:Src/File_Handling.c **** Send_Uart(buf); - 939 .loc 1 296 5 is_stmt 1 view .LVU249 - 940 00ba 2346 mov r3, r4 - 941 00bc 2A46 mov r2, r5 - 942 00be 1049 ldr r1, .L55+28 - 943 00c0 FFF7FEFF bl sprintf - 944 .LVL93: - 297:Src/File_Handling.c **** free(buf); - 945 .loc 1 297 5 view .LVU250 - 298:Src/File_Handling.c **** } - 946 .loc 1 298 5 view .LVU251 - 947 00c4 3046 mov r0, r6 - 948 00c6 FFF7FEFF bl free - 949 .LVL94: - 950 .LBE11: - 951 00ca E5E7 b .L51 - 952 .LVL95: - 953 .L52: - 954 .LBB12: - 302:Src/File_Handling.c **** sprintf (buf, "File *%s* CLOSED successfully\n", name); - 955 .loc 1 302 5 view .LVU252 - 302:Src/File_Handling.c **** sprintf (buf, "File *%s* CLOSED successfully\n", name); - 956 .loc 1 302 17 is_stmt 0 view .LVU253 - 957 00cc 6420 movs r0, #100 - 958 00ce FFF7FEFF bl malloc - 959 .LVL96: - 960 00d2 0546 mov r5, r0 - 961 .LVL97: - 303:Src/File_Handling.c **** Send_Uart(buf); - 962 .loc 1 303 5 is_stmt 1 view .LVU254 - ARM GAS /tmp/cccCjqCZ.s page 26 - - - 963 00d4 2246 mov r2, r4 - 964 00d6 0B49 ldr r1, .L55+32 - 965 00d8 FFF7FEFF bl sprintf - 966 .LVL98: - 304:Src/File_Handling.c **** free(buf); - 967 .loc 1 304 5 view .LVU255 - 305:Src/File_Handling.c **** } - 968 .loc 1 305 5 view .LVU256 - 969 00dc 2846 mov r0, r5 - 970 00de FFF7FEFF bl free - 971 .LVL99: - 972 00e2 D9E7 b .L51 - 973 .L56: - 974 .align 2 - 975 .L55: - 976 00e4 00000000 .word fno - 977 00e8 00000000 .word fresult - 978 00ec 00000000 .word fil - 979 00f0 24000000 .word .LC6 - 980 00f4 00000000 .word .LC5 - 981 00f8 00000000 .word br - 982 00fc 4C000000 .word .LC7 - 983 0100 74000000 .word .LC8 - 984 0104 9C000000 .word .LC9 - 985 .LBE12: - 986 .LBE14: - 987 .cfi_endproc - 988 .LFE1193: - 990 .section .rodata.Seek_Read_File.str1.4,"aMS",%progbits,1 - 991 .align 2 - 992 .LC10: - 993 0000 4552524F .ascii "ERROR!!! Can't seek the file: *%s*\012\012\000" - 993 52212121 - 993 2043616E - 993 27742073 - 993 65656B20 - 994 .section .text.Seek_Read_File,"ax",%progbits - 995 .align 1 - 996 .global Seek_Read_File - 997 .syntax unified - 998 .thumb - 999 .thumb_func - 1001 Seek_Read_File: - 1002 .LVL100: - 1003 .LFB1194: - 311:Src/File_Handling.c **** - 312:Src/File_Handling.c **** FRESULT Seek_Read_File (char *name, uint8_t *data, unsigned int bytesize, unsigned long goto_label) - 313:Src/File_Handling.c **** { - 1004 .loc 1 313 1 view -0 - 1005 .cfi_startproc - 1006 @ args = 0, pretend = 0, frame = 0 - 1007 @ frame_needed = 0, uses_anonymous_args = 0 - 1008 .loc 1 313 1 is_stmt 0 view .LVU258 - 1009 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} - 1010 .LCFI11: - 1011 .cfi_def_cfa_offset 24 - 1012 .cfi_offset 4, -24 - ARM GAS /tmp/cccCjqCZ.s page 27 - - - 1013 .cfi_offset 5, -20 - 1014 .cfi_offset 6, -16 - 1015 .cfi_offset 7, -12 - 1016 .cfi_offset 8, -8 - 1017 .cfi_offset 14, -4 - 1018 0004 0446 mov r4, r0 - 1019 0006 0F46 mov r7, r1 - 1020 0008 9046 mov r8, r2 - 1021 000a 1D46 mov r5, r3 - 314:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 315:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 1022 .loc 1 315 2 is_stmt 1 view .LVU259 - 1023 .loc 1 315 12 is_stmt 0 view .LVU260 - 1024 000c 4349 ldr r1, .L70 - 1025 .LVL101: - 1026 .loc 1 315 12 view .LVU261 - 1027 000e FFF7FEFF bl f_stat - 1028 .LVL102: - 1029 .loc 1 315 10 discriminator 1 view .LVU262 - 1030 0012 434B ldr r3, .L70+4 - 1031 0014 1870 strb r0, [r3] - 316:Src/File_Handling.c **** if (fresult != FR_OK) - 1032 .loc 1 316 2 is_stmt 1 view .LVU263 - 1033 .loc 1 316 5 is_stmt 0 view .LVU264 - 1034 0016 E8B9 cbnz r0, .L67 - 317:Src/File_Handling.c **** { - 318:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 319:Src/File_Handling.c **** sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); - 320:Src/File_Handling.c **** //Send_Uart (buf); - 321:Src/File_Handling.c **** free(buf); - 322:Src/File_Handling.c **** return fresult; - 323:Src/File_Handling.c **** } - 324:Src/File_Handling.c **** - 325:Src/File_Handling.c **** else - 326:Src/File_Handling.c **** { - 327:Src/File_Handling.c **** /* Open file to read */ - 328:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_READ); - 1035 .loc 1 328 3 is_stmt 1 view .LVU265 - 1036 .loc 1 328 13 is_stmt 0 view .LVU266 - 1037 0018 0122 movs r2, #1 - 1038 001a 2146 mov r1, r4 - 1039 001c 4148 ldr r0, .L70+8 - 1040 001e FFF7FEFF bl f_open - 1041 .LVL103: - 1042 0022 0646 mov r6, r0 - 1043 .loc 1 328 11 discriminator 1 view .LVU267 - 1044 0024 3E4B ldr r3, .L70+4 - 1045 0026 1870 strb r0, [r3] - 329:Src/File_Handling.c **** - 330:Src/File_Handling.c **** if (fresult != FR_OK) - 1046 .loc 1 330 3 is_stmt 1 view .LVU268 - 1047 .loc 1 330 6 is_stmt 0 view .LVU269 - 1048 0028 18BB cbnz r0, .L68 - 331:Src/File_Handling.c **** { - 332:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 333:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 334:Src/File_Handling.c **** //Send_Uart(buf); - ARM GAS /tmp/cccCjqCZ.s page 28 - - - 335:Src/File_Handling.c **** free(buf); - 336:Src/File_Handling.c **** return fresult; - 337:Src/File_Handling.c **** } - 338:Src/File_Handling.c **** - 339:Src/File_Handling.c **** /* Read data from the file - 340:Src/File_Handling.c **** * see the function details for the arguments */ - 341:Src/File_Handling.c **** - 342:Src/File_Handling.c **** //char *buffer = malloc(sizeof(f_size(&fil))); - 343:Src/File_Handling.c **** fresult = f_lseek (&fil, goto_label); /* Move file pointer of the file object */ - 1049 .loc 1 343 3 is_stmt 1 view .LVU270 - 1050 .loc 1 343 14 is_stmt 0 view .LVU271 - 1051 002a 2946 mov r1, r5 - 1052 002c 3D48 ldr r0, .L70+8 - 1053 002e FFF7FEFF bl f_lseek - 1054 .LVL104: - 1055 .loc 1 343 11 discriminator 1 view .LVU272 - 1056 0032 3B4B ldr r3, .L70+4 - 1057 0034 1870 strb r0, [r3] - 344:Src/File_Handling.c **** if (fresult != FR_OK) - 1058 .loc 1 344 3 is_stmt 1 view .LVU273 - 1059 .loc 1 344 6 is_stmt 0 view .LVU274 - 1060 0036 58B3 cbz r0, .L61 - 1061 .LBB15: - 345:Src/File_Handling.c **** { - 346:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 1062 .loc 1 346 4 is_stmt 1 view .LVU275 - 1063 .loc 1 346 16 is_stmt 0 view .LVU276 - 1064 0038 6420 movs r0, #100 - 1065 003a FFF7FEFF bl malloc - 1066 .LVL105: - 1067 003e 0546 mov r5, r0 - 1068 .LVL106: - 347:Src/File_Handling.c **** //free(buffer); - 348:Src/File_Handling.c **** sprintf (buf, "ERROR!!! Can't seek the file: *%s*\n\n", name); - 1069 .loc 1 348 5 is_stmt 1 view .LVU277 - 1070 0040 2246 mov r2, r4 - 1071 0042 3949 ldr r1, .L70+12 - 1072 0044 FFF7FEFF bl sprintf - 1073 .LVL107: - 349:Src/File_Handling.c **** //Send_Uart(buffer); - 350:Src/File_Handling.c **** free(buf); - 1074 .loc 1 350 5 view .LVU278 - 1075 0048 2846 mov r0, r5 - 1076 004a FFF7FEFF bl free - 1077 .LVL108: - 351:Src/File_Handling.c **** return fresult; - 1078 .loc 1 351 4 view .LVU279 - 1079 .loc 1 351 11 is_stmt 0 view .LVU280 - 1080 004e 344B ldr r3, .L70+4 - 1081 0050 1878 ldrb r0, [r3] @ zero_extendqisi2 - 1082 0052 0CE0 b .L59 - 1083 .LVL109: - 1084 .L67: - 1085 .loc 1 351 11 view .LVU281 - 1086 .LBE15: - 1087 .LBB16: - 318:Src/File_Handling.c **** sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); - ARM GAS /tmp/cccCjqCZ.s page 29 - - - 1088 .loc 1 318 3 is_stmt 1 view .LVU282 - 318:Src/File_Handling.c **** sprintf (buf, "ERRROR!!! *%s* does not exists\n\n", name); - 1089 .loc 1 318 15 is_stmt 0 view .LVU283 - 1090 0054 6420 movs r0, #100 - 1091 0056 FFF7FEFF bl malloc - 1092 .LVL110: - 1093 005a 0546 mov r5, r0 - 1094 .LVL111: - 319:Src/File_Handling.c **** //Send_Uart (buf); - 1095 .loc 1 319 3 is_stmt 1 view .LVU284 - 1096 005c 2246 mov r2, r4 - 1097 005e 3349 ldr r1, .L70+16 - 1098 0060 FFF7FEFF bl sprintf - 1099 .LVL112: - 321:Src/File_Handling.c **** return fresult; - 1100 .loc 1 321 3 view .LVU285 - 1101 0064 2846 mov r0, r5 - 1102 0066 FFF7FEFF bl free - 1103 .LVL113: - 322:Src/File_Handling.c **** } - 1104 .loc 1 322 6 view .LVU286 - 322:Src/File_Handling.c **** } - 1105 .loc 1 322 13 is_stmt 0 view .LVU287 - 1106 006a 2D4B ldr r3, .L70+4 - 1107 006c 1878 ldrb r0, [r3] @ zero_extendqisi2 - 1108 .LVL114: - 1109 .L59: - 322:Src/File_Handling.c **** } - 1110 .loc 1 322 13 view .LVU288 - 1111 .LBE16: - 352:Src/File_Handling.c **** } - 353:Src/File_Handling.c **** fresult = f_read (&fil, data, bytesize, &br); - 354:Src/File_Handling.c **** if (fresult != FR_OK) - 355:Src/File_Handling.c **** { - 356:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 357:Src/File_Handling.c **** //free(buffer); - 358:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in reading file *%s*\n\n", fresult, name); - 359:Src/File_Handling.c **** //Send_Uart(buffer); - 360:Src/File_Handling.c **** free(buf); - 361:Src/File_Handling.c **** - 362:Src/File_Handling.c **** } - 363:Src/File_Handling.c **** - 364:Src/File_Handling.c **** else - 365:Src/File_Handling.c **** { - 366:Src/File_Handling.c **** //Send_Uart(buffer); - 367:Src/File_Handling.c **** //free(buffer); - 368:Src/File_Handling.c **** if (goto_label==0)//Set size of file in first 4 bytes - 369:Src/File_Handling.c **** { - 370:Src/File_Handling.c **** sizeoffile = f_size(&fil); - 371:Src/File_Handling.c **** data[0] = (uint8_t) (sizeoffile&0xff); - 372:Src/File_Handling.c **** data[1] = (uint8_t) ((sizeoffile>>8)&0xff); - 373:Src/File_Handling.c **** data[2] = (uint8_t) ((sizeoffile>>16)&0xff); - 374:Src/File_Handling.c **** data[3] = (uint8_t) ((sizeoffile>>24)&0xff); - 375:Src/File_Handling.c **** } - 376:Src/File_Handling.c **** - 377:Src/File_Handling.c **** /* Close file */ - 378:Src/File_Handling.c **** fresult = f_close(&fil); - ARM GAS /tmp/cccCjqCZ.s page 30 - - - 379:Src/File_Handling.c **** if (fresult != FR_OK) - 380:Src/File_Handling.c **** { - 381:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 382:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 383:Src/File_Handling.c **** //Send_Uart(buf); - 384:Src/File_Handling.c **** free(buf); - 385:Src/File_Handling.c **** } - 386:Src/File_Handling.c **** else - 387:Src/File_Handling.c **** { - 388:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 389:Src/File_Handling.c **** sprintf (buf, "File *%s* CLOSED successfully\n", name); - 390:Src/File_Handling.c **** //Send_Uart(buf); - 391:Src/File_Handling.c **** free(buf); - 392:Src/File_Handling.c **** } - 393:Src/File_Handling.c **** } - 394:Src/File_Handling.c **** return fresult; - 395:Src/File_Handling.c **** } - 396:Src/File_Handling.c **** } - 1112 .loc 1 396 1 view .LVU289 - 1113 006e BDE8F081 pop {r4, r5, r6, r7, r8, pc} - 1114 .LVL115: - 1115 .L68: - 1116 .LBB17: - 332:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 1117 .loc 1 332 4 is_stmt 1 view .LVU290 - 332:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 1118 .loc 1 332 16 is_stmt 0 view .LVU291 - 1119 0072 6420 movs r0, #100 - 1120 0074 FFF7FEFF bl malloc - 1121 .LVL116: - 1122 0078 0546 mov r5, r0 - 1123 .LVL117: - 333:Src/File_Handling.c **** //Send_Uart(buf); - 1124 .loc 1 333 4 is_stmt 1 view .LVU292 - 1125 007a 2346 mov r3, r4 - 1126 007c 3246 mov r2, r6 - 1127 007e 2C49 ldr r1, .L70+20 - 1128 0080 FFF7FEFF bl sprintf - 1129 .LVL118: - 335:Src/File_Handling.c **** return fresult; - 1130 .loc 1 335 7 view .LVU293 - 1131 0084 2846 mov r0, r5 - 1132 0086 FFF7FEFF bl free - 1133 .LVL119: - 336:Src/File_Handling.c **** } - 1134 .loc 1 336 7 view .LVU294 - 336:Src/File_Handling.c **** } - 1135 .loc 1 336 14 is_stmt 0 view .LVU295 - 1136 008a 254B ldr r3, .L70+4 - 1137 008c 1878 ldrb r0, [r3] @ zero_extendqisi2 - 1138 008e EEE7 b .L59 - 1139 .LVL120: - 1140 .L61: - 336:Src/File_Handling.c **** } - 1141 .loc 1 336 14 view .LVU296 - 1142 .LBE17: - 353:Src/File_Handling.c **** if (fresult != FR_OK) - ARM GAS /tmp/cccCjqCZ.s page 31 - - - 1143 .loc 1 353 3 is_stmt 1 view .LVU297 - 353:Src/File_Handling.c **** if (fresult != FR_OK) - 1144 .loc 1 353 13 is_stmt 0 view .LVU298 - 1145 0090 284B ldr r3, .L70+24 - 1146 0092 4246 mov r2, r8 - 1147 0094 3946 mov r1, r7 - 1148 0096 2348 ldr r0, .L70+8 - 1149 0098 FFF7FEFF bl f_read - 1150 .LVL121: - 1151 009c 0646 mov r6, r0 - 353:Src/File_Handling.c **** if (fresult != FR_OK) - 1152 .loc 1 353 11 discriminator 1 view .LVU299 - 1153 009e 204B ldr r3, .L70+4 - 1154 00a0 1870 strb r0, [r3] - 354:Src/File_Handling.c **** { - 1155 .loc 1 354 3 is_stmt 1 view .LVU300 - 354:Src/File_Handling.c **** { - 1156 .loc 1 354 6 is_stmt 0 view .LVU301 - 1157 00a2 08BB cbnz r0, .L69 - 368:Src/File_Handling.c **** { - 1158 .loc 1 368 4 is_stmt 1 view .LVU302 - 368:Src/File_Handling.c **** { - 1159 .loc 1 368 7 is_stmt 0 view .LVU303 - 1160 00a4 55B9 cbnz r5, .L64 - 370:Src/File_Handling.c **** data[0] = (uint8_t) (sizeoffile&0xff); - 1161 .loc 1 370 5 is_stmt 1 view .LVU304 - 370:Src/File_Handling.c **** data[0] = (uint8_t) (sizeoffile&0xff); - 1162 .loc 1 370 18 is_stmt 0 view .LVU305 - 1163 00a6 1F4B ldr r3, .L70+8 - 1164 00a8 DA68 ldr r2, [r3, #12] - 370:Src/File_Handling.c **** data[0] = (uint8_t) (sizeoffile&0xff); - 1165 .loc 1 370 16 view .LVU306 - 1166 00aa 234B ldr r3, .L70+28 - 1167 00ac 1A60 str r2, [r3] - 371:Src/File_Handling.c **** data[1] = (uint8_t) ((sizeoffile>>8)&0xff); - 1168 .loc 1 371 5 is_stmt 1 view .LVU307 - 371:Src/File_Handling.c **** data[1] = (uint8_t) ((sizeoffile>>8)&0xff); - 1169 .loc 1 371 13 is_stmt 0 view .LVU308 - 1170 00ae 3A70 strb r2, [r7] - 372:Src/File_Handling.c **** data[2] = (uint8_t) ((sizeoffile>>16)&0xff); - 1171 .loc 1 372 5 is_stmt 1 view .LVU309 - 372:Src/File_Handling.c **** data[2] = (uint8_t) ((sizeoffile>>16)&0xff); - 1172 .loc 1 372 15 is_stmt 0 view .LVU310 - 1173 00b0 5A78 ldrb r2, [r3, #1] @ zero_extendqisi2 - 372:Src/File_Handling.c **** data[2] = (uint8_t) ((sizeoffile>>16)&0xff); - 1174 .loc 1 372 13 view .LVU311 - 1175 00b2 7A70 strb r2, [r7, #1] - 373:Src/File_Handling.c **** data[3] = (uint8_t) ((sizeoffile>>24)&0xff); - 1176 .loc 1 373 5 is_stmt 1 view .LVU312 - 373:Src/File_Handling.c **** data[3] = (uint8_t) ((sizeoffile>>24)&0xff); - 1177 .loc 1 373 15 is_stmt 0 view .LVU313 - 1178 00b4 9A78 ldrb r2, [r3, #2] @ zero_extendqisi2 - 373:Src/File_Handling.c **** data[3] = (uint8_t) ((sizeoffile>>24)&0xff); - 1179 .loc 1 373 13 view .LVU314 - 1180 00b6 BA70 strb r2, [r7, #2] - 374:Src/File_Handling.c **** } - 1181 .loc 1 374 5 is_stmt 1 view .LVU315 - ARM GAS /tmp/cccCjqCZ.s page 32 - - - 374:Src/File_Handling.c **** } - 1182 .loc 1 374 15 is_stmt 0 view .LVU316 - 1183 00b8 DB78 ldrb r3, [r3, #3] @ zero_extendqisi2 - 374:Src/File_Handling.c **** } - 1184 .loc 1 374 13 view .LVU317 - 1185 00ba FB70 strb r3, [r7, #3] - 1186 .L64: - 378:Src/File_Handling.c **** if (fresult != FR_OK) - 1187 .loc 1 378 4 is_stmt 1 view .LVU318 - 378:Src/File_Handling.c **** if (fresult != FR_OK) - 1188 .loc 1 378 14 is_stmt 0 view .LVU319 - 1189 00bc 1948 ldr r0, .L70+8 - 1190 00be FFF7FEFF bl f_close - 1191 .LVL122: - 1192 00c2 0546 mov r5, r0 - 1193 .LVL123: - 378:Src/File_Handling.c **** if (fresult != FR_OK) - 1194 .loc 1 378 12 discriminator 1 view .LVU320 - 1195 00c4 164B ldr r3, .L70+4 - 1196 00c6 1870 strb r0, [r3] - 379:Src/File_Handling.c **** { - 1197 .loc 1 379 4 is_stmt 1 view .LVU321 - 379:Src/File_Handling.c **** { - 1198 .loc 1 379 7 is_stmt 0 view .LVU322 - 1199 00c8 D8B1 cbz r0, .L65 - 1200 .LBB18: - 381:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 1201 .loc 1 381 5 is_stmt 1 view .LVU323 - 381:Src/File_Handling.c **** sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 1202 .loc 1 381 17 is_stmt 0 view .LVU324 - 1203 00ca 6420 movs r0, #100 - 1204 00cc FFF7FEFF bl malloc - 1205 .LVL124: - 1206 00d0 0646 mov r6, r0 - 1207 .LVL125: - 382:Src/File_Handling.c **** //Send_Uart(buf); - 1208 .loc 1 382 5 is_stmt 1 view .LVU325 - 1209 00d2 2346 mov r3, r4 - 1210 00d4 2A46 mov r2, r5 - 1211 00d6 1949 ldr r1, .L70+32 - 1212 00d8 FFF7FEFF bl sprintf - 1213 .LVL126: - 384:Src/File_Handling.c **** } - 1214 .loc 1 384 5 view .LVU326 - 1215 00dc 3046 mov r0, r6 - 1216 00de FFF7FEFF bl free - 1217 .LVL127: - 1218 .L63: - 384:Src/File_Handling.c **** } - 1219 .loc 1 384 5 is_stmt 0 view .LVU327 - 1220 .LBE18: - 394:Src/File_Handling.c **** } - 1221 .loc 1 394 6 is_stmt 1 view .LVU328 - 394:Src/File_Handling.c **** } - 1222 .loc 1 394 13 is_stmt 0 view .LVU329 - 1223 00e2 0F4B ldr r3, .L70+4 - 1224 00e4 1878 ldrb r0, [r3] @ zero_extendqisi2 - ARM GAS /tmp/cccCjqCZ.s page 33 - - - 1225 00e6 C2E7 b .L59 - 1226 .LVL128: - 1227 .L69: - 1228 .LBB19: - 356:Src/File_Handling.c **** //free(buffer); - 1229 .loc 1 356 4 is_stmt 1 view .LVU330 - 356:Src/File_Handling.c **** //free(buffer); - 1230 .loc 1 356 16 is_stmt 0 view .LVU331 - 1231 00e8 6420 movs r0, #100 - 1232 00ea FFF7FEFF bl malloc - 1233 .LVL129: - 1234 00ee 0546 mov r5, r0 - 1235 .LVL130: - 358:Src/File_Handling.c **** //Send_Uart(buffer); - 1236 .loc 1 358 5 is_stmt 1 view .LVU332 - 1237 00f0 2346 mov r3, r4 - 1238 00f2 3246 mov r2, r6 - 1239 00f4 1249 ldr r1, .L70+36 - 1240 00f6 FFF7FEFF bl sprintf - 1241 .LVL131: - 360:Src/File_Handling.c **** - 1242 .loc 1 360 5 view .LVU333 - 1243 00fa 2846 mov r0, r5 - 1244 00fc FFF7FEFF bl free - 1245 .LVL132: - 1246 .LBE19: - 1247 0100 EFE7 b .L63 - 1248 .LVL133: - 1249 .L65: - 1250 .LBB20: - 388:Src/File_Handling.c **** sprintf (buf, "File *%s* CLOSED successfully\n", name); - 1251 .loc 1 388 5 view .LVU334 - 388:Src/File_Handling.c **** sprintf (buf, "File *%s* CLOSED successfully\n", name); - 1252 .loc 1 388 17 is_stmt 0 view .LVU335 - 1253 0102 6420 movs r0, #100 - 1254 0104 FFF7FEFF bl malloc - 1255 .LVL134: - 1256 0108 0546 mov r5, r0 - 1257 .LVL135: - 389:Src/File_Handling.c **** //Send_Uart(buf); - 1258 .loc 1 389 5 is_stmt 1 view .LVU336 - 1259 010a 2246 mov r2, r4 - 1260 010c 0D49 ldr r1, .L70+40 - 1261 010e FFF7FEFF bl sprintf - 1262 .LVL136: - 391:Src/File_Handling.c **** } - 1263 .loc 1 391 5 view .LVU337 - 1264 0112 2846 mov r0, r5 - 1265 0114 FFF7FEFF bl free - 1266 .LVL137: - 1267 0118 E3E7 b .L63 - 1268 .L71: - 1269 011a 00BF .align 2 - 1270 .L70: - 1271 011c 00000000 .word fno - 1272 0120 00000000 .word fresult - 1273 0124 00000000 .word fil - ARM GAS /tmp/cccCjqCZ.s page 34 - - - 1274 0128 00000000 .word .LC10 - 1275 012c 00000000 .word .LC5 - 1276 0130 24000000 .word .LC6 - 1277 0134 00000000 .word br - 1278 0138 00000000 .word sizeoffile - 1279 013c 74000000 .word .LC8 - 1280 0140 4C000000 .word .LC7 - 1281 0144 9C000000 .word .LC9 - 1282 .LBE20: - 1283 .cfi_endproc - 1284 .LFE1194: - 1286 .section .text.Create_File,"ax",%progbits - 1287 .align 1 - 1288 .global Create_File - 1289 .syntax unified - 1290 .thumb - 1291 .thumb_func - 1293 Create_File: - 1294 .LVL138: - 1295 .LFB1195: - 397:Src/File_Handling.c **** - 398:Src/File_Handling.c **** FRESULT Create_File (char *name) - 399:Src/File_Handling.c **** { - 1296 .loc 1 399 1 view -0 - 1297 .cfi_startproc - 1298 @ args = 0, pretend = 0, frame = 0 - 1299 @ frame_needed = 0, uses_anonymous_args = 0 - 1300 .loc 1 399 1 is_stmt 0 view .LVU339 - 1301 0000 10B5 push {r4, lr} - 1302 .LCFI12: - 1303 .cfi_def_cfa_offset 8 - 1304 .cfi_offset 4, -8 - 1305 .cfi_offset 14, -4 - 1306 0002 0446 mov r4, r0 - 400:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 1307 .loc 1 400 2 is_stmt 1 view .LVU340 - 1308 .loc 1 400 12 is_stmt 0 view .LVU341 - 1309 0004 0C49 ldr r1, .L77 - 1310 0006 FFF7FEFF bl f_stat - 1311 .LVL139: - 1312 .loc 1 400 10 discriminator 1 view .LVU342 - 1313 000a 0C4B ldr r3, .L77+4 - 1314 000c 1870 strb r0, [r3] - 401:Src/File_Handling.c **** if (fresult == FR_OK) - 1315 .loc 1 401 2 is_stmt 1 view .LVU343 - 1316 .loc 1 401 5 is_stmt 0 view .LVU344 - 1317 000e 08B9 cbnz r0, .L73 - 1318 .LBB21: - 402:Src/File_Handling.c **** { - 403:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 1319 .loc 1 403 3 is_stmt 1 view .LVU345 - 404:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! *%s* already exists!!!!\n use Update_File \n\n",name); - 405:Src/File_Handling.c **** //Send_Uart(buf); - 406:Src/File_Handling.c **** free(buf); - 1320 .loc 1 406 3 view .LVU346 - 407:Src/File_Handling.c **** return fresult; - 1321 .loc 1 407 6 view .LVU347 - ARM GAS /tmp/cccCjqCZ.s page 35 - - - 1322 .loc 1 407 13 is_stmt 0 view .LVU348 - 1323 0010 C0B2 uxtb r0, r0 - 1324 .L74: - 1325 .LBE21: - 408:Src/File_Handling.c **** } - 409:Src/File_Handling.c **** else - 410:Src/File_Handling.c **** { - 411:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_CREATE_ALWAYS|FA_READ|FA_WRITE); - 412:Src/File_Handling.c **** if (fresult != FR_OK) - 413:Src/File_Handling.c **** { - 414:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 415:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in creating file *%s*\n\n", fresult, name); - 416:Src/File_Handling.c **** //Send_Uart(buf); - 417:Src/File_Handling.c **** free(buf); - 418:Src/File_Handling.c **** return fresult; - 419:Src/File_Handling.c **** } - 420:Src/File_Handling.c **** else - 421:Src/File_Handling.c **** { - 422:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 423:Src/File_Handling.c **** //sprintf (buf, "*%s* created successfully\n Now use Write_File to write data\n",name); - 424:Src/File_Handling.c **** //Send_Uart(buf); - 425:Src/File_Handling.c **** free(buf); - 426:Src/File_Handling.c **** } - 427:Src/File_Handling.c **** - 428:Src/File_Handling.c **** fresult = f_close(&fil); - 429:Src/File_Handling.c **** if (fresult != FR_OK) - 430:Src/File_Handling.c **** { - 431:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 432:Src/File_Handling.c **** //sprintf (buf, "ERROR No. %d in closing file *%s*\n\n", fresult, name); - 433:Src/File_Handling.c **** //Send_Uart(buf); - 434:Src/File_Handling.c **** free(buf); - 435:Src/File_Handling.c **** } - 436:Src/File_Handling.c **** else - 437:Src/File_Handling.c **** { - 438:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 439:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 440:Src/File_Handling.c **** //Send_Uart(buf); - 441:Src/File_Handling.c **** free(buf); - 442:Src/File_Handling.c **** } - 443:Src/File_Handling.c **** } - 444:Src/File_Handling.c **** return fresult; - 445:Src/File_Handling.c **** } - 1326 .loc 1 445 1 view .LVU349 - 1327 0012 10BD pop {r4, pc} - 1328 .LVL140: - 1329 .L73: - 411:Src/File_Handling.c **** if (fresult != FR_OK) - 1330 .loc 1 411 3 is_stmt 1 view .LVU350 - 411:Src/File_Handling.c **** if (fresult != FR_OK) - 1331 .loc 1 411 13 is_stmt 0 view .LVU351 - 1332 0014 0B22 movs r2, #11 - 1333 0016 2146 mov r1, r4 - 1334 0018 0948 ldr r0, .L77+8 - 1335 001a FFF7FEFF bl f_open - 1336 .LVL141: - 411:Src/File_Handling.c **** if (fresult != FR_OK) - 1337 .loc 1 411 11 discriminator 1 view .LVU352 - ARM GAS /tmp/cccCjqCZ.s page 36 - - - 1338 001e 074B ldr r3, .L77+4 - 1339 0020 1870 strb r0, [r3] - 412:Src/File_Handling.c **** { - 1340 .loc 1 412 3 is_stmt 1 view .LVU353 - 412:Src/File_Handling.c **** { - 1341 .loc 1 412 6 is_stmt 0 view .LVU354 - 1342 0022 08B1 cbz r0, .L75 - 1343 .LBB22: - 414:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in creating file *%s*\n\n", fresult, name); - 1344 .loc 1 414 4 is_stmt 1 view .LVU355 - 417:Src/File_Handling.c **** return fresult; - 1345 .loc 1 417 4 view .LVU356 - 418:Src/File_Handling.c **** } - 1346 .loc 1 418 7 view .LVU357 - 418:Src/File_Handling.c **** } - 1347 .loc 1 418 14 is_stmt 0 view .LVU358 - 1348 0024 C0B2 uxtb r0, r0 - 1349 0026 F4E7 b .L74 - 1350 .L75: - 1351 .LBE22: - 422:Src/File_Handling.c **** //sprintf (buf, "*%s* created successfully\n Now use Write_File to write data\n",name); - 1352 .loc 1 422 4 is_stmt 1 view .LVU359 - 425:Src/File_Handling.c **** } - 1353 .loc 1 425 4 view .LVU360 - 428:Src/File_Handling.c **** if (fresult != FR_OK) - 1354 .loc 1 428 3 view .LVU361 - 428:Src/File_Handling.c **** if (fresult != FR_OK) - 1355 .loc 1 428 13 is_stmt 0 view .LVU362 - 1356 0028 0548 ldr r0, .L77+8 - 1357 002a FFF7FEFF bl f_close - 1358 .LVL142: - 428:Src/File_Handling.c **** if (fresult != FR_OK) - 1359 .loc 1 428 11 discriminator 1 view .LVU363 - 1360 002e 034B ldr r3, .L77+4 - 1361 0030 1870 strb r0, [r3] - 429:Src/File_Handling.c **** { - 1362 .loc 1 429 3 is_stmt 1 view .LVU364 - 438:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 1363 .loc 1 438 4 view .LVU365 - 441:Src/File_Handling.c **** } - 1364 .loc 1 441 4 view .LVU366 - 444:Src/File_Handling.c **** } - 1365 .loc 1 444 5 view .LVU367 - 444:Src/File_Handling.c **** } - 1366 .loc 1 444 12 is_stmt 0 view .LVU368 - 1367 0032 C0B2 uxtb r0, r0 - 1368 0034 EDE7 b .L74 - 1369 .L78: - 1370 0036 00BF .align 2 - 1371 .L77: - 1372 0038 00000000 .word fno - 1373 003c 00000000 .word fresult - 1374 0040 00000000 .word fil - 1375 .cfi_endproc - 1376 .LFE1195: - 1378 .section .text.Update_File,"ax",%progbits - 1379 .align 1 - ARM GAS /tmp/cccCjqCZ.s page 37 - - - 1380 .global Update_File - 1381 .syntax unified - 1382 .thumb - 1383 .thumb_func - 1385 Update_File: - 1386 .LVL143: - 1387 .LFB1196: - 446:Src/File_Handling.c **** - 447:Src/File_Handling.c **** FRESULT Update_File (char *name, char *data) - 448:Src/File_Handling.c **** { - 1388 .loc 1 448 1 is_stmt 1 view -0 - 1389 .cfi_startproc - 1390 @ args = 0, pretend = 0, frame = 0 - 1391 @ frame_needed = 0, uses_anonymous_args = 0 - 1392 .loc 1 448 1 is_stmt 0 view .LVU370 - 1393 0000 70B5 push {r4, r5, r6, lr} - 1394 .LCFI13: - 1395 .cfi_def_cfa_offset 16 - 1396 .cfi_offset 4, -16 - 1397 .cfi_offset 5, -12 - 1398 .cfi_offset 6, -8 - 1399 .cfi_offset 14, -4 - 1400 0002 0446 mov r4, r0 - 1401 0004 0D46 mov r5, r1 - 449:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 450:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 1402 .loc 1 450 2 is_stmt 1 view .LVU371 - 1403 .loc 1 450 12 is_stmt 0 view .LVU372 - 1404 0006 1249 ldr r1, .L84 - 1405 .LVL144: - 1406 .loc 1 450 12 view .LVU373 - 1407 0008 FFF7FEFF bl f_stat - 1408 .LVL145: - 1409 .loc 1 450 10 discriminator 1 view .LVU374 - 1410 000c 114B ldr r3, .L84+4 - 1411 000e 1870 strb r0, [r3] - 451:Src/File_Handling.c **** if (fresult != FR_OK) - 1412 .loc 1 451 2 is_stmt 1 view .LVU375 - 1413 .loc 1 451 5 is_stmt 0 view .LVU376 - 1414 0010 08B1 cbz r0, .L80 - 1415 .LBB23: - 452:Src/File_Handling.c **** { - 453:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 1416 .loc 1 453 3 is_stmt 1 view .LVU377 - 454:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 455:Src/File_Handling.c **** //Send_Uart (buf); - 456:Src/File_Handling.c **** free(buf); - 1417 .loc 1 456 3 view .LVU378 - 457:Src/File_Handling.c **** return fresult; - 1418 .loc 1 457 6 view .LVU379 - 1419 .loc 1 457 13 is_stmt 0 view .LVU380 - 1420 0012 C0B2 uxtb r0, r0 - 1421 .LVL146: - 1422 .L81: - 1423 .loc 1 457 13 view .LVU381 - 1424 .LBE23: - 458:Src/File_Handling.c **** } - ARM GAS /tmp/cccCjqCZ.s page 38 - - - 459:Src/File_Handling.c **** - 460:Src/File_Handling.c **** else - 461:Src/File_Handling.c **** { - 462:Src/File_Handling.c **** /* Create a file with read write access and open it */ - 463:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_OPEN_APPEND | FA_WRITE); - 464:Src/File_Handling.c **** if (fresult != FR_OK) - 465:Src/File_Handling.c **** { - 466:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 467:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 468:Src/File_Handling.c **** //Send_Uart(buf); - 469:Src/File_Handling.c **** free(buf); - 470:Src/File_Handling.c **** return fresult; - 471:Src/File_Handling.c **** } - 472:Src/File_Handling.c **** - 473:Src/File_Handling.c **** /* Writing text */ - 474:Src/File_Handling.c **** fresult = f_write(&fil, data, strlen (data), &bw); - 475:Src/File_Handling.c **** if (fresult != FR_OK) - 476:Src/File_Handling.c **** { - 477:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 478:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in writing file *%s*\n\n", fresult, name); - 479:Src/File_Handling.c **** //Send_Uart(buf); - 480:Src/File_Handling.c **** free(buf); - 481:Src/File_Handling.c **** } - 482:Src/File_Handling.c **** - 483:Src/File_Handling.c **** else - 484:Src/File_Handling.c **** { - 485:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 486:Src/File_Handling.c **** //sprintf (buf, "*%s* UPDATED successfully\n", name); - 487:Src/File_Handling.c **** //Send_Uart(buf); - 488:Src/File_Handling.c **** free(buf); - 489:Src/File_Handling.c **** } - 490:Src/File_Handling.c **** - 491:Src/File_Handling.c **** /* Close file */ - 492:Src/File_Handling.c **** fresult = f_close(&fil); - 493:Src/File_Handling.c **** if (fresult != FR_OK) - 494:Src/File_Handling.c **** { - 495:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 496:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 497:Src/File_Handling.c **** //Send_Uart(buf); - 498:Src/File_Handling.c **** free(buf); - 499:Src/File_Handling.c **** } - 500:Src/File_Handling.c **** else - 501:Src/File_Handling.c **** { - 502:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 503:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 504:Src/File_Handling.c **** //Send_Uart(buf); - 505:Src/File_Handling.c **** free(buf); - 506:Src/File_Handling.c **** } - 507:Src/File_Handling.c **** } - 508:Src/File_Handling.c **** return fresult; - 509:Src/File_Handling.c **** } - 1425 .loc 1 509 1 view .LVU382 - 1426 0014 70BD pop {r4, r5, r6, pc} - 1427 .LVL147: - 1428 .L80: - 463:Src/File_Handling.c **** if (fresult != FR_OK) - 1429 .loc 1 463 6 is_stmt 1 view .LVU383 - ARM GAS /tmp/cccCjqCZ.s page 39 - - - 463:Src/File_Handling.c **** if (fresult != FR_OK) - 1430 .loc 1 463 16 is_stmt 0 view .LVU384 - 1431 0016 3222 movs r2, #50 - 1432 0018 2146 mov r1, r4 - 1433 001a 0F48 ldr r0, .L84+8 - 1434 001c FFF7FEFF bl f_open - 1435 .LVL148: - 463:Src/File_Handling.c **** if (fresult != FR_OK) - 1436 .loc 1 463 14 discriminator 1 view .LVU385 - 1437 0020 0C4B ldr r3, .L84+4 - 1438 0022 1870 strb r0, [r3] - 464:Src/File_Handling.c **** { - 1439 .loc 1 464 6 is_stmt 1 view .LVU386 - 464:Src/File_Handling.c **** { - 1440 .loc 1 464 9 is_stmt 0 view .LVU387 - 1441 0024 08B1 cbz r0, .L82 - 1442 .LBB24: - 466:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 1443 .loc 1 466 7 is_stmt 1 view .LVU388 - 469:Src/File_Handling.c **** return fresult; - 1444 .loc 1 469 10 view .LVU389 - 470:Src/File_Handling.c **** } - 1445 .loc 1 470 10 view .LVU390 - 470:Src/File_Handling.c **** } - 1446 .loc 1 470 17 is_stmt 0 view .LVU391 - 1447 0026 C0B2 uxtb r0, r0 - 1448 0028 F4E7 b .L81 - 1449 .L82: - 1450 .LBE24: - 474:Src/File_Handling.c **** if (fresult != FR_OK) - 1451 .loc 1 474 6 is_stmt 1 view .LVU392 - 474:Src/File_Handling.c **** if (fresult != FR_OK) - 1452 .loc 1 474 16 is_stmt 0 view .LVU393 - 1453 002a 2846 mov r0, r5 - 1454 002c FFF7FEFF bl strlen - 1455 .LVL149: - 1456 0030 0246 mov r2, r0 - 474:Src/File_Handling.c **** if (fresult != FR_OK) - 1457 .loc 1 474 16 discriminator 1 view .LVU394 - 1458 0032 094E ldr r6, .L84+8 - 1459 0034 094B ldr r3, .L84+12 - 1460 0036 2946 mov r1, r5 - 1461 0038 3046 mov r0, r6 - 1462 003a FFF7FEFF bl f_write - 1463 .LVL150: - 474:Src/File_Handling.c **** if (fresult != FR_OK) - 1464 .loc 1 474 14 discriminator 2 view .LVU395 - 1465 003e 054C ldr r4, .L84+4 - 1466 .LVL151: - 474:Src/File_Handling.c **** if (fresult != FR_OK) - 1467 .loc 1 474 14 discriminator 2 view .LVU396 - 1468 0040 2070 strb r0, [r4] - 475:Src/File_Handling.c **** { - 1469 .loc 1 475 6 is_stmt 1 view .LVU397 - 485:Src/File_Handling.c **** //sprintf (buf, "*%s* UPDATED successfully\n", name); - 1470 .loc 1 485 7 view .LVU398 - 488:Src/File_Handling.c **** } - ARM GAS /tmp/cccCjqCZ.s page 40 - - - 1471 .loc 1 488 7 view .LVU399 - 492:Src/File_Handling.c **** if (fresult != FR_OK) - 1472 .loc 1 492 6 view .LVU400 - 492:Src/File_Handling.c **** if (fresult != FR_OK) - 1473 .loc 1 492 16 is_stmt 0 view .LVU401 - 1474 0042 3046 mov r0, r6 - 1475 0044 FFF7FEFF bl f_close - 1476 .LVL152: - 492:Src/File_Handling.c **** if (fresult != FR_OK) - 1477 .loc 1 492 14 discriminator 1 view .LVU402 - 1478 0048 2070 strb r0, [r4] - 493:Src/File_Handling.c **** { - 1479 .loc 1 493 6 is_stmt 1 view .LVU403 - 502:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 1480 .loc 1 502 7 view .LVU404 - 505:Src/File_Handling.c **** } - 1481 .loc 1 505 7 view .LVU405 - 508:Src/File_Handling.c **** } - 1482 .loc 1 508 5 view .LVU406 - 508:Src/File_Handling.c **** } - 1483 .loc 1 508 12 is_stmt 0 view .LVU407 - 1484 004a C0B2 uxtb r0, r0 - 1485 004c E2E7 b .L81 - 1486 .L85: - 1487 004e 00BF .align 2 - 1488 .L84: - 1489 0050 00000000 .word fno - 1490 0054 00000000 .word fresult - 1491 0058 00000000 .word fil - 1492 005c 00000000 .word bw - 1493 .cfi_endproc - 1494 .LFE1196: - 1496 .section .rodata.Remove_File.str1.4,"aMS",%progbits,1 - 1497 .align 2 - 1498 .LC11: - 1499 0000 4552524F .ascii "ERROR!!! *%s* does not exists\012\012\000" - 1499 52212121 - 1499 202A2573 - 1499 2A20646F - 1499 6573206E - 1500 .align 2 - 1501 .LC12: - 1502 0020 2A25732A .ascii "*%s* has been removed successfully\012\000" - 1502 20686173 - 1502 20626565 - 1502 6E207265 - 1502 6D6F7665 - 1503 .align 2 - 1504 .LC13: - 1505 0044 4552524F .ascii "ERROR No. %d in removing *%s*\012\012\000" - 1505 52204E6F - 1505 2E202564 - 1505 20696E20 - 1505 72656D6F - 1506 .section .text.Remove_File,"ax",%progbits - 1507 .align 1 - 1508 .global Remove_File - ARM GAS /tmp/cccCjqCZ.s page 41 - - - 1509 .syntax unified - 1510 .thumb - 1511 .thumb_func - 1513 Remove_File: - 1514 .LVL153: - 1515 .LFB1197: - 510:Src/File_Handling.c **** - 511:Src/File_Handling.c **** FRESULT Remove_File (char *name) - 512:Src/File_Handling.c **** { - 1516 .loc 1 512 1 is_stmt 1 view -0 - 1517 .cfi_startproc - 1518 @ args = 0, pretend = 0, frame = 0 - 1519 @ frame_needed = 0, uses_anonymous_args = 0 - 1520 .loc 1 512 1 is_stmt 0 view .LVU409 - 1521 0000 70B5 push {r4, r5, r6, lr} - 1522 .LCFI14: - 1523 .cfi_def_cfa_offset 16 - 1524 .cfi_offset 4, -16 - 1525 .cfi_offset 5, -12 - 1526 .cfi_offset 6, -8 - 1527 .cfi_offset 14, -4 - 1528 0002 0446 mov r4, r0 - 513:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 514:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 1529 .loc 1 514 2 is_stmt 1 view .LVU410 - 1530 .loc 1 514 12 is_stmt 0 view .LVU411 - 1531 0004 1A49 ldr r1, .L93 - 1532 0006 FFF7FEFF bl f_stat - 1533 .LVL154: - 1534 .loc 1 514 10 discriminator 1 view .LVU412 - 1535 000a 1A4B ldr r3, .L93+4 - 1536 000c 1870 strb r0, [r3] - 515:Src/File_Handling.c **** if (fresult != FR_OK) - 1537 .loc 1 515 2 is_stmt 1 view .LVU413 - 1538 .loc 1 515 5 is_stmt 0 view .LVU414 - 1539 000e A0B9 cbnz r0, .L92 - 516:Src/File_Handling.c **** { - 517:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 518:Src/File_Handling.c **** sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 519:Src/File_Handling.c **** Send_Uart (buf); - 520:Src/File_Handling.c **** free(buf); - 521:Src/File_Handling.c **** return fresult; - 522:Src/File_Handling.c **** } - 523:Src/File_Handling.c **** - 524:Src/File_Handling.c **** else - 525:Src/File_Handling.c **** { - 526:Src/File_Handling.c **** fresult = f_unlink (name); - 1540 .loc 1 526 3 is_stmt 1 view .LVU415 - 1541 .loc 1 526 13 is_stmt 0 view .LVU416 - 1542 0010 2046 mov r0, r4 - 1543 0012 FFF7FEFF bl f_unlink - 1544 .LVL155: - 1545 0016 0546 mov r5, r0 - 1546 .loc 1 526 11 discriminator 1 view .LVU417 - 1547 0018 164B ldr r3, .L93+4 - 1548 001a 1870 strb r0, [r3] - 527:Src/File_Handling.c **** if (fresult == FR_OK) - ARM GAS /tmp/cccCjqCZ.s page 42 - - - 1549 .loc 1 527 3 is_stmt 1 view .LVU418 - 1550 .loc 1 527 6 is_stmt 0 view .LVU419 - 1551 001c D8B9 cbnz r0, .L89 - 1552 .LBB25: - 528:Src/File_Handling.c **** { - 529:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 1553 .loc 1 529 4 is_stmt 1 view .LVU420 - 1554 .loc 1 529 16 is_stmt 0 view .LVU421 - 1555 001e 6420 movs r0, #100 - 1556 0020 FFF7FEFF bl malloc - 1557 .LVL156: - 1558 0024 0546 mov r5, r0 - 1559 .LVL157: - 530:Src/File_Handling.c **** sprintf (buf, "*%s* has been removed successfully\n", name); - 1560 .loc 1 530 4 is_stmt 1 view .LVU422 - 1561 0026 2246 mov r2, r4 - 1562 0028 1349 ldr r1, .L93+8 - 1563 002a FFF7FEFF bl sprintf - 1564 .LVL158: - 531:Src/File_Handling.c **** Send_Uart (buf); - 1565 .loc 1 531 4 view .LVU423 - 532:Src/File_Handling.c **** free(buf); - 1566 .loc 1 532 4 view .LVU424 - 1567 002e 2846 mov r0, r5 - 1568 0030 FFF7FEFF bl free - 1569 .LVL159: - 1570 .L90: - 1571 .loc 1 532 4 is_stmt 0 view .LVU425 - 1572 .LBE25: - 533:Src/File_Handling.c **** } - 534:Src/File_Handling.c **** - 535:Src/File_Handling.c **** else - 536:Src/File_Handling.c **** { - 537:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 538:Src/File_Handling.c **** sprintf (buf, "ERROR No. %d in removing *%s*\n\n",fresult, name); - 539:Src/File_Handling.c **** Send_Uart (buf); - 540:Src/File_Handling.c **** free(buf); - 541:Src/File_Handling.c **** } - 542:Src/File_Handling.c **** } - 543:Src/File_Handling.c **** return fresult; - 1573 .loc 1 543 2 is_stmt 1 view .LVU426 - 1574 .loc 1 543 9 is_stmt 0 view .LVU427 - 1575 0034 0F4B ldr r3, .L93+4 - 1576 0036 1878 ldrb r0, [r3] @ zero_extendqisi2 - 1577 .L88: - 544:Src/File_Handling.c **** } - 1578 .loc 1 544 1 view .LVU428 - 1579 0038 70BD pop {r4, r5, r6, pc} - 1580 .LVL160: - 1581 .L92: - 1582 .LBB26: - 517:Src/File_Handling.c **** sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 1583 .loc 1 517 3 is_stmt 1 view .LVU429 - 517:Src/File_Handling.c **** sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 1584 .loc 1 517 15 is_stmt 0 view .LVU430 - 1585 003a 6420 movs r0, #100 - 1586 003c FFF7FEFF bl malloc - ARM GAS /tmp/cccCjqCZ.s page 43 - - - 1587 .LVL161: - 1588 0040 0546 mov r5, r0 - 1589 .LVL162: - 518:Src/File_Handling.c **** Send_Uart (buf); - 1590 .loc 1 518 3 is_stmt 1 view .LVU431 - 1591 0042 2246 mov r2, r4 - 1592 0044 0D49 ldr r1, .L93+12 - 1593 0046 FFF7FEFF bl sprintf - 1594 .LVL163: - 519:Src/File_Handling.c **** free(buf); - 1595 .loc 1 519 3 view .LVU432 - 520:Src/File_Handling.c **** return fresult; - 1596 .loc 1 520 3 view .LVU433 - 1597 004a 2846 mov r0, r5 - 1598 004c FFF7FEFF bl free - 1599 .LVL164: - 521:Src/File_Handling.c **** } - 1600 .loc 1 521 3 view .LVU434 - 521:Src/File_Handling.c **** } - 1601 .loc 1 521 10 is_stmt 0 view .LVU435 - 1602 0050 084B ldr r3, .L93+4 - 1603 0052 1878 ldrb r0, [r3] @ zero_extendqisi2 - 1604 0054 F0E7 b .L88 - 1605 .LVL165: - 1606 .L89: - 521:Src/File_Handling.c **** } - 1607 .loc 1 521 10 view .LVU436 - 1608 .LBE26: - 1609 .LBB27: - 537:Src/File_Handling.c **** sprintf (buf, "ERROR No. %d in removing *%s*\n\n",fresult, name); - 1610 .loc 1 537 4 is_stmt 1 view .LVU437 - 537:Src/File_Handling.c **** sprintf (buf, "ERROR No. %d in removing *%s*\n\n",fresult, name); - 1611 .loc 1 537 16 is_stmt 0 view .LVU438 - 1612 0056 6420 movs r0, #100 - 1613 0058 FFF7FEFF bl malloc - 1614 .LVL166: - 1615 005c 0646 mov r6, r0 - 1616 .LVL167: - 538:Src/File_Handling.c **** Send_Uart (buf); - 1617 .loc 1 538 4 is_stmt 1 view .LVU439 - 1618 005e 2346 mov r3, r4 - 1619 0060 2A46 mov r2, r5 - 1620 0062 0749 ldr r1, .L93+16 - 1621 0064 FFF7FEFF bl sprintf - 1622 .LVL168: - 539:Src/File_Handling.c **** free(buf); - 1623 .loc 1 539 4 view .LVU440 - 540:Src/File_Handling.c **** } - 1624 .loc 1 540 4 view .LVU441 - 1625 0068 3046 mov r0, r6 - 1626 006a FFF7FEFF bl free - 1627 .LVL169: - 1628 006e E1E7 b .L90 - 1629 .L94: - 1630 .align 2 - 1631 .L93: - 1632 0070 00000000 .word fno - ARM GAS /tmp/cccCjqCZ.s page 44 - - - 1633 0074 00000000 .word fresult - 1634 0078 20000000 .word .LC12 - 1635 007c 00000000 .word .LC11 - 1636 0080 44000000 .word .LC13 - 1637 .LBE27: - 1638 .cfi_endproc - 1639 .LFE1197: - 1641 .section .rodata.Create_Dir.str1.4,"aMS",%progbits,1 - 1642 .align 2 - 1643 .LC14: - 1644 0000 2A25732A .ascii "*%s* has been created successfully\012\000" - 1644 20686173 - 1644 20626565 - 1644 6E206372 - 1644 65617465 - 1645 .align 2 - 1646 .LC15: - 1647 0024 4552524F .ascii "ERROR No. %d in creating directory *%s*\012\012\000" - 1647 52204E6F - 1647 2E202564 - 1647 20696E20 - 1647 63726561 - 1648 .section .text.Create_Dir,"ax",%progbits - 1649 .align 1 - 1650 .global Create_Dir - 1651 .syntax unified - 1652 .thumb - 1653 .thumb_func - 1655 Create_Dir: - 1656 .LVL170: - 1657 .LFB1198: - 545:Src/File_Handling.c **** - 546:Src/File_Handling.c **** FRESULT Create_Dir (char *name) - 547:Src/File_Handling.c **** { - 1658 .loc 1 547 1 view -0 - 1659 .cfi_startproc - 1660 @ args = 0, pretend = 0, frame = 0 - 1661 @ frame_needed = 0, uses_anonymous_args = 0 - 1662 .loc 1 547 1 is_stmt 0 view .LVU443 - 1663 0000 70B5 push {r4, r5, r6, lr} - 1664 .LCFI15: - 1665 .cfi_def_cfa_offset 16 - 1666 .cfi_offset 4, -16 - 1667 .cfi_offset 5, -12 - 1668 .cfi_offset 6, -8 - 1669 .cfi_offset 14, -4 - 1670 0002 0546 mov r5, r0 - 548:Src/File_Handling.c **** fresult = f_mkdir(name); - 1671 .loc 1 548 5 is_stmt 1 view .LVU444 - 1672 .loc 1 548 15 is_stmt 0 view .LVU445 - 1673 0004 FFF7FEFF bl f_mkdir - 1674 .LVL171: - 1675 .loc 1 548 13 discriminator 1 view .LVU446 - 1676 0008 0F4B ldr r3, .L99 - 1677 000a 1870 strb r0, [r3] - 549:Src/File_Handling.c **** if (fresult == FR_OK) - 1678 .loc 1 549 5 is_stmt 1 view .LVU447 - ARM GAS /tmp/cccCjqCZ.s page 45 - - - 1679 .loc 1 549 8 is_stmt 0 view .LVU448 - 1680 000c 68B9 cbnz r0, .L96 - 1681 .LBB28: - 550:Src/File_Handling.c **** { - 551:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 1682 .loc 1 551 6 is_stmt 1 view .LVU449 - 1683 .loc 1 551 18 is_stmt 0 view .LVU450 - 1684 000e 6420 movs r0, #100 - 1685 0010 FFF7FEFF bl malloc - 1686 .LVL172: - 1687 0014 0446 mov r4, r0 - 1688 .LVL173: - 552:Src/File_Handling.c **** sprintf (buf, "*%s* has been created successfully\n", name); - 1689 .loc 1 552 6 is_stmt 1 view .LVU451 - 1690 0016 2A46 mov r2, r5 - 1691 0018 0C49 ldr r1, .L99+4 - 1692 001a FFF7FEFF bl sprintf - 1693 .LVL174: - 553:Src/File_Handling.c **** Send_Uart (buf); - 1694 .loc 1 553 6 view .LVU452 - 554:Src/File_Handling.c **** free(buf); - 1695 .loc 1 554 6 view .LVU453 - 1696 001e 2046 mov r0, r4 - 1697 0020 FFF7FEFF bl free - 1698 .LVL175: - 1699 .L97: - 1700 .loc 1 554 6 is_stmt 0 view .LVU454 - 1701 .LBE28: - 555:Src/File_Handling.c **** } - 556:Src/File_Handling.c **** else - 557:Src/File_Handling.c **** { - 558:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 559:Src/File_Handling.c **** sprintf (buf, "ERROR No. %d in creating directory *%s*\n\n", fresult,name); - 560:Src/File_Handling.c **** Send_Uart(buf); - 561:Src/File_Handling.c **** free(buf); - 562:Src/File_Handling.c **** } - 563:Src/File_Handling.c **** return fresult; - 1702 .loc 1 563 5 is_stmt 1 view .LVU455 - 564:Src/File_Handling.c **** } - 1703 .loc 1 564 1 is_stmt 0 view .LVU456 - 1704 0024 084B ldr r3, .L99 - 1705 0026 1878 ldrb r0, [r3] @ zero_extendqisi2 - 1706 0028 70BD pop {r4, r5, r6, pc} - 1707 .LVL176: - 1708 .L96: - 1709 .loc 1 564 1 view .LVU457 - 1710 002a 0446 mov r4, r0 - 1711 .LBB29: - 558:Src/File_Handling.c **** sprintf (buf, "ERROR No. %d in creating directory *%s*\n\n", fresult,name); - 1712 .loc 1 558 6 is_stmt 1 view .LVU458 - 558:Src/File_Handling.c **** sprintf (buf, "ERROR No. %d in creating directory *%s*\n\n", fresult,name); - 1713 .loc 1 558 18 is_stmt 0 view .LVU459 - 1714 002c 6420 movs r0, #100 - 1715 002e FFF7FEFF bl malloc - 1716 .LVL177: - 1717 0032 0646 mov r6, r0 - 1718 .LVL178: - ARM GAS /tmp/cccCjqCZ.s page 46 - - - 559:Src/File_Handling.c **** Send_Uart(buf); - 1719 .loc 1 559 6 is_stmt 1 view .LVU460 - 1720 0034 2B46 mov r3, r5 - 1721 0036 2246 mov r2, r4 - 1722 0038 0549 ldr r1, .L99+8 - 1723 003a FFF7FEFF bl sprintf - 1724 .LVL179: - 560:Src/File_Handling.c **** free(buf); - 1725 .loc 1 560 6 view .LVU461 - 561:Src/File_Handling.c **** } - 1726 .loc 1 561 6 view .LVU462 - 1727 003e 3046 mov r0, r6 - 1728 0040 FFF7FEFF bl free - 1729 .LVL180: - 1730 0044 EEE7 b .L97 - 1731 .L100: - 1732 0046 00BF .align 2 - 1733 .L99: - 1734 0048 00000000 .word fresult - 1735 004c 00000000 .word .LC14 - 1736 0050 24000000 .word .LC15 - 1737 .LBE29: - 1738 .cfi_endproc - 1739 .LFE1198: - 1741 .section .rodata.Check_SD_Space.str1.4,"aMS",%progbits,1 - 1742 .align 2 - 1743 .LC16: - 1744 0000 00 .ascii "\000" - 1745 0001 000000 .align 2 - 1746 .LC17: - 1747 0004 53442043 .ascii "SD CARD Total Size: \011%lu\012\000" - 1747 41524420 - 1747 546F7461 - 1747 6C205369 - 1747 7A653A20 - 1748 001e 0000 .align 2 - 1749 .LC18: - 1750 0020 53442043 .ascii "SD CARD Free Space: \011%lu\012\000" - 1750 41524420 - 1750 46726565 - 1750 20537061 - 1750 63653A20 - 1751 .section .text.Check_SD_Space,"ax",%progbits - 1752 .align 1 - 1753 .global Check_SD_Space - 1754 .syntax unified - 1755 .thumb - 1756 .thumb_func - 1758 Check_SD_Space: - 1759 .LFB1199: - 565:Src/File_Handling.c **** - 566:Src/File_Handling.c **** void Check_SD_Space (void) - 567:Src/File_Handling.c **** { - 1760 .loc 1 567 1 view -0 - 1761 .cfi_startproc - 1762 @ args = 0, pretend = 0, frame = 0 - 1763 @ frame_needed = 0, uses_anonymous_args = 0 - ARM GAS /tmp/cccCjqCZ.s page 47 - - - 1764 0000 F8B5 push {r3, r4, r5, r6, r7, lr} - 1765 .LCFI16: - 1766 .cfi_def_cfa_offset 24 - 1767 .cfi_offset 3, -24 - 1768 .cfi_offset 4, -20 - 1769 .cfi_offset 5, -16 - 1770 .cfi_offset 6, -12 - 1771 .cfi_offset 7, -8 - 1772 .cfi_offset 14, -4 - 1773 0002 2DED028B vpush.64 {d8} - 1774 .LCFI17: - 1775 .cfi_def_cfa_offset 32 - 1776 .cfi_offset 80, -32 - 1777 .cfi_offset 81, -28 - 568:Src/File_Handling.c **** /* Check free space */ - 569:Src/File_Handling.c **** f_getfree("", &fre_clust, &pfs); - 1778 .loc 1 569 5 view .LVU464 - 1779 0006 234D ldr r5, .L103 - 1780 0008 234F ldr r7, .L103+4 - 1781 000a 2A46 mov r2, r5 - 1782 000c 3946 mov r1, r7 - 1783 000e 2348 ldr r0, .L103+8 - 1784 0010 FFF7FEFF bl f_getfree - 1785 .LVL181: - 570:Src/File_Handling.c **** - 571:Src/File_Handling.c **** total = (uint32_t)((pfs->n_fatent - 2) * pfs->csize * 0.5); - 1786 .loc 1 571 5 view .LVU465 - 1787 .loc 1 571 28 is_stmt 0 view .LVU466 - 1788 0014 2A68 ldr r2, [r5] - 1789 0016 9369 ldr r3, [r2, #24] - 1790 .loc 1 571 39 view .LVU467 - 1791 0018 023B subs r3, r3, #2 - 1792 .loc 1 571 49 view .LVU468 - 1793 001a 5289 ldrh r2, [r2, #10] - 1794 .loc 1 571 44 view .LVU469 - 1795 001c 02FB03F3 mul r3, r2, r3 - 1796 .loc 1 571 57 view .LVU470 - 1797 0020 07EE903A vmov s15, r3 @ int - 1798 0024 B8EE677B vcvt.f64.u32 d7, s15 - 1799 0028 B6EE008B vmov.f64 d8, #5.0e-1 - 1800 002c 27EE087B vmul.f64 d7, d7, d8 - 1801 .loc 1 571 13 view .LVU471 - 1802 0030 FCEEC77B vcvt.u32.f64 s15, d7 - 1803 0034 17EE904A vmov r4, s15 @ int - 1804 .loc 1 571 11 view .LVU472 - 1805 0038 194B ldr r3, .L103+12 - 1806 003a C3ED007A vstr.32 s15, [r3] @ int - 572:Src/File_Handling.c **** char *buf = malloc(30*sizeof(char)); - 1807 .loc 1 572 5 is_stmt 1 view .LVU473 - 1808 .loc 1 572 17 is_stmt 0 view .LVU474 - 1809 003e 1E20 movs r0, #30 - 1810 0040 FFF7FEFF bl malloc - 1811 .LVL182: - 1812 0044 0646 mov r6, r0 - 1813 .LVL183: - 573:Src/File_Handling.c **** sprintf (buf, "SD CARD Total Size: \t%lu\n",total); - 1814 .loc 1 573 5 is_stmt 1 view .LVU475 - ARM GAS /tmp/cccCjqCZ.s page 48 - - - 1815 0046 2246 mov r2, r4 - 1816 0048 1649 ldr r1, .L103+16 - 1817 004a FFF7FEFF bl sprintf - 1818 .LVL184: - 574:Src/File_Handling.c **** Send_Uart(buf); - 1819 .loc 1 574 5 view .LVU476 - 575:Src/File_Handling.c **** free(buf); - 1820 .loc 1 575 5 view .LVU477 - 1821 004e 3046 mov r0, r6 - 1822 0050 FFF7FEFF bl free - 1823 .LVL185: - 576:Src/File_Handling.c **** free_space = (uint32_t)(fre_clust * pfs->csize * 0.5); - 1824 .loc 1 576 5 view .LVU478 - 1825 .loc 1 576 44 is_stmt 0 view .LVU479 - 1826 0054 2B68 ldr r3, [r5] - 1827 0056 5B89 ldrh r3, [r3, #10] - 1828 .loc 1 576 39 view .LVU480 - 1829 0058 3A68 ldr r2, [r7] - 1830 005a 02FB03F3 mul r3, r2, r3 - 1831 005e 07EE103A vmov s14, r3 @ int - 1832 .loc 1 576 52 view .LVU481 - 1833 0062 B8EE477B vcvt.f64.u32 d7, s14 - 1834 0066 27EE087B vmul.f64 d7, d7, d8 - 1835 .loc 1 576 18 view .LVU482 - 1836 006a FCEEC77B vcvt.u32.f64 s15, d7 - 1837 006e 17EE904A vmov r4, s15 @ int - 1838 .loc 1 576 16 view .LVU483 - 1839 0072 0D4B ldr r3, .L103+20 - 1840 0074 C3ED007A vstr.32 s15, [r3] @ int - 577:Src/File_Handling.c **** buf = malloc(30*sizeof(char)); - 1841 .loc 1 577 5 is_stmt 1 view .LVU484 - 1842 .loc 1 577 11 is_stmt 0 view .LVU485 - 1843 0078 1E20 movs r0, #30 - 1844 007a FFF7FEFF bl malloc - 1845 .LVL186: - 1846 007e 0546 mov r5, r0 - 1847 .LVL187: - 578:Src/File_Handling.c **** sprintf (buf, "SD CARD Free Space: \t%lu\n",free_space); - 1848 .loc 1 578 5 is_stmt 1 view .LVU486 - 1849 0080 2246 mov r2, r4 - 1850 0082 0A49 ldr r1, .L103+24 - 1851 0084 FFF7FEFF bl sprintf - 1852 .LVL188: - 579:Src/File_Handling.c **** Send_Uart(buf); - 1853 .loc 1 579 5 view .LVU487 - 580:Src/File_Handling.c **** free(buf); - 1854 .loc 1 580 5 view .LVU488 - 1855 0088 2846 mov r0, r5 - 1856 008a FFF7FEFF bl free - 1857 .LVL189: - 581:Src/File_Handling.c **** } - 1858 .loc 1 581 1 is_stmt 0 view .LVU489 - 1859 008e BDEC028B vldm sp!, {d8} - 1860 .LCFI18: - 1861 .cfi_restore 80 - 1862 .cfi_restore 81 - 1863 .cfi_def_cfa_offset 24 - ARM GAS /tmp/cccCjqCZ.s page 49 - - - 1864 0092 F8BD pop {r3, r4, r5, r6, r7, pc} - 1865 .LVL190: - 1866 .L104: - 1867 .loc 1 581 1 view .LVU490 - 1868 .align 2 - 1869 .L103: - 1870 0094 00000000 .word pfs - 1871 0098 00000000 .word fre_clust - 1872 009c 00000000 .word .LC16 - 1873 00a0 00000000 .word total - 1874 00a4 04000000 .word .LC17 - 1875 00a8 00000000 .word free_space - 1876 00ac 20000000 .word .LC18 - 1877 .cfi_endproc - 1878 .LFE1199: - 1880 .section .text.Update_File_float,"ax",%progbits - 1881 .align 1 - 1882 .global Update_File_float - 1883 .syntax unified - 1884 .thumb - 1885 .thumb_func - 1887 Update_File_float: - 1888 .LVL191: - 1889 .LFB1200: - 582:Src/File_Handling.c **** - 583:Src/File_Handling.c **** FRESULT Update_File_float (char *name, float *data, unsigned int bytesize) - 584:Src/File_Handling.c **** { - 1890 .loc 1 584 1 is_stmt 1 view -0 - 1891 .cfi_startproc - 1892 @ args = 0, pretend = 0, frame = 0 - 1893 @ frame_needed = 0, uses_anonymous_args = 0 - 1894 .loc 1 584 1 is_stmt 0 view .LVU492 - 1895 0000 F8B5 push {r3, r4, r5, r6, r7, lr} - 1896 .LCFI19: - 1897 .cfi_def_cfa_offset 24 - 1898 .cfi_offset 3, -24 - 1899 .cfi_offset 4, -20 - 1900 .cfi_offset 5, -16 - 1901 .cfi_offset 6, -12 - 1902 .cfi_offset 7, -8 - 1903 .cfi_offset 14, -4 - 1904 0002 0446 mov r4, r0 - 1905 0004 0D46 mov r5, r1 - 1906 0006 1646 mov r6, r2 - 585:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 586:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 1907 .loc 1 586 2 is_stmt 1 view .LVU493 - 1908 .loc 1 586 12 is_stmt 0 view .LVU494 - 1909 0008 1049 ldr r1, .L110 - 1910 .LVL192: - 1911 .loc 1 586 12 view .LVU495 - 1912 000a FFF7FEFF bl f_stat - 1913 .LVL193: - 1914 .loc 1 586 10 discriminator 1 view .LVU496 - 1915 000e 104B ldr r3, .L110+4 - 1916 0010 1870 strb r0, [r3] - 587:Src/File_Handling.c **** if (fresult != FR_OK) - ARM GAS /tmp/cccCjqCZ.s page 50 - - - 1917 .loc 1 587 2 is_stmt 1 view .LVU497 - 1918 .loc 1 587 5 is_stmt 0 view .LVU498 - 1919 0012 08B1 cbz r0, .L106 - 1920 .LBB30: - 588:Src/File_Handling.c **** { - 589:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 1921 .loc 1 589 3 is_stmt 1 view .LVU499 - 590:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 591:Src/File_Handling.c **** //Send_Uart (buf); - 592:Src/File_Handling.c **** free(buf); - 1922 .loc 1 592 3 view .LVU500 - 593:Src/File_Handling.c **** return fresult; - 1923 .loc 1 593 6 view .LVU501 - 1924 .loc 1 593 13 is_stmt 0 view .LVU502 - 1925 0014 C0B2 uxtb r0, r0 - 1926 .LVL194: - 1927 .L107: - 1928 .loc 1 593 13 view .LVU503 - 1929 .LBE30: - 594:Src/File_Handling.c **** } - 595:Src/File_Handling.c **** - 596:Src/File_Handling.c **** else - 597:Src/File_Handling.c **** { - 598:Src/File_Handling.c **** /* Create a file with read write access and open it */ - 599:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_OPEN_APPEND | FA_WRITE); - 600:Src/File_Handling.c **** if (fresult != FR_OK) - 601:Src/File_Handling.c **** { - 602:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 603:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 604:Src/File_Handling.c **** //Send_Uart(buf); - 605:Src/File_Handling.c **** free(buf); - 606:Src/File_Handling.c **** return fresult; - 607:Src/File_Handling.c **** } - 608:Src/File_Handling.c **** - 609:Src/File_Handling.c **** /* Writing text */ - 610:Src/File_Handling.c **** fresult = f_write(&fil, data, bytesize, &bw); - 611:Src/File_Handling.c **** if (fresult != FR_OK) - 612:Src/File_Handling.c **** { - 613:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 614:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in writing file *%s*\n\n", fresult, name); - 615:Src/File_Handling.c **** //Send_Uart(buf); - 616:Src/File_Handling.c **** free(buf); - 617:Src/File_Handling.c **** } - 618:Src/File_Handling.c **** - 619:Src/File_Handling.c **** else - 620:Src/File_Handling.c **** { - 621:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 622:Src/File_Handling.c **** //sprintf (buf, "*%s* UPDATED successfully\n", name); - 623:Src/File_Handling.c **** //Send_Uart(buf); - 624:Src/File_Handling.c **** free(buf); - 625:Src/File_Handling.c **** } - 626:Src/File_Handling.c **** - 627:Src/File_Handling.c **** /* Close file */ - 628:Src/File_Handling.c **** fresult = f_close(&fil); - 629:Src/File_Handling.c **** if (fresult != FR_OK) - 630:Src/File_Handling.c **** { - 631:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - ARM GAS /tmp/cccCjqCZ.s page 51 - - - 632:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 633:Src/File_Handling.c **** //Send_Uart(buf); - 634:Src/File_Handling.c **** free(buf); - 635:Src/File_Handling.c **** } - 636:Src/File_Handling.c **** else - 637:Src/File_Handling.c **** { - 638:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 639:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 640:Src/File_Handling.c **** //Send_Uart(buf); - 641:Src/File_Handling.c **** free(buf); - 642:Src/File_Handling.c **** } - 643:Src/File_Handling.c **** } - 644:Src/File_Handling.c **** return fresult; - 645:Src/File_Handling.c **** } - 1930 .loc 1 645 1 view .LVU504 - 1931 0016 F8BD pop {r3, r4, r5, r6, r7, pc} - 1932 .LVL195: - 1933 .L106: - 599:Src/File_Handling.c **** if (fresult != FR_OK) - 1934 .loc 1 599 6 is_stmt 1 view .LVU505 - 599:Src/File_Handling.c **** if (fresult != FR_OK) - 1935 .loc 1 599 16 is_stmt 0 view .LVU506 - 1936 0018 3222 movs r2, #50 - 1937 001a 2146 mov r1, r4 - 1938 001c 0D48 ldr r0, .L110+8 - 1939 001e FFF7FEFF bl f_open - 1940 .LVL196: - 599:Src/File_Handling.c **** if (fresult != FR_OK) - 1941 .loc 1 599 14 discriminator 1 view .LVU507 - 1942 0022 0B4B ldr r3, .L110+4 - 1943 0024 1870 strb r0, [r3] - 600:Src/File_Handling.c **** { - 1944 .loc 1 600 6 is_stmt 1 view .LVU508 - 600:Src/File_Handling.c **** { - 1945 .loc 1 600 9 is_stmt 0 view .LVU509 - 1946 0026 08B1 cbz r0, .L108 - 1947 .LBB31: - 602:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 1948 .loc 1 602 7 is_stmt 1 view .LVU510 - 605:Src/File_Handling.c **** return fresult; - 1949 .loc 1 605 10 view .LVU511 - 606:Src/File_Handling.c **** } - 1950 .loc 1 606 10 view .LVU512 - 606:Src/File_Handling.c **** } - 1951 .loc 1 606 17 is_stmt 0 view .LVU513 - 1952 0028 C0B2 uxtb r0, r0 - 1953 002a F4E7 b .L107 - 1954 .L108: - 1955 .LBE31: - 610:Src/File_Handling.c **** if (fresult != FR_OK) - 1956 .loc 1 610 6 is_stmt 1 view .LVU514 - 610:Src/File_Handling.c **** if (fresult != FR_OK) - 1957 .loc 1 610 16 is_stmt 0 view .LVU515 - 1958 002c 094F ldr r7, .L110+8 - 1959 002e 0A4B ldr r3, .L110+12 - 1960 0030 3246 mov r2, r6 - 1961 0032 2946 mov r1, r5 - ARM GAS /tmp/cccCjqCZ.s page 52 - - - 1962 0034 3846 mov r0, r7 - 1963 0036 FFF7FEFF bl f_write - 1964 .LVL197: - 610:Src/File_Handling.c **** if (fresult != FR_OK) - 1965 .loc 1 610 14 discriminator 1 view .LVU516 - 1966 003a 054C ldr r4, .L110+4 - 1967 .LVL198: - 610:Src/File_Handling.c **** if (fresult != FR_OK) - 1968 .loc 1 610 14 discriminator 1 view .LVU517 - 1969 003c 2070 strb r0, [r4] - 611:Src/File_Handling.c **** { - 1970 .loc 1 611 6 is_stmt 1 view .LVU518 - 621:Src/File_Handling.c **** //sprintf (buf, "*%s* UPDATED successfully\n", name); - 1971 .loc 1 621 7 view .LVU519 - 624:Src/File_Handling.c **** } - 1972 .loc 1 624 7 view .LVU520 - 628:Src/File_Handling.c **** if (fresult != FR_OK) - 1973 .loc 1 628 6 view .LVU521 - 628:Src/File_Handling.c **** if (fresult != FR_OK) - 1974 .loc 1 628 16 is_stmt 0 view .LVU522 - 1975 003e 3846 mov r0, r7 - 1976 0040 FFF7FEFF bl f_close - 1977 .LVL199: - 628:Src/File_Handling.c **** if (fresult != FR_OK) - 1978 .loc 1 628 14 discriminator 1 view .LVU523 - 1979 0044 2070 strb r0, [r4] - 629:Src/File_Handling.c **** { - 1980 .loc 1 629 6 is_stmt 1 view .LVU524 - 638:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 1981 .loc 1 638 7 view .LVU525 - 641:Src/File_Handling.c **** } - 1982 .loc 1 641 7 view .LVU526 - 644:Src/File_Handling.c **** } - 1983 .loc 1 644 5 view .LVU527 - 644:Src/File_Handling.c **** } - 1984 .loc 1 644 12 is_stmt 0 view .LVU528 - 1985 0046 C0B2 uxtb r0, r0 - 1986 0048 E5E7 b .L107 - 1987 .L111: - 1988 004a 00BF .align 2 - 1989 .L110: - 1990 004c 00000000 .word fno - 1991 0050 00000000 .word fresult - 1992 0054 00000000 .word fil - 1993 0058 00000000 .word bw - 1994 .cfi_endproc - 1995 .LFE1200: - 1997 .section .text.Update_File_byte,"ax",%progbits - 1998 .align 1 - 1999 .global Update_File_byte - 2000 .syntax unified - 2001 .thumb - 2002 .thumb_func - 2004 Update_File_byte: - 2005 .LVL200: - 2006 .LFB1201: - 646:Src/File_Handling.c **** - ARM GAS /tmp/cccCjqCZ.s page 53 - - - 647:Src/File_Handling.c **** FRESULT Update_File_byte (char *name, uint8_t *data, unsigned int bytesize) - 648:Src/File_Handling.c **** { - 2007 .loc 1 648 1 is_stmt 1 view -0 - 2008 .cfi_startproc - 2009 @ args = 0, pretend = 0, frame = 0 - 2010 @ frame_needed = 0, uses_anonymous_args = 0 - 2011 .loc 1 648 1 is_stmt 0 view .LVU530 - 2012 0000 F8B5 push {r3, r4, r5, r6, r7, lr} - 2013 .LCFI20: - 2014 .cfi_def_cfa_offset 24 - 2015 .cfi_offset 3, -24 - 2016 .cfi_offset 4, -20 - 2017 .cfi_offset 5, -16 - 2018 .cfi_offset 6, -12 - 2019 .cfi_offset 7, -8 - 2020 .cfi_offset 14, -4 - 2021 0002 0446 mov r4, r0 - 2022 0004 0D46 mov r5, r1 - 2023 0006 1646 mov r6, r2 - 649:Src/File_Handling.c **** /**** check whether the file exists or not ****/ - 650:Src/File_Handling.c **** fresult = f_stat (name, &fno); - 2024 .loc 1 650 2 is_stmt 1 view .LVU531 - 2025 .loc 1 650 12 is_stmt 0 view .LVU532 - 2026 0008 1049 ldr r1, .L117 - 2027 .LVL201: - 2028 .loc 1 650 12 view .LVU533 - 2029 000a FFF7FEFF bl f_stat - 2030 .LVL202: - 2031 .loc 1 650 10 discriminator 1 view .LVU534 - 2032 000e 104B ldr r3, .L117+4 - 2033 0010 1870 strb r0, [r3] - 651:Src/File_Handling.c **** if (fresult != FR_OK) - 2034 .loc 1 651 2 is_stmt 1 view .LVU535 - 2035 .loc 1 651 5 is_stmt 0 view .LVU536 - 2036 0012 08B1 cbz r0, .L113 - 2037 .LBB32: - 652:Src/File_Handling.c **** { - 653:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 2038 .loc 1 653 3 is_stmt 1 view .LVU537 - 654:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! *%s* does not exists\n\n", name); - 655:Src/File_Handling.c **** //Send_Uart (buf); - 656:Src/File_Handling.c **** free(buf); - 2039 .loc 1 656 3 view .LVU538 - 657:Src/File_Handling.c **** return fresult; - 2040 .loc 1 657 6 view .LVU539 - 2041 .loc 1 657 13 is_stmt 0 view .LVU540 - 2042 0014 C0B2 uxtb r0, r0 - 2043 .LVL203: - 2044 .L114: - 2045 .loc 1 657 13 view .LVU541 - 2046 .LBE32: - 658:Src/File_Handling.c **** } - 659:Src/File_Handling.c **** - 660:Src/File_Handling.c **** else - 661:Src/File_Handling.c **** { - 662:Src/File_Handling.c **** /* Create a file with read write access and open it */ - 663:Src/File_Handling.c **** fresult = f_open(&fil, name, FA_OPEN_APPEND | FA_WRITE); - ARM GAS /tmp/cccCjqCZ.s page 54 - - - 664:Src/File_Handling.c **** if (fresult != FR_OK) - 665:Src/File_Handling.c **** { - 666:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 667:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 668:Src/File_Handling.c **** //Send_Uart(buf); - 669:Src/File_Handling.c **** free(buf); - 670:Src/File_Handling.c **** return fresult; - 671:Src/File_Handling.c **** } - 672:Src/File_Handling.c **** - 673:Src/File_Handling.c **** /* Writing text */ - 674:Src/File_Handling.c **** fresult = f_write(&fil, data, bytesize, &bw); - 675:Src/File_Handling.c **** if (fresult != FR_OK) - 676:Src/File_Handling.c **** { - 677:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 678:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in writing file *%s*\n\n", fresult, name); - 679:Src/File_Handling.c **** //Send_Uart(buf); - 680:Src/File_Handling.c **** free(buf); - 681:Src/File_Handling.c **** } - 682:Src/File_Handling.c **** - 683:Src/File_Handling.c **** else - 684:Src/File_Handling.c **** { - 685:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 686:Src/File_Handling.c **** //sprintf (buf, "*%s* UPDATED successfully\n", name); - 687:Src/File_Handling.c **** //Send_Uart(buf); - 688:Src/File_Handling.c **** free(buf); - 689:Src/File_Handling.c **** } - 690:Src/File_Handling.c **** - 691:Src/File_Handling.c **** /* Close file */ - 692:Src/File_Handling.c **** fresult = f_close(&fil); - 693:Src/File_Handling.c **** if (fresult != FR_OK) - 694:Src/File_Handling.c **** { - 695:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 696:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in closing file *%s*\n\n", fresult, name); - 697:Src/File_Handling.c **** //Send_Uart(buf); - 698:Src/File_Handling.c **** free(buf); - 699:Src/File_Handling.c **** } - 700:Src/File_Handling.c **** else - 701:Src/File_Handling.c **** { - 702:Src/File_Handling.c **** char *buf = malloc(100*sizeof(char)); - 703:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 704:Src/File_Handling.c **** //Send_Uart(buf); - 705:Src/File_Handling.c **** free(buf); - 706:Src/File_Handling.c **** } - 707:Src/File_Handling.c **** } - 708:Src/File_Handling.c **** return fresult; - 709:Src/File_Handling.c **** } - 2047 .loc 1 709 1 view .LVU542 - 2048 0016 F8BD pop {r3, r4, r5, r6, r7, pc} - 2049 .LVL204: - 2050 .L113: - 663:Src/File_Handling.c **** if (fresult != FR_OK) - 2051 .loc 1 663 6 is_stmt 1 view .LVU543 - 663:Src/File_Handling.c **** if (fresult != FR_OK) - 2052 .loc 1 663 16 is_stmt 0 view .LVU544 - 2053 0018 3222 movs r2, #50 - 2054 001a 2146 mov r1, r4 - 2055 001c 0D48 ldr r0, .L117+8 - ARM GAS /tmp/cccCjqCZ.s page 55 - - - 2056 001e FFF7FEFF bl f_open - 2057 .LVL205: - 663:Src/File_Handling.c **** if (fresult != FR_OK) - 2058 .loc 1 663 14 discriminator 1 view .LVU545 - 2059 0022 0B4B ldr r3, .L117+4 - 2060 0024 1870 strb r0, [r3] - 664:Src/File_Handling.c **** { - 2061 .loc 1 664 6 is_stmt 1 view .LVU546 - 664:Src/File_Handling.c **** { - 2062 .loc 1 664 9 is_stmt 0 view .LVU547 - 2063 0026 08B1 cbz r0, .L115 - 2064 .LBB33: - 666:Src/File_Handling.c **** //sprintf (buf, "ERROR!!! No. %d in opening file *%s*\n\n", fresult, name); - 2065 .loc 1 666 7 is_stmt 1 view .LVU548 - 669:Src/File_Handling.c **** return fresult; - 2066 .loc 1 669 10 view .LVU549 - 670:Src/File_Handling.c **** } - 2067 .loc 1 670 10 view .LVU550 - 670:Src/File_Handling.c **** } - 2068 .loc 1 670 17 is_stmt 0 view .LVU551 - 2069 0028 C0B2 uxtb r0, r0 - 2070 002a F4E7 b .L114 - 2071 .L115: - 2072 .LBE33: - 674:Src/File_Handling.c **** if (fresult != FR_OK) - 2073 .loc 1 674 6 is_stmt 1 view .LVU552 - 674:Src/File_Handling.c **** if (fresult != FR_OK) - 2074 .loc 1 674 16 is_stmt 0 view .LVU553 - 2075 002c 094F ldr r7, .L117+8 - 2076 002e 0A4B ldr r3, .L117+12 - 2077 0030 3246 mov r2, r6 - 2078 0032 2946 mov r1, r5 - 2079 0034 3846 mov r0, r7 - 2080 0036 FFF7FEFF bl f_write - 2081 .LVL206: - 674:Src/File_Handling.c **** if (fresult != FR_OK) - 2082 .loc 1 674 14 discriminator 1 view .LVU554 - 2083 003a 054C ldr r4, .L117+4 - 2084 .LVL207: - 674:Src/File_Handling.c **** if (fresult != FR_OK) - 2085 .loc 1 674 14 discriminator 1 view .LVU555 - 2086 003c 2070 strb r0, [r4] - 675:Src/File_Handling.c **** { - 2087 .loc 1 675 6 is_stmt 1 view .LVU556 - 685:Src/File_Handling.c **** //sprintf (buf, "*%s* UPDATED successfully\n", name); - 2088 .loc 1 685 7 view .LVU557 - 688:Src/File_Handling.c **** } - 2089 .loc 1 688 7 view .LVU558 - 692:Src/File_Handling.c **** if (fresult != FR_OK) - 2090 .loc 1 692 6 view .LVU559 - 692:Src/File_Handling.c **** if (fresult != FR_OK) - 2091 .loc 1 692 16 is_stmt 0 view .LVU560 - 2092 003e 3846 mov r0, r7 - 2093 0040 FFF7FEFF bl f_close - 2094 .LVL208: - 692:Src/File_Handling.c **** if (fresult != FR_OK) - 2095 .loc 1 692 14 discriminator 1 view .LVU561 - ARM GAS /tmp/cccCjqCZ.s page 56 - - - 2096 0044 2070 strb r0, [r4] - 693:Src/File_Handling.c **** { - 2097 .loc 1 693 6 is_stmt 1 view .LVU562 - 702:Src/File_Handling.c **** //sprintf (buf, "File *%s* CLOSED successfully\n", name); - 2098 .loc 1 702 7 view .LVU563 - 705:Src/File_Handling.c **** } - 2099 .loc 1 705 7 view .LVU564 - 708:Src/File_Handling.c **** } - 2100 .loc 1 708 5 view .LVU565 - 708:Src/File_Handling.c **** } - 2101 .loc 1 708 12 is_stmt 0 view .LVU566 - 2102 0046 C0B2 uxtb r0, r0 - 2103 0048 E5E7 b .L114 - 2104 .L118: - 2105 004a 00BF .align 2 - 2106 .L117: - 2107 004c 00000000 .word fno - 2108 0050 00000000 .word fresult - 2109 0054 00000000 .word fil - 2110 0058 00000000 .word bw - 2111 .cfi_endproc - 2112 .LFE1201: - 2114 .global free_space - 2115 .section .bss.free_space,"aw",%nobits - 2116 .align 2 - 2119 free_space: - 2120 0000 00000000 .space 4 - 2121 .global total - 2122 .section .bss.total,"aw",%nobits - 2123 .align 2 - 2126 total: - 2127 0000 00000000 .space 4 - 2128 .global fre_clust - 2129 .section .bss.fre_clust,"aw",%nobits - 2130 .align 2 - 2133 fre_clust: - 2134 0000 00000000 .space 4 - 2135 .global pfs - 2136 .section .bss.pfs,"aw",%nobits - 2137 .align 2 - 2140 pfs: - 2141 0000 00000000 .space 4 - 2142 .global bw - 2143 .section .bss.bw,"aw",%nobits - 2144 .align 2 - 2147 bw: - 2148 0000 00000000 .space 4 - 2149 .global br - 2150 .section .bss.br,"aw",%nobits - 2151 .align 2 - 2154 br: - 2155 0000 00000000 .space 4 - 2156 .global fno - 2157 .section .bss.fno,"aw",%nobits - 2158 .align 2 - 2161 fno: - 2162 0000 00000000 .space 24 - ARM GAS /tmp/cccCjqCZ.s page 57 - - - 2162 00000000 - 2162 00000000 - 2162 00000000 - 2162 00000000 - 2163 .global fil - 2164 .section .bss.fil,"aw",%nobits - 2165 .align 2 - 2168 fil: - 2169 0000 00000000 .space 4144 - 2169 00000000 - 2169 00000000 - 2169 00000000 - 2169 00000000 - 2170 .global fs - 2171 .section .bss.fs,"aw",%nobits - 2172 .align 2 - 2175 fs: - 2176 0000 00000000 .space 4148 - 2176 00000000 - 2176 00000000 - 2176 00000000 - 2176 00000000 - 2177 .text - 2178 .Letext0: - 2179 .file 2 "Middlewares/Third_Party/FatFs/src/integer.h" - 2180 .file 3 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stdint.h" - 2181 .file 4 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stddef.h" - 2182 .file 5 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_dma.h" - 2183 .file 6 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_tim.h" - 2184 .file 7 "Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_rcc.h" - 2185 .file 8 "Middlewares/Third_Party/FatFs/src/ff.h" - 2186 .file 9 "/usr/include/newlib/string.h" - 2187 .file 10 "/usr/include/newlib/stdio.h" - 2188 .file 11 "/usr/include/newlib/stdlib.h" - 2189 .file 12 "" - ARM GAS /tmp/cccCjqCZ.s page 58 - - -DEFINED SYMBOLS - *ABS*:00000000 File_Handling.c - /tmp/cccCjqCZ.s:20 .text.Send_Uart:00000000 $t - /tmp/cccCjqCZ.s:26 .text.Send_Uart:00000000 Send_Uart - /tmp/cccCjqCZ.s:40 .text.Mount_SD:00000000 $t - /tmp/cccCjqCZ.s:46 .text.Mount_SD:00000000 Mount_SD - /tmp/cccCjqCZ.s:86 .text.Mount_SD:0000001c $d - /tmp/cccCjqCZ.s:2175 .bss.fs:00000000 fs - /tmp/cccCjqCZ.s:92 .text.Unmount_SD:00000000 $t - /tmp/cccCjqCZ.s:98 .text.Unmount_SD:00000000 Unmount_SD - /tmp/cccCjqCZ.s:138 .text.Unmount_SD:0000001c $d - /tmp/cccCjqCZ.s:143 .rodata.Scan_SD.str1.4:00000000 $d - /tmp/cccCjqCZ.s:156 .text.Scan_SD:00000000 $t - /tmp/cccCjqCZ.s:162 .text.Scan_SD:00000000 Scan_SD - /tmp/cccCjqCZ.s:344 .text.Scan_SD:000000b8 $d - /tmp/cccCjqCZ.s:2161 .bss.fno:00000000 fno - /tmp/cccCjqCZ.s:355 .rodata.Format_SD.str1.4:00000000 $d - /tmp/cccCjqCZ.s:359 .text.Format_SD:00000000 $t - /tmp/cccCjqCZ.s:365 .text.Format_SD:00000000 Format_SD - /tmp/cccCjqCZ.s:485 .text.Format_SD:00000078 $d - /tmp/cccCjqCZ.s:494 .text.Write_File:00000000 $t - /tmp/cccCjqCZ.s:500 .text.Write_File:00000000 Write_File - /tmp/cccCjqCZ.s:604 .text.Write_File:00000050 $d - /tmp/cccCjqCZ.s:2168 .bss.fil:00000000 fil - /tmp/cccCjqCZ.s:2147 .bss.bw:00000000 bw - /tmp/cccCjqCZ.s:612 .text.Write_File_byte:00000000 $t - /tmp/cccCjqCZ.s:618 .text.Write_File_byte:00000000 Write_File_byte - /tmp/cccCjqCZ.s:721 .text.Write_File_byte:0000004c $d - /tmp/cccCjqCZ.s:729 .rodata.Read_File.str1.4:00000000 $d - /tmp/cccCjqCZ.s:745 .text.Read_File:00000000 $t - /tmp/cccCjqCZ.s:751 .text.Read_File:00000000 Read_File - /tmp/cccCjqCZ.s:976 .text.Read_File:000000e4 $d - /tmp/cccCjqCZ.s:2154 .bss.br:00000000 br - /tmp/cccCjqCZ.s:991 .rodata.Seek_Read_File.str1.4:00000000 $d - /tmp/cccCjqCZ.s:995 .text.Seek_Read_File:00000000 $t - /tmp/cccCjqCZ.s:1001 .text.Seek_Read_File:00000000 Seek_Read_File - /tmp/cccCjqCZ.s:1271 .text.Seek_Read_File:0000011c $d - /tmp/cccCjqCZ.s:1287 .text.Create_File:00000000 $t - /tmp/cccCjqCZ.s:1293 .text.Create_File:00000000 Create_File - /tmp/cccCjqCZ.s:1372 .text.Create_File:00000038 $d - /tmp/cccCjqCZ.s:1379 .text.Update_File:00000000 $t - /tmp/cccCjqCZ.s:1385 .text.Update_File:00000000 Update_File - /tmp/cccCjqCZ.s:1489 .text.Update_File:00000050 $d - /tmp/cccCjqCZ.s:1497 .rodata.Remove_File.str1.4:00000000 $d - /tmp/cccCjqCZ.s:1507 .text.Remove_File:00000000 $t - /tmp/cccCjqCZ.s:1513 .text.Remove_File:00000000 Remove_File - /tmp/cccCjqCZ.s:1632 .text.Remove_File:00000070 $d - /tmp/cccCjqCZ.s:1642 .rodata.Create_Dir.str1.4:00000000 $d - /tmp/cccCjqCZ.s:1649 .text.Create_Dir:00000000 $t - /tmp/cccCjqCZ.s:1655 .text.Create_Dir:00000000 Create_Dir - /tmp/cccCjqCZ.s:1734 .text.Create_Dir:00000048 $d - /tmp/cccCjqCZ.s:1742 .rodata.Check_SD_Space.str1.4:00000000 $d - /tmp/cccCjqCZ.s:1752 .text.Check_SD_Space:00000000 $t - /tmp/cccCjqCZ.s:1758 .text.Check_SD_Space:00000000 Check_SD_Space - /tmp/cccCjqCZ.s:1870 .text.Check_SD_Space:00000094 $d - /tmp/cccCjqCZ.s:2140 .bss.pfs:00000000 pfs - /tmp/cccCjqCZ.s:2133 .bss.fre_clust:00000000 fre_clust - ARM GAS /tmp/cccCjqCZ.s page 59 - - - /tmp/cccCjqCZ.s:2126 .bss.total:00000000 total - /tmp/cccCjqCZ.s:2119 .bss.free_space:00000000 free_space - /tmp/cccCjqCZ.s:1881 .text.Update_File_float:00000000 $t - /tmp/cccCjqCZ.s:1887 .text.Update_File_float:00000000 Update_File_float - /tmp/cccCjqCZ.s:1990 .text.Update_File_float:0000004c $d - /tmp/cccCjqCZ.s:1998 .text.Update_File_byte:00000000 $t - /tmp/cccCjqCZ.s:2004 .text.Update_File_byte:00000000 Update_File_byte - /tmp/cccCjqCZ.s:2107 .text.Update_File_byte:0000004c $d - /tmp/cccCjqCZ.s:2116 .bss.free_space:00000000 $d - /tmp/cccCjqCZ.s:2123 .bss.total:00000000 $d - /tmp/cccCjqCZ.s:2130 .bss.fre_clust:00000000 $d - /tmp/cccCjqCZ.s:2137 .bss.pfs:00000000 $d - /tmp/cccCjqCZ.s:2144 .bss.bw:00000000 $d - /tmp/cccCjqCZ.s:2151 .bss.br:00000000 $d - /tmp/cccCjqCZ.s:2158 .bss.fno:00000000 $d - /tmp/cccCjqCZ.s:2165 .bss.fil:00000000 $d - /tmp/cccCjqCZ.s:2172 .bss.fs:00000000 $d - -UNDEFINED SYMBOLS -f_mount -fresult -malloc -strcpy -f_opendir -sprintf -free -f_readdir -strcmp -strlen -f_closedir -f_unlink -f_stat -f_open -f_write -f_close -f_read -f_lseek -sizeoffile -f_mkdir -f_getfree diff --git a/build/File_Handling.o b/build/File_Handling.o deleted file mode 100644 index b19da18efca02fe99af47ec9b4bef9f9495c1f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34784 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

vNLU_3J(CFb*91_@u`Xk54|#9u6&^c=P(u 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 diff --git a/build/For_stm32.bin b/build/For_stm32.bin deleted file mode 100755 index e8dab8e09c23b5b31a9ea38e5ebf0526b2c32042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44412 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 P|K*QI;i;4nbNT-U*e1!6 diff --git a/build/For_stm32.elf b/build/For_stm32.elf deleted file mode 100755 index 98d492f5654caa6b69ce8f152ec487c77bb7e656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 730904 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 ?zWN4^NA%Q(=oe%Xd%prkx3DX}{I}?E5wJtf!B+ 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