打印
[CW32F030系列]

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

[复制链接]
1528|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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,后面又借了其他人的烧录器.
     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 软件套装。
       记住这个 bin 文件夹 这个是我们 make 安装目录,为了方便以后在命令行执行 make 指令 而不是输入较长的 "mingw32 make", 要把mingw32 make.exe 复制为 make.exe.

      2.2 安装 ARM GCC 交叉编译器
       进入 ARM 开发者官网下载编译器安装包,下面一个是压缩包,另外一个是安装包,安装一个就好。
     安装解压完成后,可以找到一个 bin 文件夹,这个就是我们编译器安装目录。
     以上 2 个记得都添加到环境里面去。
     有了以上两个工具,已经可以编译出 Bin 或者 Hex 文件,在其他嵌入式开发软件中我们还可以在线 Debug ,下载。Vscode 里面自然也有相应的 Debug 插件, OpenOCD ,但是根据我的实测, OpenOCD 没有支持芯源的芯片,所以这一点不是太好,如果有大手子能出一篇可以自己如何向 OpenOCD 添加支持芯片的教程就好了。这是一个需要解决的问题。
     2.3 安装 Vscode
     链接: https://code.visualstudio.com/
   
     Vscode安装没什么好说的,直接安装就好了,一路到底。
     安装完成后,界面是英语,记得安装提示的中文。
     安装完成后,记得在插件里面安装 C/C++ 。
    3. 配置环境变量
     Windows 环境下配置环境变量,要去我的电脑,属性,高级属性设置,环境变量,系统变量, Path 里面添加。添加 完成后在 CMD 里面输入。
     查询 make 版本     
make v
     查询交叉编译器版本   
arm none eabi gcc v
     查询结果如下
    4. 创建项目工程
     Vscode 里面创建工程与 keil 里面有异曲同工之妙,创建目录如下。有部分没有用到,大家参考即可。
     将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 文件
     2.cw32f030-flash.ld 文件如下
     3.makefile 文件如下
     以上 3 个文件在 GCC 模式开发下无比重要,具体这三个文件如何编写,网上都有相关教程,大家可以搜索下。
     以上文件移植编写成功后,进行 make 。打开 Vscode 的终端,新建终端。
     此时,打开终端, make 之后,提示我们找不到头文件 #include "core_cm0plus.h"

     可以去 stm 包里面搜索,搜索到后拷贝到 CORE 文件夹,然后再 makefile 里面添加头文件编译路径。
             再次 make ,提示缺少 "core_cmInstr. h",同样去 stm 包里面搜索,拷贝到 CORE 文件夹,然后再 makefile 里面添加头文件编译路径。
                                 再次 make ,提示缺少 core_cmFunc.h,同样去 stm 包里面搜索,拷贝到 CORE 文件夹,
           然后再 makefile 里面添加头文件编译路径。

         再次 make ,提示缺少 uart . h,同样去芯源包里面搜索,拷贝到 CORE 文件夹,然后在makefile 里面添加头文件编译路径。

        再次编译,出现这样的错误说明不符合GCC 规范。


       直到最后,编译结果提示编译成功,文件大小为 dec 3972 合计 14K 。

     5.烧录程序
      群里面有一个 PWlink2 的工具,我周末下单,周一拿到手。
      到手的 PWlink2 默认只能有 5 个厂商的可以烧录,其中并没有芯源的,所以我们需要切换配置为支持CW 的。


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


      完成之后,点击执行 全功能自动编程。结果如下。

      
      最终开发板实验现象结果如下。

总结
     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的环境?   

使用特权

评论回复
5
claretttt| | 2022-8-20 20:09 | 只看该作者
国产芯片越来越多了。   

使用特权

评论回复
6
zhczlzhang|  楼主 | 2022-8-24 13:53 | 只看该作者
abotomson 发表于 2022-8-18 20:05
如何搭建ubuntu的环境?

你是要搭建ubuntu环境还是在ubuntu下搭建GD32的编译环境,前者网上搜索,后者官方好像有教程,虽然缺失的部分,没有完整的工程。

使用特权

评论回复
7
zhczlzhang|  楼主 | 2022-8-24 13:54 | 只看该作者

对国产芯片不太友好,寄存器调试也不友好,需要自己移植很多东西,不像keil,IAR官方已经做得很完善了。

使用特权

评论回复
8
isseed| | 2022-9-8 12:25 | 只看该作者
Vscode编译速度快吗   

使用特权

评论回复
9
pmp| | 2022-9-8 13:38 | 只看该作者
使用keil开发吧   

使用特权

评论回复
10
朝生| | 2022-9-8 14:14 | 只看该作者
故事很揪心,不过现在国产MCU也比较多了,可以替代的方案也多了。

使用特权

评论回复
11
朝生| | 2022-9-8 14:16 | 只看该作者
一款新的芯片就需要你这样坚持不懈的测评老师,能指出厂家的不足之处!这样CW才能做的更好!

使用特权

评论回复
12
beacherblack| | 2022-9-8 16:34 | 只看该作者
mingw-w64作用是什么

使用特权

评论回复
13
zhczlzhang|  楼主 | 2022-9-8 17:33 | 只看该作者
isseed 发表于 2022-9-8 12:25
Vscode编译速度快吗

还是可以的。第一次编译比较慢,我的34K左右,第一次大概2,3秒,后续配置好文件就可以把编译过的不用再编译,就很快了,一秒不到。

使用特权

评论回复
14
pl202| | 2022-9-11 12:03 | 只看该作者
这个板子性能怎么样

使用特权

评论回复
15
zhczlzhang|  楼主 | 2022-9-12 14:32 | 只看该作者
pl202 发表于 2022-9-11 12:03
这个板子性能怎么样

还可以,主频在这个架构下是比较高的。

使用特权

评论回复
16
minzisc| | 2022-10-1 13:52 | 只看该作者
vscode配置c++环境是什么?

使用特权

评论回复
17
kmzuaz| | 2022-10-1 14:11 | 只看该作者
直接使用keil开发不好吗               

使用特权

评论回复
18
averyleigh| | 2022-10-1 14:57 | 只看该作者
环境该如何配置                 

使用特权

评论回复
19
wilhelmina2| | 2022-10-1 16:17 | 只看该作者
Vscode怎么配置调试环境              

使用特权

评论回复
20
xietingfeng| | 2022-10-1 16:51 | 只看该作者
学习一下CW32F030CxTx      

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

75

帖子

2

粉丝