一.代码目录架构 ├─doc // 一些文档文件 ├─project // 工程 │ ├─DebugConfig │ ├─link_sct // 连接脚本文件所在文件夹 │ ├─Listings │ ├─Objects │ └─output // 最后用的flashdriver 文件 ├─si // si │ ├─GD32F105FlashDrv │ └─STM32F105FlashDrv └─source ├─code_app // 应用代码 │ ├─GD32F10x // GD32代码 │ │ ├─Inc │ │ └─Source │ └─STM32F10x // STM32代码 │ ├─Inc │ └─Source └─platform // 平台代码 ├─Chip_peripheral_dev │ ├─GD32F10x_standard_peripheral │ │ ├─Include │ │ └─Source │ └─STM32F10x_FWLib │ ├─inc │ └─src └─CMSIS ├─GD │ └─GD32F10x │ ├─CoreSupport │ ├─Include │ └─Source │ ├─ARM │ └─IAR └─ST └─STM32F10x ├─CoreSupport ├─Include └─Source ├─arm ├─gcc_ride7 ├─iar └─TrueSTUDIO 二.根据map文件提取Flash drive 1.连接说明: ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x08000000 0x00040000 { ; load region size_region ER_IROM1 0x08000000 0x00040000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } RW_IRAM1 0x20000000 0x00017000 { ; RW data .ANY (+RW +ZI) } ;SRAM的最后4K来拿放flashdrive RW_IRAM2 0x20017000 0x00001000 { ; RW data * (flbase, +First) ;确保header信息在最前面 flashDriver.o (+RO +XO +RW +ZI) ;将 flashDriver所有数据放到RW_IRAM2 ;.ANY (+RW +ZI) } } 2.输出map文件说明 生成flash drive的map 信息 Execution Region RW_IRAM2 (Exec base: 0x20017000, Load base: 0x08000200, Size: 0x000003b4, Max: 0x00001000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x20017000 0x08000200 0x00000010 Data RO 138 flbase flashdriver.o 0x20017010 0x08000210 0x0000004a Code RO 126 i.flash_cpy flashdriver.o 0x2001705a 0x0800025a 0x00000002 PAD 0x2001705c 0x0800025c 0x00000128 Code RO 128 i.flash_erase flashdriver.o 0x20017184 0x08000384 0x00000020 Code RO 129 i.flash_read flashdriver.o 0x200171a4 0x080003a4 0x00000038 Code RO 130 i.flash_write flashdriver.o 0x200171dc 0x080003dc 0x00000022 Code RO 131 i.flashdrv_fmc_bank0_ready_wait flashdriver.o 0x200171fe 0x080003fe 0x00000002 PAD 0x20017200 0x08000400 0x00000030 Code RO 132 i.flashdrv_fmc_bank0_state_get flashdriver.o 0x20017230 0x08000430 0x00000022 Code RO 133 i.flashdrv_fmc_bank1_ready_wait flashdriver.o 0x20017252 0x08000452 0x00000002 PAD 0x20017254 0x08000454 0x00000030 Code RO 134 i.flashdrv_fmc_bank1_state_get flashdriver.o 0x20017284 0x08000484 0x000000c0 Code RO 135 i.flashdrv_fmc_halfword_program flashdriver.o 0x20017344 0x08000544 0x0000002c Code RO 136 i.flashdrv_fmc_lock flashdriver.o 0x20017370 0x08000570 0x00000044 Code RO 137 i.flashdrv_fmc_unlock flashdriver.o