2021-08-17 00:03:40 索煒達(dá)電子 2207
項(xiàng)目編號(hào):E231
文件大?。?.2M
源碼說(shuō)明:帶中文注釋
開(kāi)發(fā)環(huán)境:C編譯器
簡(jiǎn)要概述
項(xiàng)目說(shuō)明
STM32內(nèi)部Flash模擬成U盤(pán)進(jìn)行固件升級(jí)。系統(tǒng)上電之后在3S內(nèi)檢測(cè)到PC連接到STM32成功則進(jìn)入Boot模式,此時(shí)將固件拖入U(xiǎn)盤(pán)則完成升級(jí),之后跳轉(zhuǎn)到App區(qū)域執(zhí)行用戶代碼。
注意事項(xiàng):
BOOT區(qū)域劃分20K
App區(qū)域從0x8004000開(kāi)始
App程序進(jìn)入Main后首先需要設(shè)置中斷向量表地址并且在工程配置里設(shè)置flash起始地址是0x8004000
支持HEX文件拖拽升級(jí)
支持BIN文件拖拽升級(jí)
項(xiàng)目開(kāi)發(fā)過(guò)程:
在Win10上bin文件燒錄過(guò)程會(huì)失敗,Win7待測(cè) 2019050
Win7同樣會(huì)失敗,初步原因分析是數(shù)據(jù)丟包 20190507
bin文件寫(xiě)入地址不正確,重新實(shí)現(xiàn)寫(xiě)入flash數(shù)據(jù)的算法,解決了bug 20190511
在Win10上hex文件只能燒錄一次,Win7待測(cè) 20190506
Win7上也是只能燒錄一次,已經(jīng)找到BUG,再第二次燒錄前flash沒(méi)有擦除,問(wèn)題已經(jīng)解決 ----20190507
hex文件與LAB值解耦合,重新實(shí)現(xiàn)寫(xiě)入算法,解決了bug 20190511
文件16.xK 希望可以裁剪到10K左右 ----20190511
已經(jīng)將BOOT從16K壓縮到10.7K,希望可以壓縮到10K以內(nèi)。----20190512
文件列表:
目錄│文件列表:
└ stm32-iap-msd
│ clear.bat
├ CORE
│ │ core_cm3.c
│ │ core_cm3.h
│ │ startup_stm32f10x_hd.s
│ └ startup_stm32f10x_md.s
├ FATFS
│ │ fattester.c
│ │ fattester.h
│ ├ doc
│ │ │ css_e.css
│ │ │ css_j.css
│ │ └ img
│ │ │ f1.png
│ │ │ f2.png
│ │ │ f3.png
│ │ │ f4.png
│ │ │ f5.png
│ │ │ f6.png
│ │ │ layers.png
│ │ │ layers3.png
│ │ │ rwtest.png
│ │ │ rwtest2.png
│ │ └ rwtest3.png
│ ├ exfuns
│ │ │ exfuns.c
│ │ │ exfuns.h
│ │ │ fattester.c
│ │ │ fattester.h
│ │ └ mycc936.c
│ └ src
│ │ diskio.c
│ │ diskio.h
│ │ ff.c
│ │ ff.h
│ │ ffconf.h
│ │ integer.h
│ └ option
│ │ cc932.c
│ │ cc936.c
│ │ cc949.c
│ │ cc950.c
│ │ ccsbcs.c
│ │ mycc936.c
│ └ syscall.c
├ HARDWARE
│ │ stmflash.c
│ │ stmflash.h
│ ├ FLASH
│ │ │ flash.c
│ │ └ flash.h
│ ├ ITEMP
│ │ │ tsensor.c
│ │ └ tsensor.h
│ ├ KEY
│ │ │ key.c
│ │ └ key.h
│ ├ LCD
│ │ │ font.h
│ │ │ lcd.c
│ │ └ lcd.h
│ ├ LED
│ │ │ led.c
│ │ └ led.h
│ ├ SD
│ │ │ MMC_SD.C
│ │ └ MMC_SD.H
│ └ SPI
│ │ spi.c
│ └ spi.h
├ MALLOC
│ │ malloc.c
│ └ malloc.h
├ OBJ
│ │ hex2bin.bat
│ │ hex2bin.exe
│ ├ IAP-APP_HD
│ │ │ IAP-APP_HD1.bin
│ │ │ IAP-APP_HD1.hex
│ │ │ IAP-APP_HD2.bin
│ │ └ IAP-APP_HD2.hex
│ ├ IAP-APP_MD
│ │ │ IAP-APP_MD1.bin
│ │ │ IAP-APP_MD1.hex
│ │ │ IAP-APP_MD2.bin
│ │ └ IAP-APP_MD2.hex
│ ├ IAP-MSD_HD
│ │ │ BOOT_HD.bin
│ │ └ BOOT_HD.hex
│ └ IAP-MSD_MD
│ │ BOOT_MD.bin
│ └ BOOT_MD.hex
├ README
│ └ USB MSD Updater User Manual.pdf
├ STM32F10x_FWLib
│ ├ inc
│ │ │ misc.h
│ │ │ stm32f10x_adc.h
│ │ │ stm32f10x_bkp.h
│ │ │ stm32f10x_can.h
│ │ │ stm32f10x_cec.h
│ │ │ stm32f10x_crc.h
│ │ │ stm32f10x_dac.h
│ │ │ stm32f10x_dbgmcu.h
│ │ │ stm32f10x_dma.h
│ │ │ stm32f10x_exti.h
│ │ │ stm32f10x_flash.h
│ │ │ stm32f10x_fsmc.h
│ │ │ stm32f10x_gpio.h
│ │ │ stm32f10x_i2c.h
│ │ │ stm32f10x_iwdg.h
│ │ │ stm32f10x_pwr.h
│ │ │ stm32f10x_rcc.h
│ │ │ stm32f10x_rtc.h
│ │ │ stm32f10x_sdio.h
│ │ │ stm32f10x_spi.h
│ │ │ stm32f10x_tim.h
│ │ │ stm32f10x_usart.h
│ │ └ stm32f10x_wwdg.h
│ └ src
│ │ misc.c
│ │ stm32f10x_adc.c
│ │ stm32f10x_bkp.c
│ │ stm32f10x_can.c
│ │ stm32f10x_cec.c
│ │ stm32f10x_crc.c
│ │ stm32f10x_dac.c
│ │ stm32f10x_dbgmcu.c
│ │ stm32f10x_dma.c
│ │ stm32f10x_exti.c
│ │ stm32f10x_flash.c
│ │ stm32f10x_fsmc.c
│ │ stm32f10x_gpio.c
│ │ stm32f10x_i2c.c
│ │ stm32f10x_iwdg.c
│ │ stm32f10x_pwr.c
│ │ stm32f10x_rcc.c
│ │ stm32f10x_rtc.c
│ │ stm32f10x_sdio.c
│ │ stm32f10x_spi.c
│ │ stm32f10x_tim.c
│ │ stm32f10x_usart.c
│ └ stm32f10x_wwdg.c
├ SYSTEM
│ ├ delay
│ │ │ delay.c
│ │ └ delay.h
│ ├ sys
│ │ │ sys.c
│ │ └ sys.h
│ └ usart
│ │ usart.c
│ └ usart.h
├ USB
│ ├ CONFIG
│ │ │ hw_config.c
│ │ │ hw_config.h
│ │ │ mass_mal.c
│ │ │ mass_mal.h
│ │ │ memory.c
│ │ │ memory.h
│ │ │ msd.c
│ │ │ msd.h
│ │ │ platform_config.h
│ │ │ scsi_data.c
│ │ │ stm32f10x_it.c
│ │ │ stm32f10x_it.h
│ │ │ usb_bot.c
│ │ │ usb_bot.h
│ │ │ usb_conf.h
│ │ │ usb_desc.c
│ │ │ usb_desc.h
│ │ │ usb_endp.c
│ │ │ usb_istr.c
│ │ │ usb_istr.h
│ │ │ usb_prop.c
│ │ │ usb_prop.h
│ │ │ usb_pwr.c
│ │ │ usb_pwr.h
│ │ │ usb_scsi.c
│ │ └ usb_scsi.h
│ └ LIB
│ │ usb_core.c
│ │ usb_core.h
│ │ usb_def.h
│ │ usb_init.c
│ │ usb_init.h
│ │ usb_int.c
│ │ usb_int.h
│ │ usb_lib.h
│ │ usb_mem.c
│ │ usb_mem.h
│ │ usb_regs.c
│ │ usb_regs.h
│ └ usb_type.h
└ USER
│ API.c
│ BOOT.bin
│ EventRecorderStub.scvd
│ FAT16.c
│ FAT16.h
│ hex.c
│ hex.h
│ IAP-MSD.uvguix.Haven
│ IAP-MSD.uvguix.xiebin
│ IAP-MSD.uvopt
│ IAP-MSD.uvoptx
│ IAP-MSD.uvprojx
│ main.c
│ main.h
│ stm32f10x.h
│ stm32f10x_conf.h
│ stm32f10x_it.c
│ stm32f10x_it.h
│ system_stm32f10x.c
│ system_stm32f10x.h
├ DebugConfig
│ │ IAP-APP_HD_STM32F103CB_1.0.0.dbgconf
│ │ IAP-APP_HD_STM32F103ZE_1.0.0.dbgconf
│ │ IAP-APP_MD_STM32F103CB_1.0.0.dbgconf
│ │ IAP-MSD_APP_STM32F103CB_1.0.0.dbgconf
│ │ IAP-MSD_F103HD_STM32F103ZE_1.0.0.dbgconf
│ │ IAP-MSD_HD_STM32F103ZE_1.0.0.dbgconf
│ │ IAP-MSD_MD_STM32F103C8_1.0.0.dbgconf
│ │ IAP-MSD_MD_STM32F103CB_1.0.0.dbgconf
│ │ IAP-MSD_MD_STM32F103RC_1.0.0.dbgconf
│ │ IAP-MSD_MD_STM32F103ZE_1.0.0.dbgconf
│ │ Target_1_STM32F103CB_1.0.0.dbgconf
│ └ Target_1_STM32F103ZE_1.0.0.dbgconf
└ RTE
├ _IAP-APP_HD
│ └ RTE_Components.h
├ _IAP-APP_MD
│ └ RTE_Components.h
├ _IAP-MSD_APP
│ └ RTE_Components.h
├ _IAP-MSD_F103HD
│ └ RTE_Components.h
├ _IAP-MSD_HD
│ └ RTE_Components.h
├ _IAP-MSD_MD
│ └ RTE_Components.h
└ _Target_1
└ RTE_Components.h