说明
- 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中加入该宏
修改启动文件
启动文件里面定义了中断向量表,不同系列的芯片中断向量表是有所差异的,所以我们要选择对启动文件
这里我们只要在对应的启动文件上右击,通过选项Include/Exclude From Build
来使能和禁用该个文件
修改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文件所在的文件夹复制到当前工程路径下,这样我们无论怎样改这个文件,都不会影响到其他的工程