前言
本文续接上一篇文章,上一个工程中我们已经实现了定时器,本文我们正式开始移植canfestival (canopen协议栈的一种),这个网上的介绍很多,感兴趣的可以搜一下,本文着重介绍其移植过程。
一、建立源码canopen目录
在移植之前先看下我们之前工程的目录结构。
现在我们在components下建立canopen目录,在canopen目录下在依次建立inc, src,objdict分别存放canopen协议栈的头文件,源文件,和我们自己的对象字典,如下图所示。
现在inc,src,objdict是三个空目录,下一步我们去下载canfestival源码填充这3个目录吧。
二、canfestival源码下载
直接下最新的,下载链接canfestival
打开界面如下
我们点击这个zip,可以下载源码的zip包。

在文件夹中打开
右键点击空白处,然后从终端中打开
使用unzip canfestival-de1fc3261f21.zip命令解开zip包

进入解压后的目录,内容如下
三、canfestival移植
我们进入到include目录下,发现一些头文件如下
我们需要拷贝该目录下所有的.h到我们工程目录下的inc目录下,我这里是一起拷贝的,当然你也可以一个个的拷贝。
拷贝后的工程目录canopen的inc下应如下所示
然后我们进入到none文件夹下,把这3个头文件也拷贝到工程目录canopen中的inc下


拷贝后的工程目录canopen,inc应如图所示
接下来我们需要回到上一级,把AVR目录下的config.h,拷贝到工程目录canopen目录下的inc下(只拷贝这个哦,其他的不要拷贝)
拷贝后的工程目录应如下所示
接下来我们去拷贝源码文件,回到canfestival源码根目录,下面有个src文件夹,我们进入到src文件夹下拷贝所有的.c文件到项目目录下的canopen目录下src下。(我这里是全部拷贝,你也可以一个个的拷贝)
拷贝后的工程目录应如下所示
至此我们得源码文件移植完毕,下面我们要对源码和我们得esp32平台进行适配,也就是要修改一些源文件。
四、canfestival适配
我们在工程目录下新建canopen.hpp的cpp文件,如下图所示
我们在main中包含canopen.hpp,假装编译一下,看下报错。果不其然,它报了找不到canopen.hpp
我们在main目录下的CMakeLists.txt中加入canopen.hpp的路径
果然就编译通过了
接下来我们需要让canopen协议栈在esp32上跑起来,计划是canopen协议栈的初始化在Canopen的构造函数中执行。
我们还未对canopen协议栈源码文件做任何修改,过程中肯定有很多报错,但是没有关系,遇到一个报错我们改一个就好啦,遇一对,改一双!!!嘻嘻。
首先我们现在canopen.hpp中包含canfestival.h假装编译,看它能咋滴。
果然,它找不到canfestival.h
我们在canopen目录下新建CMakeLists.txt文件,然后在其中写如下内容, 再次编译















































所有评论(0)