[CW32F030系列] 【CW32F030CxTx StartKit测评】+01.基于Vscode环境搭建,makefile编译

[复制链接]
2760|20
 楼主| zhczlzhang 发表于 2022-7-12 09:10 | 显示全部楼层 |阅读模式
本帖最后由 zhczlzhang 于 2022-7-12 09:17 编辑

背景:
        在讲关于评测的话前,我先要讲一下为什么会申请这块开发板。
        一切都要从21年我第3次失业开始讲起,当时已经在公司工作3年左右,彼时已经为公司开发上线了好几款产品,都是采用的STM芯片,当时缺芯潮来袭,我以为对我没有影响,但是没想到,芯片涨价到300多,成本上涨,客户不愿意为此买单,老板也不愿意继续做下去,每按原价卖一套产品,就亏损一波,于是所有项目下架,我们这些技术人员也被扫地出门。
       然后在今年上半年我又在上海经历了一波长达3个月的疫情,解封后面试处处碰壁,年过30基本上都是被面试的嫌弃,就在我准备去昆山卖饼时,现在的公司找到了我,当时已经是第2次询问我是否有意愿去他们那里工作。
       然后我去了,入职的第一天,上级就跟我说公司目前面临的难题时,很多项目采用的都是STM芯片,但是缺芯潮的情况下,现在是有钱也买不到。公司招你的目的就是希望你能在国产MCU里面寻找到替代方案,并就价格,交期等作出良好的替代方案。
       这就是我为什么申请这块开发板的原因,就是为了替代。这是目前国内大部分项目厂家的痛点。
       关于我为什么用Vscode与Makefile来开发,那就要先说明一下,目前国内做嵌入式开发的,大家用的软件懂的都懂,但是大厂都是要求要用正版,以免留下把柄。而且国内用开源开发软件的越来越多,我觉得还是写一遍用Vscode开发的文档比较好。
       以上,算是我个人的牢骚,大家可以跳过。
------------------------------------------------------------------------------------------------------------------------------------------------
      关于此次评测,我打算写3篇文章,都是基于Vscode来写的,第一篇主要是写环境搭建与基础点灯。第二篇写定时器与串口。第三篇写什么暂时未定。主要我现在确实很忙,只能周六周日抽空来做实验写报告,平常还要自学前后端开发。因此可能一周一发,也可能2周一发,一切都要看情况。      
------------------------------------------------------------------------------------------------------------------------------------------------
      1:资料下载
           关于CW32F030CxTx StartKit的资料,我这里就不上链接了,大家去官网上下载就好。
           主要此次包装很简陋,群里好多人都在吐槽,官方也说了下次改正。此外板子也没有集成一键下载或者集成stlink之类的,所以下载需要下载器来配合,我自己只有JLink V9,后面又借了其他人的烧录器.
微信截图_20220712082503.png 微信截图_20220712082439.png
     2.安装软件
      2.1 安装Mingw-w64 GCC for Windows 64 & 32 bits
      第一步, 安装Mingw-w64, 我选的是i686-posix-dwarf,可能是最佳兼容性,这个是在线下载器默认安装的版本。
      链接:https://sourceforge.net/projects/mingw-w64/files/
       安装或解压缩完毕,会得到一个 bin 目录,后面要放入系统环境变量Path里面, 里面有很多 exe, 都是 windows 系统的 GCC 软件套装。
微信截图_20220712082515.png
       记住这个 bin 文件夹 这个是我们 make 安装目录,为了方便以后在命令行执行 make 指令 而不是输入较长的 "mingw32 make", 要把mingw32 make.exe 复制为 make.exe.

      2.2 安装 ARM GCC 交叉编译器
       进入 ARM 开发者官网下载编译器安装包,下面一个是压缩包,另外一个是安装包,安装一个就好。
微信截图_20220712082527.png
     安装解压完成后,可以找到一个 bin 文件夹,这个就是我们编译器安装目录。
