提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

canfestival是一套功能完整,完全符合CANopen标准的开源协议栈,canfestival为开发者还提供了许多工具,提高开发的便利性。

Canfestival源码由ANSI-C编写,提供了对于多种硬件平台的驱动,本文主要介绍canfeitival相关基础,以及搭建字典编辑器。供读者参考。

一、开源库下载

https://hg.beremiz.org/

二、canfestival介绍

下载后的文件压缩包名称是canfestival-de1fc3261f21.zip,解压之后的文件如下所示。

说明如下:

  1. debian和doc:描述的是针对于linux相关的文档说明文件夹。
  2. drivers:描述的是各种MCU相关的底层硬件操作驱动,主要包括定时器、CAN。
  3. example:描述的是各种MCU的使用例程。
  4. include:描述的是与src对应的头文件。
  5. src:描述的是CANopen协议的核心代码,包含了各种报文的实现的C文件、状态转换处理,定时器使用等。
  6. objdictgen:描述的是对象字典生成的编辑工具。

在canfestival中,所有源代码可以分为四大部分,分别是目标接口、CAN接口、canfestival库文件以及主从节点的应用。其中,canfestival库文件是整个协议的核心,包括调度管理,节点管理(对象字典访问objacces.c、状态机state.c),CANopen协议(服务数据对象sdo.c、过程数据对象pdo.c、同步对象sync.c、自动波特率对象lss.c、网络管理对象nmtMaster.c和nmtSlave.c)。这些文件在移植时是不需要修改的。主/从节点的应用包括节点状态反馈和设备对象字典的定义,目标接口包括节点硬件的驱动以及对于操作系统的接口,这也是进行移植时主要修改的对象。

由于周期性发射同步信号、心跳报文或SDO超时信号需要设定一系列定时信号来提醒系统进行这些工作,所以CANopen节点必须能实现定时功能。CanFestival在timer.c中执行了一个微型调度程序,他可以使用一个定时器,该调度程序会建立并管理一个警报表,并且在规定的时间发出信号。

Canfestival工程中文件分类及各部分的功能如下所示:

  1. 底层硬件相关实现接口。对应的是drivers目录下的各种文件,实现硬件定时器定时功能,各种MCU硬件的CAN接口的收发数据。
  2. 核心层。对应src目录下的各种文件,这一层实现的是各种报文的生成、报文处理、报文管理,同时还在硬件定时器基础上实现软定时器timer.c功能。
  3. 应用层。用户的主从站就在这一层,这一层调用核心层提供的各种接口进行对象字典操作等,并且在爆出纹理完成后,还可以执行用户添加的回调函数,本层canfestival实现了data.h头文件,里面包含用户各种数据结构,CO_DATA结构体的使用就需要objdictgen目录下的喜爱功能字典工具生成对象字典。

三、对象字典编辑器安装配置

1.对象字典生成工具环境搭建

1)安装软件:先后安装python-2.7.3、wxPhthon2.8和beremiz工具,如下图所示。

在安装之后,需要配置环境变量,在如下图的系统环境变量中找到并选中path变量,添加C:\Python27,即python的安装路径。

2)如何运行

找到目录objdictgen目录下的Gnosis_Utils-current.tar.gz进行解压,将解压后里面的gnosis文件夹拷贝到objdictgen目录下。

双击objdictedit.py,如果环境没有问题,就应该会出现如下界面。

2.字典编辑器操作说明

参考链接:

https://strongerhuang.blog.csdn.net/article/details/99826973?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-99826973-blog-99826952.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-99826973-blog-99826952.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=3


关于移植问题,下次分析。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