DAPLINK 移植 (一)

一、背景

官方使用的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",

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码混口饭吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值