微信截图_20220712082536.png
     以上 2 个记得都添加到环境里面去。
     有了以上两个工具,已经可以编译出 Bin 或者 Hex 文件,在其他嵌入式开发软件中我们还可以在线 Debug ,下载。Vscode 里面自然也有相应的 Debug 插件, OpenOCD ,但是根据我的实测, OpenOCD 没有支持芯源的芯片,所以这一点不是太好,如果有大手子能出一篇可以自己如何向 OpenOCD 添加支持芯片的教程就好了。这是一个需要解决的问题。
     2.3 安装 Vscode
     链接: https://code.visualstudio.com/
    微信截图_20220712082545.png 微信截图_20220712082553.png 微信截图_20220712082601.png
     Vscode安装没什么好说的,直接安装就好了,一路到底。
     安装完成后,界面是英语,记得安装提示的中文。
     安装完成后,记得在插件里面安装 C/C++ 。
    3. 配置环境变量
     Windows 环境下配置环境变量,要去我的电脑,属性,高级属性设置,环境变量,系统变量, Path 里面添加。添加 完成后在 CMD 里面输入。
     查询 make 版本     
  1. make v
     查询交叉编译器版本   
  1. arm none eabi gcc v
     查询结果如下
微信截图_20220712082612.png 微信截图_20220712082621.png
    4. 创建项目工程
     Vscode 里面创建工程与 keil 里面有异曲同工之妙,创建目录如下。有部分没有用到,大家参考即可。
微信截图_20220712082627.png 微信截图_20220712082635.png
     将CW32F030CxTx StartKit\cw32f030\stdperiph\lib\Libraries 里面所有文件拷贝到 FWLIB 里面。
     将CW32F030CxTx StartKit\cw32f030-stdperiph-lib\Examples\gpio\gpio_blink\USER 里面的所有文件拷贝到 Hardwave 里面。
     上面都是一些拷贝的工作,接下来是改造工作,我们要去 CW32F030CxTxStartKit\cw32f030-stdperiph-lib\IdeSupport\MDK 里面获得startup_cw32f030.s 将其放入 CORE文件夹,然后我们要对他进行改造,因为芯源公司是基于 ARM 汇编写的,但是我们的Vscode是 GCC 汇编,它不支持 ARM 汇编,所有我们要把startup_cw32f030.s 从头到尾的重写一遍,使其符合 GCC 汇编格式。
     所以在这个开发模式下,我们有三个步骤要做,很重要。
      1 :自己根据官方的 startup_cw32f030.s 重写 GCC 汇编文件。
      2 :自己根据官方 datasheet 写 cw32f030 flash.ld 文件。
      3 :自己根据官方文档写 makefile 文件。
     部分截图如下。
     1.startup_cw32f030.s 文件
微信截图_20220712082651.png
     2.cw32f030-flash.ld 文件如下
微信截图_20220712082704.png
     3.makefile 文件如下
微信截图_20220712082717.png
     以上 3 个文件在 GCC 模式开发下无比重要,具体这三个文件如何编写,网上都有相关教程,大家可以搜索下。
     以上文件移植编写成功后,进行 make 。打开 Vscode 的终端,新建终端。
     此时,打开终端, make 之后,提示我们找不到头文件 #include "core_cm0plus.h"
微信截图_20220712082728.png
     可以去 stm 包里面搜索,搜索到后拷贝到 CORE 文件夹,然后再 makefile 里面添加头文件编译路径。
             再次 make ,提示缺少 "core_cmInstr. h",同样去 stm 包里面搜索,拷贝到 CORE 文件夹,然后再 makefile 里面添加头文件编译路径。
微信截图_20220712082734.png                                  再次 make ,提示缺少 core_cmFunc.h,同样去 stm 包里面搜索,拷贝到 CORE 文件夹,
           然后再 makefile 里面添加头文件编译路径。
