思澈MCU从55,58,56到58系列的32bit低功耗MCU和灵活的搭配nor,nand flash,sd-nand flash和emmc,在代码下载的时候,很多工程师不知道对应的bin下载到哪个地址,在内存芯片来说都是从0x00000到0x10000000这样从0x00地址来存储的,但MCU为了区分是哪个内存,代码中会认为定义物理地址,比如:0x10000000对应55系列的内部nor flash地址,0x64000000对应55外部nor flash地址,具体怎么查看,有下面几个方法:
- 通过C:\Program Files (x86)\SEGGER\JLink\JLinkDevices.xml文件内容来查看:
<!-- -->
<!-- SiFli (Cortex-M33 devices)-->
<!-- -->
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB5XX" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x40000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x400000" Loader="Devices/SiFli/SF32LB5XX_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash2" BaseAddr="0x18000000" MaxSize="0x2000000" Loader="Devices/SiFli/SF32LB5XX_EXT_FLASH2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB55X" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x800000" Loader="Devices/SiFli/SF32LB55X_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash2" BaseAddr="0x64000000" MaxSize="0x2000000" Loader="Devices/SiFli/SF32LB55X_EXT_FLASH2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External SD1" BaseAddr="0x68000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB55X_EXT_SD1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash4" BaseAddr="0x12000000" MaxSize="0x400000" Loader="Devices/SiFli/SF32LB55X_EXT_FLASH4.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB55X_SD" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x80000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x400000" Loader="Devices/SiFli/SF32LB55X_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External SD1" BaseAddr="0x68000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB55X_EXT_SD1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB58X" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x2000000" Loader="Devices/SiFli/SF32LB58X_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash3" BaseAddr="0x14000000" MaxSize="0x2000000" Loader="Devices/SiFli/SF32LB58X_EXT_FLASH3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External NAND Flash3" BaseAddr="0x64000000" MaxSize="0x2000000" Loader="Devices/SiFli/SF32LB58X_EXT_NAND3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash4" BaseAddr="0x18000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB58X_EXT_FLASH4.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External NAND Flash4" BaseAddr="0x68000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB58X_EXT_NAND4.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash5" BaseAddr="0x1C000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB58X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB58X_SD" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External Flash5" BaseAddr="0x1C000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB58X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External SDMMC1" BaseAddr="0x68000000" MaxSize="0x58000000" Loader="Devices/SiFli/SF32LB58X_EXT_SD1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB58X_NAND" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External Flash3" BaseAddr="0x64000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB58X_EXT_NAND3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash4" BaseAddr="0x68000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB58X_EXT_NAND4.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash5" BaseAddr="0x1C000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB58X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB58X_NAND_NOBBM" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External Flash3" BaseAddr="0x64000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB58X_EXT_ORG_NAND3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash4" BaseAddr="0x68000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB58X_EXT_ORG_NAND4.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash5" BaseAddr="0x1c000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB58X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB56X_NAND_NOBBM" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External Flash3" BaseAddr="0x64000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB56X_EXT_ORG_NAND3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash5" BaseAddr="0x1C000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB56X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB56X" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x80000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x0400000" Loader="Devices/SiFli/SF32LB56X_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash2" BaseAddr="0x10400000" MaxSize="0x2000000" Loader="Devices/SiFli/SF32LB56X_EXT_FLASH2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash3" BaseAddr="0x14000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB56X_EXT_FLASH3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash5" BaseAddr="0x1C000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB56X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External SD1" BaseAddr="0xa0000000" MaxSize="0x38000000" Loader="Devices/SiFli/SF32LB56X_EXT_SD1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB56X_NAND" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External Flash3" BaseAddr="0x64000000" MaxSize="0x3c000000" Loader="Devices/SiFli/SF32LB56X_EXT_NAND3.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash5" BaseAddr="0x1C000000" MaxSize="0x4000000" Loader="Devices/SiFli/SF32LB56X_FLASH5.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="BUTTERFLITE_NAND_FS" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x70000" />
<FlashBankInfo Name="External Flash3" BaseAddr="0x14000000" MaxSize="0x4000000" Loader="Devices/SiFli/BUTTERFLITE_EXT_NAND3_FS.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_NOR" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x8000000" Loader="Devices/SiFli/SF32LB52X_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash2" BaseAddr="0x12000000" MaxSize="0x8000000" Loader="Devices/SiFli/SF32LB52X_EXT_FLASH2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB523_OZONE" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_NAND" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x80000" />
<FlashBankInfo Name="External Nand2" BaseAddr="0x62000000" MaxSize="0x3e000000" Loader="Devices/SiFli/SF32LB52X_EXT_NAND2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_NAND_NOBBM" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x80000" />
<FlashBankInfo Name="External Nand2" BaseAddr="0x62000000" MaxSize="0x3e000000" Loader="Devices/SiFli/SF32LB52X_EXT_ORG_NAND2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_NAND_BIGBLK" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x80000" />
<FlashBankInfo Name="External Nand2" BaseAddr="0x62000000" MaxSize="0x3e000000" Loader="Devices/SiFli/SF32LB52X_EXT_BIGBLK_NAND2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_SD" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External SDNAND1" BaseAddr="0x62000000" MaxSize="0x3e000000" Loader="Devices/SiFli/SF32LB52X_EXT_SD1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_EMMC" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="External SDMMC1" BaseAddr="0x62000000" MaxSize="0x3e000000" Loader="Devices/SiFli/SF32LB52X_EXT_EMMC1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
</DataBase>
比如:
<Device>
<ChipInfo Vendor="SiFli" Name="SF32LB52X_NOR" Core="JLINK_CORE_CORTEX_M33" WorkRAMAddr="0x20000000" WorkRAMSize="0x60000" />
<FlashBankInfo Name="Internal Flash1" BaseAddr="0x10000000" MaxSize="0x8000000" Loader="Devices/SiFli/SF32LB52X_INT_FLASH1.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
<FlashBankInfo Name="External Flash2" BaseAddr="0x12000000" MaxSize="0x8000000" Loader="Devices/SiFli/SF32LB52X_EXT_FLASH2.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>
在jlink下载命令 jlink.exe -device SF32LB56X_NAND -CommandFile download.jlink
其中 -device选择SF32LB52X_NOR设备时,就会选择用到上面的配置,BaseAddr="0x12000000"烧录0x12000000时,就会调用Loader="Devices/SiFli/SF32LB52X_EXT_FLASH2.elf" 的flash驱动文件,其中这些驱动文件*.elf是可执行文件,会加载到MCU的RAM中运行,然后进行烧录flash的动作;
2,可以通过查看drivers\cmsis\sf32lb52x\mem_map.h文件的内容,通过查看QSPI接口对应的物理地址来查看地址,比如QSPI2连接的是nor flash,对应的是0x12000000地址