世界关注:创建CW32L083GCC工程模板

【目的】

官方示例提供了MDK、IAR的示例,也提供了以上两个环境的工程模板,但是没有GCC的工程模板,GCC编译环境与MDK、IAR主要区别就是C语言启动环境的配置、链接文件的不一至,因为要实现VScode或者其他的编译器来实现开发环境的搭建,就需要自己编写CW32L083_FLASH.ld、以及startup_cw32l083_gcc.s。


(资料图)

【实现的思路】

1、寻找官方支持,我在CW32生态群里发了求助的信息,没有回复。

2、在淘宝客服,咨询,回复说,没有工程。

3、有大佬提供了CW32F030的工程,我了解到CW32F030与CW32L083一样是CortexM0+的内核,所以想他的启动文件跟LD应该可以相互借鉴。所以偿试修改CW32F030的工程来实现GCC的工程。

【实现步骤】

1、拷贝一份工程,另存为cw32l083_gcc,并用vscode打开。

2、到官网下载cw32l083的固件库。

3、把cw32l083-stdperiph-lib/Libraries下面的固件替换掉cw32l083_gcc/Libraries固件。

4、复制cw32l083.h、system_cw32l083.h到/Libraries/CMSIS/Device/目录下面。删除原来的cw32f030.h以及system_cwl083.h。

5、Libraries/CMSIS/Device/startup_cw32f030_gcc.s重命名为startup_cw32l083_gcc.s。

6、Libraries/CMSIS/Device/CW32f030_FLASH.ld重命名为CW32L083_FLASH.ld。

7、Debug/CW32F030.svd 重命名为CW32L083.svd。并把其文件内的cwf030修改为cw32l083.

8、复制l083固件库中的cw32l083-stdperiph-lib/IdeSupport/MDKWHXY.CW32L083_DFP.1.0.8.pack 到Debug/WHXY.CW32L083_DFP.1.0.8.pack,并删除原来的.pack文件。

9、复制cw32l083-stdperiph-lib/Examples/GPIO/gpio_blink/USER/src/interrupts_cw32l083.c 到/cw32l083_gcc/Core/app/interrupts_cw32l083.c。以及inc下面的interrupts_cw32l083.h。

10、修改Libraries/Libraries.mk文件内容,主要是文件夹的名称重新定位。

模块名_DIR 是上一层传递下来的参数,是从工程根目录到该模块文件夹的路径向 C_SOURCES 中添加需要编译的源文件

C_SOURCES += **(wildcard **(Libraries_DIR)/CW32L083_StdLib/src/*.c)

向 C_INCLUDES 中添加头文件路径

C_INCLUDES += -I$(Libraries_DIR)/CMSIS/Include

C_INCLUDES += -I$(Libraries_DIR)/CMSIS/Device/

C_INCLUDES += -I$(Libraries_DIR)/CW32L083_StdLib/inc

向 LIBDIR 中添加静态库文件路径LIBDIR += -L$(Libraries_DIR)/Lib向 LIBS 中添加需要链接的静态库LIBS += -lxxxxlink script

LDSCRIPT = $(Libraries_DIR)/CMSIS/Device/CW32L083_FLASH.ld

汇编文件宏定义

AS_DEFS +=

汇编头文件目录

AS_INCLUDES +=

汇编源文件(starup)

ASM_SOURCES += $(Libraries_DIR)/CMSIS/Device/startup_cw32l083_gcc.s

11、修改makefile,修加gcc的路径:

#######################################

编译器指定

#######################################

PREFIX = arm-none-eabi-

启用下一项以指定GCC目录

GCC_PATH = /Applications/ARM/bin/

12、修改pyocd.yaml,指定tartgets、pack包名称:

pack: ./Debug/WHXY.CW32L083_DFP.1.0.8.pack

target_override: CW32L083vc

frequency: 24000000

13、查找CW32L083用户手册,修改/Libraries/CMSIS/Device/CW32L083_FLASH.ld的RAM、FLASH如下:

/* Specify the memory areas */

MEMORY

{

RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 24K

FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 256K

}

14、由于.h与MDK的编译上有所差别会报警告

Libraries/CW32L083_StdLib/inc/cw32l083_gtim.h:272:52: warning: suggest parentheses around comparison in operand of "&" [-Wparentheses]

272 | #define IS_GTIM_DMA(DMA) (((DMA) & 0xFFFFFFC0 == 0x0UL) && (DMA) != 0x0UL)

修改为:#define IS_GTIM_DMA(DMA) ((((DMA) & 0xFFFFFFC0) == 0x0UL) && (DMA) != 0x0UL),消除运算符的警告。

15、修改SysTick.c中的__weak 编译错误,修改为:attribute((weak))

到此,工程修改就结束。

编译后无警告无错误:

[LD] build_exec/template.elf

[HEX] build_exec/template.elf -> build_exec/template.hex

[BIN] build_exec/template.elf -> build_exec/template.bin

[DUMP] build_exec/template.elf -> build_exec/template.s

[SIZE] build_exec/template.elf

text data bss dec hex filename

1088 16 1568 2672 a70 build_exec/template.elf

-e Build Finish

修改app_main.c的LED针脚,内容如下:

#include "app_main.h"

#include "cw32l083_gpio.h"

#include "cw32l083_rcc.h"

static inline void LED_Init()

{

GPIO_InitTypeDef GPIO_InitStruct;

RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_GPIOC, ENABLE);

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.IT = GPIO_IT_NONE;

GPIO_InitStruct.Pins = GPIO_PIN_2;

GPIO_Init(CW_GPIOC, &GPIO_InitStruct);

}