微信截图_20220712082741.png
         再次 make ,提示缺少 uart . h,同样去芯源包里面搜索,拷贝到 CORE 文件夹,然后在makefile 里面添加头文件编译路径。
微信截图_20220712082748.png
        再次编译,出现这样的错误说明不符合GCC 规范。

微信截图_20220712082755.png
       直到最后,编译结果提示编译成功,文件大小为 dec 3972 合计 14K 。
微信截图_20220712082801.png
     5.烧录程序
      群里面有一个 PWlink2 的工具,我周末下单,周一拿到手。
      到手的 PWlink2 默认只能有 5 个厂商的可以烧录,其中并没有芯源的,所以我们需要切换配置为支持CW 的。

微信截图_20220712082809.png 微信截图_20220712082826.png 微信截图_20220712082840.png
      到这里完成之后打开Power Writer 软件,在厂商签名那一栏,点击“线同步签名到 Power Writer ”。
      至此,厂商切换完成。
      接下来烧录,打开Power Writer 的 Program Memory, 在添加固件一栏添加你的 HEX 或者BIN 固件,完成之后,如下图。

微信截图_20220712082850.png
      完成之后,点击执行 全功能自动编程。结果如下。

       微信截图_20220712090318.png
      最终开发板实验现象结果如下。
微信截图_20220712082906.png
总结
     1 :先来说烧录的事情,这块板子芯片是 M0 架构 我记得 M0/M0+ 架构都是没有串口烧录功能的,也可能是我记错了,请大家指正。我自己用自己开发的串口烧录工具,在 M3,M4烧录的芯片上能正常烧录,但是在这块板子上就始终无法成功,直到我翻看 datasheet 的时候才想起来他是M0+ 架构。

     Stlink 烧录,群里有部分群友说能烧录成功,但是我一直烧录失败,从来没有成功过。
     Daplink 烧录,一直失败。
     Jlink V9 烧录,一直提示无法连接芯片,直到我更换芯片为 stm32F030C8 系列来进行烧录也不成功。
     PowerLink2 烧录, CW 的, GD 的烧录大成功 stm 的一直烧录失败,在 M0/M0+.M3.M4架构的芯片上全部烧录失败,提示连接不到芯片,反复确认过线路,都没有问题。不知道这是什么 BUG 。
     硬件BUG如图幽灵,可能有的可以,有的不可以,我是用独立软件下载,不是在keil或iar下载。以上是一家之言,仅供参考。
     烧录这一块,建议厂家尽快做起来,出一个能离线烧录的工具软件,全平台支持的那种。。
     2:关于这块芯片的坑,首先这块芯片虽然对表 stmf030 ,但是芯片的不同之处还是很多的。
       2.1 频率不同
         CW 的频率更高,这一点就很棒。
       2.2 内部地址映射不同
         这一点尤为注意,尤其是使用 Vscode IDEA linux 等 GCC 模式下开发的工程师要注意。
         CW 的 Flash 地址是从 0x00000000 开始的,跟 Stm 的完全不一样,大家自行调整。使用 JLINK 等烧录器如果按照 STM 的去烧录就会出现烧录失败的情况。
       2.3 架构不同
         CW 的是 M0+ 架构, STM 是 M0 架构有着微妙的不同,在某些细微的地方,在MAKEFILE 中,我使用 M0 编译过后的 HEX 虽然能够成功,但是烧录后一直没有反应,直到我切换成 M0+ 之后,编译通过的 hex 才运行起来。
     3:供货及价格
       供货问题,我一般都会在某创,某芯,某秋商城上搜索,因为用量不大,一年可能用不到 1K ,所以不值得去跟厂家签署 供应合同,平台上购买即可,但是平台上基本没有,CW 的其他型号也是出于供不应求的状态。所以希望厂家能够在各大平台上铺货,看到一个个货物库存是 0 ,真的很影响。
