[开发资料] 首创ubuntu下cw32l031的vscode+gcc工程创建、下载、调试

[复制链接]
 楼主| lulugl 发表于 2023-6-25 21:13 | 显示全部楼层 |阅读模式
本帖最后由 lulugl 于 2023-6-25 21:28 编辑

#技术资源# #申请原创# #有奖活动#       目前官方提供CW32L083只提供了MDK、IAR下的固件库、启动文件。我有过成功CW32L083的项目移植的经验,现在成功的把CW32L031的工程移植到ubuntu下面,实现了VSCODE的GCC工程模版。现在将移植的过程与结果分享如下:
1. CW32L031与CW32L083同属arm-cortex-M0+系列,通对比MDK下的启动汇编程序,发现除flsh与内存大小不同之外,中断、外设基本差不多。因此,我只需要修改。cw32L031、startup_cw32l031_gcc.s、CW32L031_FLASH.ld这三个文件就可以了。
2. 同时将相关的外设驱动库更换成cw32l031更换过来就实现了工程的移植。
3. 在ubuntu下面还需要安装wch-link的驱动。
3、移植好后,修改makefile的固件名称、路径就可以实现工程的编译、下载、以及GDB调试。
结果:
1. 编译:
  1. lugl@lugl-virtual-machine:~/CW32L/cw32l083_gcc$ make
  2. [CC]    Core/app/app_main.c
  3. [CC]    Core/app/interrupts_cw32l031.c
  4. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_atim.c
  5. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_dma.c
  6. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_digitalsign.c
  7. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_debug.c
  8. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_rtc.c
  9. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_pwr.c
  10. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_systick.c
  11. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_i2c.c
  12. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_wwdt.c
  13. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_awt.c
  14. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_uart.c
  15. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_rcc.c
  16. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_flash.c
  17. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_iwdt.c
  18. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_btim.c
  19. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_crc.c
  20. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_lvd.c
  21. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_gtim.c
  22. [CC]    Libraries/CW32L031_StdLib/src/system_cw32l031.c
  23. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_adc.c
  24. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_spi.c
  25. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_vc.c
  26. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_gpio.c
  27. [CC]    Libraries/CW32L031_StdLib/src/cw32l031_ram.c
  28. [AS]    Libraries/CMSIS/Device/startup_cw32l031_gcc.s
  29. [LD]    build_exec/template.elf
  30. [HEX]   build_exec/template.elf -> build_exec/template.hex
  31. [BIN]   build_exec/template.elf -> build_exec/template.bin
  32. [DUMP]  build_exec/template.elf -> build_exec/template.s
  33. [SIZE]  build_exec/template.elf
  34.    text    data     bss     dec     hex filename
  35.    1544      20    1572    3136     c40 build_exec/template.elf
2、下载:
  1. lugl@lugl-virtual-machine:~/CW32L/cw32l083_gcc$ make flash
  2. -e Start pyOCD
  3. 0000430 I Loading /home/lugl/CW32L/cw32l083_gcc/build_exec/template.elf [load_cmd]
  4. [==================================================] 100%
3、调试:
  1. Waiting for gdb server to start...[2023-06-25T13:04:50.107Z] SERVER CONSOLE DEBUG: onBackendConnect: gdb-server session connected. You can switch to "DEBUG CONSOLE" to see GDB interactions.
  2. pyocd gdbserver --port 50000 --telnet-port 50001
  3. 0000446 I Target type is cw32l031c8 [board]
  4. 0000529 I DP IDR = 0x0bc11477 (v1 MINDP rev0) [dap]
  5. 0000557 I AHB-AP#0 IDR = 0x04770031 (AHB-AP var3 rev0) [discovery]
  6. 0000580 I AHB-AP#0 Class 0x1 ROM table #0 [url=home.php?mod=space&uid=72445]@[/url] 0xe00ff000 (designer=43b:Arm part=4c0) [rom_table]
  7. 0000590 I [0]<e000e000:SCS v6-M class=14 designer=43b:Arm part=008> [rom_table]
  8. 0000595 I [1]<e0001000:DWT v6-M class=14 designer=43b:Arm part=00a> [rom_table]
  9. 0000601 I [2]<e0002000:BPU v6-M class=14 designer=43b:Arm part=00b> [rom_table]
  10. 0000607 I CPU core #0 is Cortex-M0+ r0p1 [cortex_m]
  11. 0000610 I Setting core #0 (Cortex-M0+) default reset sequence to ResetSystem [pack_target]
  12. 0000616 I 2 hardware watchpoints [dwt]
  13. 0000620 I 4 hardware breakpoints, 0 literal comparators [fpb]
  14. 0000635 I Semihost server started on port 50001 (core 0) [server]
  15. 0000752 I GDB server started on port 50000 (core 0) [gdbserver]
  16. 0000757 I Client connected to port 50000! [gdbserver]
  17. 0000883 I Attempting to load RTOS plugins [gdbserver]
  18. [---|---|---|---|---|---|---|---|---|----]
  19. [========================================]
  20. 0001608 I Erased 0 bytes (0 sectors), programmed 0 bytes (0 pages), skipped 2048 bytes (4 pages) at 3.44 kB/s [loader]
gdb调试.png
附工程包:
cw32l030_gcc.zip (624.29 KB, 下载次数: 17)

pssyx 发表于 2023-6-26 09:40 | 显示全部楼层
楼主真棒!
 楼主| lulugl 发表于 2023-6-26 13:26 | 显示全部楼层

多谢版主大佬的鼓励,我在继续努力中!
icecut 发表于 2023-6-26 20:25 | 显示全部楼层
linux爱好者越来越多了
 楼主| lulugl 发表于 2023-6-26 21:22 | 显示全部楼层
icecut 发表于 2023-6-26 20:25
linux爱好者越来越多了

linux下面编译的速度相比MDK要好很多,gdb调试也人性化。
icecut 发表于 2023-6-28 10:12 | 显示全部楼层
lulugl 发表于 2023-6-26 21:22
linux下面编译的速度相比MDK要好很多,gdb调试也人性化。

会用的都说好用. 不会用的就是学不会
 楼主| lulugl 发表于 2023-6-28 10:32 | 显示全部楼层
icecut 发表于 2023-6-28 10:12
会用的都说好用. 不会用的就是学不会

当然,万事开头难,有时就在临门一脚就被劝退了。
muyee 发表于 2023-7-20 13:19 | 显示全部楼层
你好,我看了你的帖子很有价值,但是不知道你这个下载是怎么实现的呢,需要在pyocd中实现Flash的驱动吗
 楼主| lulugl 发表于 2023-7-20 14:34 | 显示全部楼层
muyee 发表于 2023-7-20 13:19
你好,我看了你的帖子很有价值,但是不知道你这个下载是怎么实现的呢,需要在pyocd中实现Flash的驱动吗 ...

对的,在makefile中把pyocd flash写进去了,避免手工输入长的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

180

主题

830

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部