一、背景
官方使用的MCU型号是 STM32F103CBT6, 无奈淘宝没有该型号的开发板。
为了省事就买了自认为很类似 STM32F103RCT6 ,简单的改改以为就能用,谁知道这么一折腾,搞了几天。
最后,能够烧录了,所以把这次遇到的坑列举出来。
二、芯片型号对比
FLASH 的分区
STM32F103RCT6 Flash 256k ( 每个 page 2K ) Ram 48k
STM32F103CBT6 Flash 128k ( 每个 page 1K ) Ram 20k
注意加粗字体
建议,自己选择的MCU 每个 page / sector 空间大小一致,( 比如:STM32F407VET6 的 FLASH 的分块就是不一样 )
不然,Erase Flash 和 Program Flash 要分情况处理,复杂很多。
三、移植
1、找到 文件 " daplink_addr.h ",更改如下
划分区域
#include "macro.h"
/* Device sizes */
#define FALSH_PAGE_SIZE KB(2)
#define DAPLINK_ROM_START 0x08000000
#define DAPLINK_ROM_SIZE KB(256) //0x00040000
#define DAPLINK_RAM_START 0x20000000
#define DAPLINK_RAM_SIZE KB(48) //0x0000C000
/* ROM sizes */
#define DAPLINK_ROM_BL_START 0x08000000
#define DAPLINK_ROM_BL_SIZE KB(48)//0x0000BC00
#define DAPLINK_ROM_CONFIG_ADMIN_START (DAPLINK_ROM_BL_START + DAPLINK_ROM_BL_SIZE) //0x0800BC00
#define DAPLINK_ROM_CONFIG_ADMIN_SIZE FALSH_PAGE_SIZE//0x00000400
#define DAPLINK_ROM_IF_START (DAPLINK_ROM_CONFIG_ADMIN_START + DAPLINK_ROM_CONFIG_ADMIN_SIZE)//0x0800C000
#define DAPLINK_ROM_IF_SIZE KB(204)//0x00013C00
#define DAPLINK_ROM_CONFIG_USER_START (DAPLINK_ROM_IF_START+DAPLINK_ROM_IF_SIZE)//0x0801FC00
#define DAPLINK_ROM_CONFIG_USER_SIZE FALSH_PAGE_SIZE//0x00000400
/* Flash Programming Info */
#define DAPLINK_SECTOR_SIZE FALSH_PAGE_SIZE //0x00000800
#define DAPLINK_MIN_WRITE_SIZE FALSH_PAGE_SIZE //0x00000800
Flash 一共256K,分成4块 |
---|
BOOTLOADER 48k |
ROM CONFIG 2k (暂时不知道干嘛用,保留至少一个完整的 page ) |
APP 204k |
ROM CONFIG USER 2k (暂时不知道干嘛用,保留至少一个完整的 page ) |
/* RAM sizes */
#define DAPLINK_RAM_APP_START 0x20000000
#define DAPLINK_RAM_APP_SIZE KB(40)//0x00004F00
#define DAPLINK_RAM_SHARED_START (DAPLINK_RAM_APP_START + DAPLINK_RAM_APP_SIZE) //0x20004F00
#define DAPLINK_RAM_SHARED_SIZE KB(8)//0x00000100
RAM 一共48K,分成2块 |
---|
RAM 40k |
RAM SHARED 2k (暂时不知道干嘛用,保留) |
2、找到 flash_manager.c
buf 的容量是一个 对应的MCU 一个 page 大小的空间,这里不改会导致出现错误 ,内部错误 error.c
// ERROR_INTERNAL
"An internal error has occurred",