此次尝试国产芯片的结论如下:
      如果是快速开发,在Keil 下开发是最好的,但是对我这种对软件正版有要求,不得不在 GCC 模式下开发嵌入式的工程师来说,每一个国产芯片都是一个漫长的踩坑之路。
      因为官方开发的大部分都是基于 Keil Iar 的, GCC 模式的真的很少或者没有。这就注定了使用GCC 模式开发的工程师,都是真的猛士,因为有部分坑真的你在
网上都找不到,你可能都是第一个碰上的。我在开发这块板子的时候,碰到的问题在百度上真的找不到,这块芯片很少见,同类型的也基本上没有,这就注定我的开发之路要自己慢慢解决 BUG 。
      所以如果是在 GCC 模式下开发的工程师,最好是懂的一点汇编的知识,明白 GCC汇编与 ARM 汇编的不同,能够知道 ARM 架构的不同之处,能够编辑简单的编译器,有makefile 相关知识,新手还是不建议在 GCC 模式下开发。



yangxiaor520 发表于 2022-7-13 08:32 来自手机 | 显示全部楼层
学习了,谢谢分享。
chenci2013 发表于 2022-8-18 17:16 | 显示全部楼层
vscode好用吗   
abotomson 发表于 2022-8-18 20:05 | 显示全部楼层
如何搭建ubuntu的环境?   
claretttt 发表于 2022-8-20 20:09 | 显示全部楼层
国产芯片越来越多了。   
 楼主| zhczlzhang 发表于 2022-8-24 13:53 | 显示全部楼层
abotomson 发表于 2022-8-18 20:05
如何搭建ubuntu的环境?

你是要搭建ubuntu环境还是在ubuntu下搭建GD32的编译环境,前者网上搜索,后者官方好像有教程,虽然缺失的部分,没有完整的工程。
 楼主| zhczlzhang 发表于 2022-8-24 13:54 | 显示全部楼层

对国产芯片不太友好,寄存器调试也不友好,需要自己移植很多东西,不像keil,IAR官方已经做得很完善了。
isseed 发表于 2022-9-8 12:25 | 显示全部楼层
Vscode编译速度快吗   
pmp 发表于 2022-9-8 13:38 | 显示全部楼层
使用keil开发吧   
朝生 发表于 2022-9-8 14:14 | 显示全部楼层
故事很揪心,不过现在国产MCU也比较多了,可以替代的方案也多了。
朝生 发表于 2022-9-8 14:16 | 显示全部楼层
一款新的芯片就需要你这样坚持不懈的测评老师,能指出厂家的不足之处!这样CW才能做的更好!
beacherblack 发表于 2022-9-8 16:34 | 显示全部楼层
mingw-w64作用是什么
 楼主| zhczlzhang 发表于 2022-9-8 17:33 | 显示全部楼层
isseed 发表于 2022-9-8 12:25
Vscode编译速度快吗

还是可以的。第一次编译比较慢,我的34K左右,第一次大概2,3秒,后续配置好文件就可以把编译过的不用再编译,就很快了,一秒不到。
pl202 发表于 2022-9-11 12:03 | 显示全部楼层
这个板子性能怎么样
 楼主| zhczlzhang 发表于 2022-9-12 14:32 | 显示全部楼层
pl202 发表于 2022-9-11 12:03
这个板子性能怎么样

还可以,主频在这个架构下是比较高的。
minzisc 发表于 2022-10-1 13:52 | 显示全部楼层
vscode配置c++环境是什么?
kmzuaz 发表于 2022-10-1 14:11 | 显示全部楼层
直接使用keil开发不好吗               
averyleigh 发表于 2022-10-1 14:57 | 显示全部楼层
环境该如何配置                 
wilhelmina2 发表于 2022-10-1 16:17 | 显示全部楼层
Vscode怎么配置调试环境              
xietingfeng 发表于 2022-10-1 16:51 | 显示全部楼层
学习一下CW32F030CxTx      
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

76

帖子

2

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