int main(void)

{

LED_Init();

// 开启两线调试接口

RCC_SWDIO_Config(RCC_SYSCTRL_SWDIOEN);

while (1)

{

GPIO_TogglePin(CW_GPIOC, GPIO_PIN_2);

FirmwareDelay(1000000);

}

return 0;

}

/******************************************************************************

EOF (not truncated)

******************************************************************************/

#ifdef USE_FULL_ASSERT

/**

@brief Reports the name of the source file and the source line number

where the assert_param error has occurred.

@param file: pointer to the source file name

@param line: assert_param error line source number

@retval None

*/

void assert_failed(uint8_t *file, uint32_t line)

{

/* USER CODE BEGIN 6 */

/* User canadd his own implementation to report the file name and line number,

tex: printf("Wrong parametersvalue: file %s on line %d\\r\\n", file, line) */

/* USER CODE END 6 */

}

#endif /* USE_FULL_ASSERT */

编译下载,就可以实现Led1闪烁了。

liujianhuadeMacBook-Pro:cw32l083_gcc liujianhua$ make flash

-e Start pyOCD

0000909 I Loading /Users/liujianhua/cw32l083/cw32l083_gcc/build_exec/template.elf [load_cmd]

[==================================================] 100%

0001522 I Erased 0 bytes (0 sectors), programmed 0 bytes (0 pages), skipped 1536 bytes (3 pages) at 2.45 kB/s [loader]

【总结】

经过N次的试验,终于成功的实现了cw32l083的gcc工程模版的创建。使得在linux、macOS环境下不能用MDK、IAR的难题。

附工程模版:

*附件:cw32l083_gcc.zip

审核编辑:汤梓红

标签:

最近更新

世界关注:创建CW32L083GCC工程模板
2023-06-20 09:10:03
盘点化肥概念的四只龙头股(6/19)|热头条
2023-06-20 09:00:14
最强召唤系统小说 最强召唤系统
2023-06-20 08:05:35
安正时尚收年报监管工作函 被追问短期内调整商誉减值计提金额原因及合理性 是否信披前后不一致-世界速递
2023-06-20 07:44:01
赛前狂言被打脸!悍将35米世界波,无梅西阿根廷,2-0轻取印尼!
2023-06-20 06:36:24
全球今头条!郑州力争今年金融业增加值超1500亿元
2023-06-20 05:44:26
今日看点:windows10怎么创建家庭组_Win10怎么创建家庭组
2023-06-20 03:34:42
电脑qq怎么开闺蜜关系_qq如何绑定闺蜜关系
2023-06-20 01:11:28
巴黎有意引进凯恩 但热刺坚持标价一亿欧
2023-06-19 22:45:35
男子生活殷实欠钱不还,法官多次释法无果对其司法拘留15日
2023-06-19 22:16:03
快递行业加快推进全流程“绿色化” 不再二次包装比例有望达90%_天天通讯
2023-06-19 21:20:52
宝鸡市民遇“神医”治病心切 气功银针全是骗钱把戏_焦点精选
2023-06-19 20:56:07
【世界聚看点】云南省临沧市2023-06-15 01:17发布雷电黄色预警
2023-06-19 20:07:44
环球新资讯:宏英智能:公司在储能领域开发了大型储能系统、液冷集装箱储能系统、分布式储能系统等多款产品及解决方案,公司的储能系统具备应用场景广、安全性高等特点,可满足客户的各种产能需求
2023-06-19 19:37:53
每日资讯:支付年终奖计入什么科目_支付员工年终奖会计分录
2023-06-19 18:51:18
中国建设银行大连市分行党委副书记、副行长率长江接受审查调查 世界要闻
2023-06-19 18:12:03
海淀基层青年诗歌音乐朗诵会首场演出举办 每日速看
2023-06-19 17:47:52
天天速递!7月起16项辅助生殖项目纳入北京医保!听听协和医生怎么说
2023-06-19 17:09:01
“诗意江西”——第十九届“中韩缘”中国文化大赛决赛在韩举行 速读
2023-06-19 16:51:05
我区高质高效开展汛期雨水篦子专项排查-动态
2023-06-19 16:16:54
全球动态:必康退跌78.95%曾简称九九久 2010年上市募5.6亿
2023-06-19 16:05:21
济南钢城区2023年小学招生报名平台操作流程 当前热讯
2023-06-19 15:28:47
速递!华为申请注册“鸿蒙座舱”商标
2023-06-19 14:55:02
新疆克孜勒苏州阿图什市发生3.7级地震,震源深度25千米
2023-06-19 14:33:48
2023年或成有记录以来最热一年!越南遭遇“电荒” 苹果、三星等受影响
2023-06-19 13:51:45
温馨提示!黄山风景区端午游请线上预约!-快播
2023-06-19 13:03:17
诺辉健康幽幽管总销量破620万盒_世界快看
2023-06-19 12:39:24
【全球速看料】西瓜标注3斤多复称不到1斤 超市回应:盒上标注的是带皮重量
2023-06-19 11:52:59
全球观察:内蒙古巴彦淖尔:4项专项奖励政策“引客入巴”
2023-06-19 11:38:39
省气象局与省水利厅签署战略合作协议
2023-06-19 10:54:17