iot-fan

联系: iotfan123#163.com
注意:
1,本博客之内容来源于网上收集以及相关技术人员提供,如果有侵犯到您的权益,请电邮我沟通;
2,本博客之内容乃分享,交流,学习,研究之目的,作者不对内容的真实性,有效性,及时性负责,也不对因本博客的任何内容导致的任何后果负责;
3,本博客之内容禁止转发到CSDN网站,转到别的网站请保留出处.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

说明

  • wch 官网的ch32v2系列的芯片只给了一个SDK :https://www.wch.cn/downloads/CH32V20xEVT_ZIP.html
  • ch32v2系列芯片型号众多,存储大小,和外设各不相同,wch给的例程工程往往只针对某个芯片,如果要针对我们手里的芯片,需要进行相关的修改
  • 由于该SDK对应的工程是基于MRS IDE(http://www.mounriver.com/)的,下面我们就针对如何在MRS IDE上进行相关修改以适配我们手里的芯片
  • 对于ch32f20x 系列,官网的sdk是使用MDK的,修改的地方基本一致, 亦可参照本文章,本文不再做额外说明.

适用芯片

  • ch32v2xx

修改

(下面示例为把工程修改为CH32V208的)

加入芯片系列全局宏

在sdk路径"EXAM\SRC\Peripheral\inc\ch32v20x.h"文件中,有如下定义

#if !defined(CH32V20x_D8W) && !defined(CH32V20x_D8) && !defined(CH32V20x_D6)
#define CH32V20x_D6              /* CH32V203F6-CH32V203F8-CH32V203G6-CH32V203G8-CH32V203K6-CH32V203K8-CH32V203C6-CH32V203C8 */
//#define CH32V20x_D8              /* CH32V203RBT6 */
//#define CH32V20x_D8W             /* CH32V208 */

#endif

这里我们可以看出,ch32v2芯片分为三个大系列,分别对应三个宏,后面注释分别说明了该宏对应的芯片

  • CH32V20x_D6
  • CH32V20x_D8
  • CH32V20x_D8W

为了避免修改SDK的文件,我们在工程的全局define中加入该宏
image

修改启动文件

启动文件里面定义了中断向量表,不同系列的芯片中断向量表是有所差异的,所以我们要选择对启动文件
这里我们只要在对应的启动文件上右击,通过选项Include/Exclude From Build 来使能和禁用该个文件
image

修改LD文件

  • LD文件,描述了存储区域的大小,亦描述了flash ram中代码是如何存放的,不同的芯片flash/ram 大小不一, 我们需要修改到与我们芯片所对应
  • 另外由于ch32v2xx的部分芯片支持FLASH和RAM大小调节(详细见https://www.cnblogs.com/iot-fan/p/16667833.html),所以LD文件我们尤为要注意与实际的情况对应

我们当然可以直接在工程的LD文件里面进行修改(工程的LD文件往往是链接到工程外部的):

MEMORY
{
/* CH32V20x_D6 - CH32V203F6-CH32V203G6-CH32V203K6-CH32V203C6 */
/*
	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 32K
	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K
*/

/* CH32V20x_D6 - CH32V203K8-CH32V203C8-CH32V203G8-CH32V203F8 */
/*
	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 64K
	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
*/

/* CH32V20x_D8 - CH32V203RB
   CH32V20x_D8W - CH32V208x
   FLASH + RAM supports the following configuration
   FLASH-128K + RAM-64K
   FLASH-144K + RAM-48K
   FLASH-160K + RAM-32K
*/
	FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 448K
	RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
}

但是更多时候,我们往往只想让特定工程拥有特定的LD文件, 这个时候,我们可以把工程链接到外部的LD文件移除工程,然后将实际的ld文件所在的文件夹复制到当前工程路径下,这样我们无论怎样改这个文件,都不会影响到其他的工程

posted on 2022-12-30 10:34  iot-fan  阅读(1123)  评论(0编辑  收藏  举报