最近有小伙伴咨询 W806 的 CDS 开发环境, 如何支持 C++ 开发; 一看这位小伙伴就是 eclipse 的死忠粉 ; 哈哈哈, 那我就专门写一篇关于如何支持 C++的简短教程给到大家, 满足大家的需求; 制作好的工程链接可以下载尝试 https: //www. aliyundrive. com/s/ZN8zA5EvznL
可以参考这边文章内容 : http: //ask. winnermicro. com/article/68. html
也可以直接阿里云链接下载: https: //www. aliyundrive. com/s/CfdxmJu2Tc1
使用 CDS 打开 W806 的 SDK 如下图
默认例程开启了 RTOS , 为了简化转换 C++步骤, 大家可以还原为裸机工程, 不还原也无所谓, 没有什么影响, 不介意的可以跳过该步骤
修改后的 main 函数, 编译没问题后, 烧录到板子中确保没问题后, 在进行下面步骤
右键项目文件, 按照图中步骤点击
在弹出的对话框中 选择 编译工具链 W806 内核为 CK804 采用 平头哥 abiv2 指令集
修改 system. c 文件
路径为 platform ----- arch --- xt804 ---- bsp 下
在 SystemInit 函数末尾添加编译器对 C++ 构造函数初始化的调用接口 _init () 函数 , 该函数实现用户无需关心 只需要引用即可 .
关于 _fini () 函数的调用, 实在 main 函数结束之后进行回收的时候使用, 由于是单片机程序 main 函数一旦结束, 也就意味着系统异常了, 因此
不添加调用也是可以的, 添加过后如图所示
大家也可以直接复制
#include csi_config. h
#include "csi_core. h"
extern void _init () ;
extern void _fini () ;
void SystemInit (void)
{
xxxxxx
xxxxxx
_init () ;
}
包含 C++ 需要的头文件路径
前期准备工作基本完成了, 剩下的就可以编写 C++文件了
由于是 C++ 编译还需要在 main. cpp 的内容的最开始和结束 加上 宏 限定为按照 C 的方式编译
添加好的如图所示
为防止写错, 也可粘贴下面提供的
#ifdef __cplusplus
extern "C" {
#endif
xxxx
xxxx
#ifdef __cplusplus
}
#endif
以上步骤已经完成了 SDK C 语言编译到 C++的编译过程 , 用户可以自定义添加 C++文件进行测试, 本次也基于此写一个小小的例子供大家参考
右键需要添加 cpp 的地方 进行类的创建, 本次选择 src 目录
随后按照 isme 大佬的例程补全实现即可
在 main. cpp 中包含对应 头文件进行测试即可, 我这里顺便 测试了 string 有些需要使用 C++ 的 string 类型; 编译烧录 查看串口 0 的打印信息
太厉害了