创建

CMake

使用创建工具CMake创建openPOWERLINK(http://www.cmake.org)。 CMake使用简单的平台和编译依赖配置文件来控制软件的编译过程。

创建openPOWERLINK要求CMake版本在2.8.7及以上!

NOTE: 当前,CMake还不能用于所有平台。某些平台提供平台指定的创建文件(例:Makefiles 或Eclipse工程文件)。请参考处理器支持.

源外创建

CMake支持源外创建。因而,所有生成文件可置于特定创建目录。从而保持源文件干净。

交互模式

为了配置openPOWERLINK协议栈的不同创建选项,CMake可以交互方式调用。有以下三种创建选项配置模式:

  • cmake-gui

    最常用的创建选项配置方式。cmake-gui是CMake的图形用户接口。

    如果使用cmake-gui,配置选项在GUI中选择。选择了期望的选项后按Configure。新选项根据当前选择出现。新选项将被标记为色. 后续配置设置在再次按下Configure后更改并被接受。如果没有标红选项,Generate将写创建文件。

  • ccmake

    ccmake 是cmake早期版本的用户接口.

  • cmake -i

    如果调用cmake带有-i项,你可以以交互方式在控制台中选择创建选项。

    执行CMake

为了配置和生成创建文件,需要进入创建目录执行CMake并带有源代码路径作为参数。例如:

    > cd build
    > cmake ..

交叉编译

CMake允许为另一平台进行交叉编译。因而"cross platform toolchain files" 将被传递进cmake目录。为了使用交叉编译器和创建环境,调用cmake时,需要选择相应的交叉工具链文件。

下列工具链文件可被传递给cmake主目录:

平台 工具链文件
Xilinx Microblaze toolchain-xilinx-microblaze-gnu.cmake
Xilinx ARM (Zynq) Linux toolchain-xilinx-arm-linux-eabi-gnu.cmake
Xilinx ARM (Zynq) non-OS toolchain-xilinx-zynqarm-eabi-gnu.cmake
Altera ARM (Cyclone V SoC) non-OS toolchain-altera-c5socarm-eabi-gnu.cmake

工具链文件必须由CMake选项CMAKE_TOOLCHAIN_FILE指定。

例如:

为Xilinx Microblaze平台配置交叉编译:

> cmake -DCMAKE_TOOLCHAIN_FILE=<OPENPOWERLINK_DIR>/cmake/toolchain-xilinx-microblaze-gnu.cmake <SOURCE_DIR>

创建步骤

创建openPOWERLINK解决方案需要以下步骤:

平台特定创建信息

请阅读相关文档platform了解更多平台相关的openPOWERLINK创建。

创建openPOWERLINK协议栈库

创建协议栈库

openPOWERLINK协议栈本身以库的形式实现。协议栈库既可以包含整个协议栈(complete library),用户层(application library)或内核层(driver library).

注意:为了能够创建应用,Debug和Release版库都必须可用。如果有缺失将在demo的CMake配置过程中得到OPLKLIB-NOTFOUND或OPLKLIB_DEBUG-NOTFOUND的错误。

Linux

Linux系统中按以下步骤创建协议栈。在Linux中,CMake默认生成Makefiles。

  • 创建debug库

    > cd openPOWERLINK/stack/build/linux
    > cmake -DCMAKE_BUILD_TYPE=Debug ../..
    > make
    > make install
    
  • 创建release库

    > cd openPOWERLINK/stack/build/linux
    > cmake -DCMAKE_BUILD_TYPE=Release ../..
    > make
    > make install
    

默认的库安装路径: <openPOWERLINK_DIR>/lib/linux/<ARCH>

Windows

下面列出了在Windows系统上采用NMake创建协议栈的步骤,打开Visual Studio命令行并输入下面的命令:

  • 创建debug库

    > cd <openPOWERLINK_directory>\stack\build\windows
    > cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug ..\..
    > nmake
    > nmake install
    
  • 创建release库

    > cd <openPOWERLINK_directory>\stack\build\windows
    > cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..\..
    > nmake
    > nmake install
    

默认的库安装路径 <openPOWERLINK_DIR>\lib\windows\<ARCH>

注意: 也可以在Visual Studio中生成一个Visual Studio解决方案来编译库。请参考CMAKE文档来生成Visual Studio解决方案文件。

嵌入式系统(No-OS)

Microblaze

跟随下面的脚步在你的平台上build协议栈库:

  • 安装配置了Xilinx ISE 14.7工具集的系统上打开一个shell。

    • Windows平台上打开ISE Design Suite [64,32] Bit Command Prompt
    • Linux平台上执行脚本<ISE_ROOT_DIR>/settings[32,64].sh>配置当前shell.
  • 创建debug库

    > cd <openPOWERLINK_directory>\stack\build\xilinx-microblaze
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-xilinx-microblaze-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DCFG_COMPILE_LIB_[LIB_NAME]=ON -DCFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR=[PATH_TO_HW_LIB]
    > make all
    > make install
    

    上述操作将为[PATH_TO_HW_LIB]里的硬件库产生名为 [LIB_NAME] 的协议栈库(debug)。 通过传入CMake(CFG_COMPILE_LIB_[LIB_NAME]CFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR)给每个协议栈库,可将多个协议栈库build在一起。 参考\ref sect_build_stack_options_noos_microblaze了解详情!

  • 创建release库

    > cd <openPOWERLINK_directory>\stack\build\xilinx-microblaze
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-xilinx-microblaze-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCFG_COMPILE_LIB_[LIB_NAME]=ON -DCFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR=[PATH_TO_HW_LIB]
    > make all
    > make install
    

    上述操作将为[PATH_TO_HW_LIB]里的硬件库产生名为 [LIB_NAME] 的协议栈库。 通过传入CMake(CFG_COMPILE_LIB_[LIB_NAME]CFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR)给每个协议栈库,可将多个协议栈库build在一起。 参考\ref sect_build_stack_options_noos_microblaze了解详情!

默认库安装路径为: <openPOWERLINK_DIR>/stack/lib/generic/microblaze/<BOARD_NAME>/<DEMO_NAME>

Xilinx Zynq ARM

跟随下面的脚步在你的平台上build协议栈库:

  • 安装配置了Xilinx ISE 14.7工具集的系统上打开一个shell。

    • Windows平台上打开ISE Design Suite [64,32] Bit Command Prompt
    • Linux平台上执行脚本<ISE_ROOT_DIR>/settings[32,64].sh>配置当前shell.
  • 创建debug库

    > cd <openPOWERLINK_directory>\stack\build\xilinx-zynqarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-xilinx-zynqarm-eabi-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DCFG_COMPILE_LIB_[LIB_NAME]=ON -DCFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR=[PATH_TO_HW_LIB]
    > make all
    > make install
    

    上述操作将为[PATH_TO_HW_LIB]里的硬件库产生名为 [LIB_NAME] 的协议栈库(debug)。 通过传入CMake(CFG_COMPILE_LIB_[LIB_NAME]CFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR)给每个协议栈库,可将多个协议栈库build在一起。 参考\ref sect_build_stack_options_noos_zynqarm了解详情!

  • 创建release库

    > cd <openPOWERLINK_directory>\stack\build\xilinx-zynqarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../toolchain-xilinx-zynqarm-eabi-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCFG_COMPILE_LIB_[LIB_NAME]=ON -DCFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR=[PATH_TO_HW_LIB]
    > make all
    > make install
    

    上述操作将为[PATH_TO_HW_LIB]里的硬件库产生名为 [LIB_NAME] 的协议栈库。 通过传入CMake(CFG_COMPILE_LIB_[LIB_NAME]CFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR)给每个协议栈库,可将多个协议栈库build在一起。 参考\ref sect_build_stack_options_noos_zynqarm了解详情!

默认库安装路径为: <openPOWERLINK_DIR>/stack/lib/generic/xilinx-zynqarm/<BOARD_NAME>/<DEMO_NAME>

Altera Cyclone V SoC ARM

跟随下面的脚步在你的平台上build协议栈库:

  • 打开SoC嵌入式命令shell.

  • 创建debug库

    > cd <openPOWERLINK_directory>\stack\build\altera-c5socarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-altera-c5socarm-eabi-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DCFG_COMPILE_LIB_[LIB_NAME]=ON -DCFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR=[PATH_TO_HW_LIB]
    > make all
    > make install
    

    上述操作将为[PATH_TO_HW_LIB]里的硬件库产生名为 [LIB_NAME] 的协议栈库(debug)。 通过传入CMake(CFG_COMPILE_LIB_[LIB_NAME]CFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR)给每个协议栈库,可将多个协议栈库build在一起。 参考\ref sect_build_stack_options_noos_c5socarm了解详情!

  • Create release libraries

    > cd <openPOWERLINK_directory>\stack\build\altera-c5socarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../toolchain-altera-c5socarm-eabi-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCFG_COMPILE_LIB_[LIB_NAME]=ON -DCFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR=[PATH_TO_HW_LIB]
    > make all
    > make install
    

    上述操作将为[PATH_TO_HW_LIB]里的硬件库产生名为 [LIB_NAME] 的协议栈库。 通过传入CMake(CFG_COMPILE_LIB_[LIB_NAME]CFG_COMPILE_LIB_[LIB_NAME]_LIB_DIR)给每个协议栈库,可将多个协议栈库build在一起。 参考\ref sect_build_stack_options_noos_c5socarm了解详情!

默认库安装路径为: <openPOWERLINK_DIR>/stack/lib/generic/alterac5arm/<BOARD_NAME>/<DEMO_NAME>

配置选项

如果想更改配置选项,需要向命令行(-DCFG_XXX=XXX)或者交互模式下调用的CMake提交所要配置的选项。

通用配置选项

  • CFG_DEBUG_LVL

    openPOWERLINK调试功能分级设定。

  • CMAKE_INSTALL_PREFIX

    指定安装文件安装路径。

    默认路径:<openPOWERLINK_DIR>/lib/${SYSTEM_DIR_NAME}/${CMAKE_SYSTEM_PROCESSOR}

  • CMAKE_BUILD_TYPE

    指定build类型。 有效build类型为:Debug, Release

    如果指定类型为Debug,代码编译将带有调试选项。

  • CMAKE_TOOLCHAIN_FILE

    指定交叉编译工具链。仅当需要为不同目标平台进行交叉编译时使用。(\ref sect_build_cmake_crosscompile)

Linux配置选项

  • CFG_COMPILE_LIB_MN

    编译完整openPOWERLINK MN库。包含支持通过使用PCAP库访问网络的以太网驱动。

  • CFG_COMPILE_LIB_MNAPP_USERINTF

    编译openPOWERLINK MN应用库,包含Linux用户空间驱动接口。该选项用于多处理器的解决方案,openPOWERLINK的内核层作为单独的Linux用户空间守护进程来运行(例:基于PCAP的用户空间守护进程)。

  • CFG_COMPILE_LIB_MNAPP_KERNELINTF

    编译带有Linux内核空间驱动接口的openPOWERLINK MN应用库。与作为Linux内核模块的openPOWERLINK驱动一起使用。

  • CFG_COMPILE_LIB_MNDRV_PCAP

    在Linux用户空间编译openPOWERLINK MN驱动库。该库包含openPOWERLINK内核层并且使用PCAP库来访问网络。被用于Linux用户空间守护进程驱动。

  • CFG_COMPILE_LIB_CN

    编译完整openPOWERLINK CN库。包含支持通过使用PCAP库访问网络的以太网驱动。仅配置包含CN功能。

  • CFG_COMPILE_LIB_CNAPP_USERINTF

    编译openPOWERLINK CN应用库,包含Linux用户空间驱动接口。该选项用于多处理器的解决方案,openPOWERLINK的内核层作为单独的Linux用户空间守护进程来运行(例:基于PCAP的用户空间守护进程)。仅配置包含CN功能。

  • CFG_COMPILE_LIB_CNAPP_KERNELINTF

    编译带有Linux内核空间驱动接口的openPOWERLINK CN应用库。与作为Linux内核模块的openPOWERLINK驱动一起使用。仅配置包含CN功能。

  • CFG_COMPILE_LIB_CNDRV_PCAP

    在Linux用户空间编译openPOWERLINK CN驱动库。该库包含openPOWERLINK内核层并且使用PCAP库来访问网络。被用于Linux用户空间守护进程驱动。仅配置包含CN功能。

  • CFG_COMPILE_LIB_MNAPP_PCIEINTF

    编译包含PCIe驱动接口的Linux内核驱动接口的openPOWERLINK MN应用库。其与一个Linux 内核PCIe接口驱动一起使用,用于状态/控制和与运行在扩展PCIe设备上的内核层协议栈交换数据。

Windows Configuration Options

  • CFG_WINDOWS_DLL

    该选项置ON,库将被编译为动态链接库形式(DLL),替代默认的静态库。

  • CFG_COMPILE_LIB_MN

    编译完整的openPOWERLINK MN库。包含支持通过使用PCAP库访问网络的以太网驱动。

  • CFG_COMPILE_LIB_CN

    编译完整openPOWERLINK CN库。包含支持通过使用PCAP库访问网络的以太网驱动。仅配置包含CN功能。

  • CFG_COMPILE_LIB_MNAPP_PCIEINTF

    编译openPOWERLINK MN应用库,包含运行在扩展PCIe设备上的openPOWERLINK驱动接口。其与Windows内核空间的NDIS PCIe miniport驱动一起工作。NDIS PCIe miniport驱动用作应用库与PCIe设备上运行的openPOWERLINK内核层的通信接口。NDIS PCIe 驱动使用共享内存的方式在应用库与PCIe设备间交换状态/控制信息和数据。

  • CFG_COMPILE_LIB_MNAPP_KERNELINTF

    编译openPOWERLINK MN应用库,包含运行于Windows内核空间的NDIS媒介驱动接口。内核层协议栈位于NDIS媒介驱动内。NDIS驱动与NIC miniprot驱动通信来访问网络接口。

嵌入式系统选项

Microblaze配置选项
  • CFG_COMPILE_LIB_CN 编译完整的openPOWERLINK CN库。该库由协议栈的用户和内核部分构成,仅配置包含CN功能。
  • CFG_COMPILE_LIB_CN_HW_LIB_DIR

    指定CN库涉及的硬件平台路径。该路径主要表明硬件工程的输出目录。 (例如: <openPOWERLINK_DIR>/hardware/lib/generic/microblaze/<BOARD_NAME>/<DEMO_NAME>)

  • CFG_COMPILE_LIB_MNDRV_DUALPROCSHM

    为Xilinx Microblaze编译openPOWERLINK MN驱动库。该库包含openPOWERLINK MN内核层,使用openMAC驱动访问网络。使用双处理器共享内存库与openPOWERLINK用户部分通信 。其可以用于实施一个openPOWERLINK驱动(PCP)于双处理器设计中,而openPOWERLINK用户层以独立的处理器运行,通过共享内存连接。

    • CFG_COMPILE_LIB_MN_HW_LIB_DIR

      指定驱动库涉及的硬件平台路径。该路径主要表明硬件工程的输出目录。 (例如: <openPOWERLINK_DIR>/hardware/lib/generic/microblaze/<BOARD_NAME>/<DEMO_NAME>)

Xilinx Zynq ARM配置选项
  • CFG_COMPILE_LIB_MNAPP_DUALPROCSHM

    为Xilinx Zynq ARM编译openPOWERLINK MN应用库。该库包含openPOWERLINK用户层,带有CAL模块用于访问双处理器的共享内存库。双处理器共享内存库用于与openPOWERLINK用户部分通信。该库作为一个应用设计执行于non-OS Zynq ARM处理器上,与运行在另一独立处理器上的openPOWERLINK内核层通过共享内存建立连接。

    • CFG_COMPILE_LIB_MN_HW_LIB_DIR

      指定应用库涉及的硬件平台路径。该路径主要表明硬件工程的输出目录。 (例如: <openPOWERLINK_DIR>/hardware/lib/generic/zynqarm/<BOARD_NAME>/<DEMO_NAME>)

Altera Cyclone V SoC ARM配置选项
  • CFG_COMPILE_LIB_MNAPP_DUALPROCSHM

    为Altera Cyclone V SoC ARM编译openPOWERLINK MN应用库。带有CAL模块用于访问双处理器的共享内存库。。双处理器共享内存库用于与openPOWERLINK内核部分通信。该库作为一个应用设计执行于non-OS C5SoC ARM处理器上,与运行在另一独立处理器上的openPOWERLINK内核层通过共享内存建立连接。

    • CFG_COMPILE_LIB_MN_HW_LIB_DIR

    指定应用库涉及的硬件平台路径。该路径主要表明硬件工程的输出目录。 (例如:<openPOWERLINK_DIR>/hardware/lib/generic/alterac5arm/<BOARD_NAME>/<DEMO_NAME>)

    Building openPOWERLINK驱动

Building驱动

如果openPOWERLINK被编译成独立的应用和驱动库,驱动库需要链接为一个可执行的内核模式驱动或用户守护进程/服务模式。不管怎样,openPOWERLINK会做为一个驱动调用。

驱动在drivers目录下。build一个驱动,必须编译和安装必要的openPOWERLINK库。

注意: 如果使用单处理器方案则无需编译驱动。(例: Linux PCAP单处理器, Windows PCAP)

创建一个Linux PCAP用户空间守护进程

用户空间守护进程需要PCAP驱动库支持 (liboplkmndrv-pcap, liboplkcndrv-pcap). 必须编译和安装它们,才能编译用户空间守护进程。 build用户空间守护进程(例:为一个MN):

  > cd <openPOWERLINK_dir>/drivers/linux/drv_daemon_pcap/build
  > cmake -DCFG_OPLK_MN=TRUE ..
  > make
  > make install

创建一个Linux Edrv 内核驱动

创建内核空间驱动需要系统中安装相应的内核资源。内核资源路径可由CFG_KERNEL_DIR配置。

创建内核驱动(例: 为使用Intel 82537网络接口的MN):

  > cd <openPOWERLINK_dir>/drivers/linux/drv_kernelmod_edrv/build
  > cmake -DCFG_OPLK_MN=TRUE -DCFG_POWERLINK_EDRV=82573 ..
  > make
  > make install

创建一个Linux内核PCIe接口驱动

To build the kernel space driver, the appropriate kernel sources must be installed on your system. The path to the kernel sources can be configured by CFG_KERNEL_DIR.

build内核PCIe接口驱动:

  > cd <openPOWERLINK_dir>/drivers/linux/drv_kernelmod_pcie/build
  > cmake -DCFG_OPLK_MN=TRUE
  > make
  > make install

默认驱动安装路径:<openPOWERLINK_DIR>/bin/linux/<ARCH>/oplkdrv_kernelmodule_pcie

创建一个Windows NDIS驱动

build一个Windows NDIS驱动,需要相应的Windows Driver Kit(WDK)支持,开发系统上需安装配套版本。

注意: 当前提供的openPOWERLINK带有的Windows PCIe驱动和NDIS中间件驱动可用于Windows 7(64 bit)并且要求Windows Driver Kit(WDK)8.1编译。 (http://www.microsoft.com/en-us/download/details.aspx?id=42273)

NDIS 驱动:

  • drivers\windows\drv_ndis_pcie (NDIS PCIe miniport驱动)
  • drivers\windows\drv_ndis_intermediate (NDIS中间件驱动)

下面是Windows系统使用MSbuild创建MDIS驱动的步骤。打开Visual Studio命令行输入下面的命令。

  • Build Windows 7(64 bit)debug模式驱动

    > cd <openPOWERLINK_directory>\drivers\windows\drv_ndis_[pcie;intermediate]\build
    > cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
    > msbuild /t:build /p:Platform=x64 /p:Configuration="Win7 Debug"
    
  • Build Windows 7 (64 bit)release模式驱动

    > cd <openPOWERLINK_directory>\drivers\windows\drv_ndis_[pcie;intermediate]\build
    > cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..
    > msbuild /t:build /p:Platform=x64 /p:Configuration="Win7 Release"
    

PlatformConfiguration参数可修改为编译不同平台和Windows版本的驱动。

默认驱动安装路径: <openPOWERLINK_DIR>\bin\windows\<ARCH>\drv_ndis_[pcie;intermediate]_package

为Microblaze创建PCP守护进程

本段会说明为双处理器设计中Microblaze软核处理器创建PCP后台程序。该后台程序使用为双处理器共享内存接口设计的驱动库(liboplkmndrv-dualprocshm)。

创建PCP后台程序(例:在Zynq SoC's programming logic (PL)为Microblaze使用共享内存接口):

  > cd <openPOWERLINK_dir>/drivers/xilinx-microblaze/drv_daemon/build
  > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-xilinx-microblaze-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=Release ..
  > make
  > make install

配置选项

常规选项

  • CFG_DEBUG_LVL

    openPOWERLINK调试功能的调试分级。

  • CMAKE_INSTALL_PREFIX

    制定你的文件安装路径。默认路径是:<openPOWERLINK_dir>/bin/<system>/<ARCH>

  • CMAKE_BUILD_TYPE

    指定build类型。 可用build类型是:Debug, Release

    如果指定Debug,代码编译带有调试选项。

  • CMAKE_TOOLCHAIN_FILE

    指定交叉编译工具链文件。只有为另一目标平台进行交叉编译时才需要(\ref sect_build_cmake_crosscompile)

Linux PCAP用户空间后台程序

  • CFG_OPLK_MN

    如果使能,POWERLINK协议栈编译带有MN功能,否则将编译仅带有CN功能。

Linux Edrv内核驱动

  • CFG_KERNEL_DIR

    本地内核源代码所在路径。如果未设置,当前运行的内核源代码将被使用: /lib/modules/$(shell uname -r)/build

  • CFG_OPLK_MN

    如果使能,openPOWERLINK协议栈将编译为全功能MN,否则将编译为仅带有CN功能。

  • CFG_POWERLINK_EDRV

    选择内核协议栈和demo所用的以太网驱动。可用选项为:

    • 8139: Realtek 8139-based网卡(100 MBit/s)
    • 8111: Realtek 8111/8168网卡(1 GBit/s)
    • 8255x: Intel 8255x-based网卡(100 MBit/s)
    • 82573: Intel 82573-based网卡(1 GBit/s)
    • i210: Intel I210-based网卡(1 GBit/s)
    • emacps:Zynq Emac网络接口控制器 (1 GBit/s)

Microblaze上的PCP后台程序

下列选项在双处理器设计上的PCP后台程序中有效:

  • CFG_HW_LIB_DIR 你的后台程序设计的硬件平台安装路径。(例:<openPOWERLINK_DIR>/hardware/lib/generic/microblaze/<BOARD_NAME>/<DEMO_NAME>)

  • CFG_BUILD_KERNEL_STACK

    确定哪个协议栈驱动库被链接到后台程序。下列选项可用且自动预设。

    • PCP Daemon Dual-Proc

      openPOWERLINK用户部分将运行在单独的处理器上,并且与后台程序通过共享内存(双处理器)通信。

    • host-interface

      openPOWERLINK用户部分运行在单独的处理器上,通过主机接口IP(双处理器)与后台程序通信。

创建一个Demo应用

下段描述已提交的demo应用怎样被创建。demo应用放在目录apps。默认二进制安装路径是:<openPOWERLINK_DIR>/bin/<platform>/<ARCH>

注意: 为了build出一个应用,Debug或者Release库版本必须可用,其取决于CMAKE_BUILD_TYPE.如果需要的库找不到,将在demo的CMake配置中得到OPLKLIB-NOTFOUND 或 OPLKLIB_DEBUG-NOTFOUND的错误。如果在Windows上使用Visual Studio,两个库都必须可用,以便在Visual Studio解决方案中切换Debug和Release。

在Linux上创建

  > cd <openPOWERLINK_dir>/apps/<demo_dir>/build/linux
  > cmake ../..
  > make
  > make install

在Windows上创建

打开Visual Studio命令行输入下列命令:

  > cd <openPOWERLINK_dir>\apps\<demo_dir>\build\windows
  > cmake -G"NMake Makefiles" ..\..
  > nmake
  > nmake install

注意: 你可以生成一个Visual Studio 解决方案并且在Visual Studio中编译。请参考CMAKE文档关于生成Visual Studiw解决方案文件。

创建嵌入式系统(Non-OS目标)

为Microblaze创建

按下列步骤为Microblaze交叉编译demo应用。

  • 打开一个配置了Xilinx ISE 14.7工具链shell。

    • Windows主机平台上打开ISE Design Suite [64,32] Bit Command Prompt.
    • Linux主机平台执行脚本<ISE_ROOT_DIR>/settings[32,64].sh>配置当前shell。
  • 创建可执行程序

    > cd <openPOWERLINK_dir>/apps/<demo_dir>/build/xilinx-microblaze
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../../cmake/toolchain-xilinx-microblaze-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=[Debug,Release]
    > make all
    > make install
    
为Xilinx Zynq ARM创建

按下列步骤为Zynq ARM交叉编译你的demo应用:

  • 打开一个配置了Xilinx ISE 14.7工具链shell。

    • Windows主机平台上打开ISE Design Suite [64,32] Bit Command Prompt.
    • Linux主机平台执行脚本<ISE_ROOT_DIR>/settings[32,64].sh>配置当前shell。
  • 创建可执行程序

    > cd <openPOWERLINK_dir>/apps/<demo_dir>/build/xilinx-zynqarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../../cmake/toolchain-xilinx-zynqarm-eabi-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=[Debug,Release]
    > make all
    > make install
    
为Altera ARM创建

按下列步骤为Altera Cyclone V SoC ARM交叉编译你的demo应用:

  • 打开一个"SoC embedded shell".
  • 创建可执行程序

    > cd <openPOWERLINK_dir>/apps/<demo_dir>/build/altera-c5socarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../../cmake/toolchain-altera-c5socarm-eabi-gnu.cmake ../.. -DCMAKE_BUILD_TYPE=[Debug,Release]
    > make all
    > make install
    

配置选项

常规配置

  • CFG_DEBUG_LVL

    openPOWERLINK调试功能的调试分级。

  • CMAKE_INSTALL_PREFIX

    指定安装文件的安装路径。默认路径:<openPOWERLINK_dir>/bin/<platform>/<ARCH>

  • CMAKE_BUILD_TYPE

    指定build类型。
    可用类型为:Debug, Release

    如果指定了Debug,代码将带调试选项编译。

  • CFG_BUILD_KERNEL_STACK

    决定怎样build内核协议栈。依赖于你的系统和不同可能选项的构成。请参考平台特定选项。

  • CMAKE_TOOLCHAIN_FILE

    指定交叉工具链文件。仅当需要为另一目标平台作交叉编译(\ref sect_build_cmake_crosscompile)。

Linux特定选项

  • CFG_BUILD_KERNEL_STACK

    决定怎样build内核协议栈。下列选项可用:

    • Link to Application

      openPOWERLINK内核部分直接与用户部分和应用连接。libpcap将作为以太网驱动使用。

    • Linux User Space Daemon

      使用liboplkappXn-userintf.a库。包含到Linux用户守护进程的接口。openPOWERLINK协议栈的内核部分将作为独立的用户空间后台程序驱动存在。

    • Linux Kernel Module

      使用liboplkappXn-kernelintf.a。包含到Linux内核模块的接口。openPOWERLINK协议栈的内核部分将作为独立的内核模块驱动存在。

    • Kernel stack on PCIe card

      使用liboplkappmn-kernelpcie.a库。 包含到Linux内核PCIe接口驱动的接口。openPOWERLINK协议栈的内核部分存在于扩展PCIe设备上。应用和协议栈内核之间状态/控制和数据交换由PCIe接口驱动处理。

Windows特定选项

  • CFG_BUILD_KERNEL_STACK

    决定怎样build内核协议栈。下列选项可用:

    • Link to Application openPOWERLINK内核部分将直接链接到用户部分和应用。WinPCAP用于以太网驱动。

    • Kernel stack on PCIe card

      使用liboplkmnapp-pcieintf.lib库。包含通过NDIS PCIe miniport驱动连接到扩展PCIe设备的接口。openPOWERLINK协议栈的内核部分存在于扩展PCIe设备上。应用和协议栈内核之间状态/控制和数据交换由PCIe接口驱动处理。

    • Windows Kernel Module

      使用liboplkmnapp-kernelintf.lib库。包含到运行于Windows内核空间的NDIS中间件驱动的接口。内核部分存在于NDIS中间件驱动。NDIS中间件驱动使用本地NIC miniport驱动来访问网络接口。

嵌入式平台选项(Non-OS)

Microblaze特定选项

  • CFG_HW_LIB_DIR 你的应用涉及的硬件平台安装路径。(例:<openPOWERLINK_DIR>/hardware/lib/generic/microblaze/<BOARD_NAME>/<DEMO_NAME>)

  • CFG_BUILD_KERNEL_STACK

    决定怎样build内核协议栈。下列选项可用且自动预设:

    • Link to Application

      openPOWERLINK内核部分将直接链接到用户部分和应用。(单处理器demo)

Xilinx Zynq ARM特定选项
  • CFG_HW_LIB_DIR

    你的应用涉及的硬件平台安装路径。(例:<openPOWERLINK_DIR>/hardware/lib/generic/zynqarm/<BOARD_NAME>/<DEMO_NAME>)

  • CFG_BUILD_KERNEL_STACK

    决定怎样build内核协议栈。下列选项可用且自动预设:

    • PCP Daemon using shared memory

      使用liboplk[mn,cn]app-dualprocshm.a库。包含到运行于独立处理器上的内核后台程序的接口。 使用双处理器共享内存库来与运行在第二处理器上的openPOWERLINK内核部分通信。

Altera Cyclone V SoC ARM特定选项

  • CFG_HW_LIB_DIR

    你的应用涉及的硬件平台安装路径。(例:<openPOWERLINK_DIR>/hardware/lib/generic/alterac5arm/<BOARD_NAME>/<DEMO_NAME>)

  • CFG_BUILD_KERNEL_STACK

    决定怎样build内核协议栈。下列选项可用且自动预设:

    • PCP Daemon using shared memory

      使用liboplk[mn,cn]app-dualprocshm.a库。包含到运行于独立处理器上的内核后台程序的接口。 使用双处理器共享内存库来与运行在第二处理器上的openPOWERLINK内核部分通信。

  • CFG_DRV_BLD_PATH

    应用涉及的驱动后台程序创建的本地路径。 (例:<openPOWERLINK_DIR>/drivers/altera-nios2/drv_daemon/build)

  • CFG_DRV_BIN

    Driver daemon binary for the 用于NIOSII的二进制后台驱动。 (default: drv_daemon.bin)

  • CFG_FPGA_RBF rbf格式的FPGA配置。 (默认:fpga.rbf)

应用特定选项

MN 应用

  • CFG_CFM

    决定应用是否使用配置管理器(CFM)。

    如果使用配置管理器创建openPOWERLINK协议栈,该选项必须使能。

创建openPOWERLINK硬件平台

创建硬件平台

如果目标平台是一个嵌入式处理器,openPOWERLINK协议栈需要类似BSP一样运行。如果带有软核的FPGA,也需要生成FPGA的配置。

本章描述FPGA配置和所有接近硬件驱动的build步骤。

注意: 为了能够调试最终用户应用,Debug和Release驱动版本都应该创建。

目标Xilinx Microblaze

执行下述步骤来生成FPGA配置和所有硬件依赖驱动。

-# 打开配置了Xilinx ISE 14.7工具链的shell:

  • Windows主机平台打开ISE Design Suite [64,32] Bit Command Prompt
  • Linux主机平台执行脚本<ISE_ROOT_DIR>/settings[32,64].sh>配置当前shell。

-# 初始化硬件平台创建系统

    > cd openPOWERLINK/hardware/build/xilinx-microblaze
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-xilinx-microblaze-gnu.cmake ../..

该命令后,CMake将搜索可用硬件平台并以下面的消息形式报告所有发现的平台:

    Found hardware platform: DEMO_S6PLKEB_CN_SINGLE_GPIO set to OFF!
    Found hardware platform: DEMO_[BOARD_NAME]_[DEMO_NAME] set to OFF!

-# 创建硬件平台,所有驱动库置debug:

    > cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DDEMO_[BOARD_NAME]_[DEMO_NAME]=ON
    > make
    > make install

将为demoDEMO_[BOARD_NAME]_[DEMO_NAME]build硬件平台。多平台可以通过每个平台的CMake定义来一起创建。

-# 创建硬件平台,所有驱动库置release:

    > cmake ../.. -DCMAKE_BUILD_TYPE=Release -DDEMO_[BOARD_NAME]_[DEMO_NAME]=ON
    > make
    > make install

默认硬件平台安装路径: <openPOWERLINK_DIR>/hardware/lib/generic/<CMAKE_SYSTEM_PROCESSOR>/<BOARD_NAME>/<DEMO_NAME>

目标Xilinx Zynq ARM

执行下述步骤来生成FPGA配置和所有硬件依赖驱动。

-# 打开配置了Xilinx ISE 14.7工具链的shell:

  • Windows主机平台打开ISE Design Suite [64,32] Bit Command Prompt
  • Linux主机平台执行脚本<ISE_ROOT_DIR>/settings[32,64].sh>配置当前shell。

-# 初始化硬件平台创建系统

    > cd openPOWERLINK/hardware/build/xilinx-zynqarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-xilinx-zynqarm-eabi-gnu.cmake ../..

该命令后,CMake将搜索可用硬件平台并以下面的消息形式报告所有发现的平台:

    Found hardware platform: DEMO_Z702_MN_DUAL_SHMEM_GPIO set to OFF!
    Found hardware platform: DEMO_[BOARD_NAME]_[DEMO_NAME] set to OFF!

-# 创建硬件平台,所有驱动库置debug:

    > cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DDEMO_[BOARD_NAME]_[DEMO_NAME]=ON
    > make
    > make install

将为demoDEMO_[BOARD_NAME]_[DEMO_NAME]build硬件平台。多平台可以通过每个平台的CMake定义来一起创建。

-# 创建硬件平台,所有驱动库置release:

    > cmake ../.. -DCMAKE_BUILD_TYPE=Release -DDEMO_[BOARD_NAME]_[DEMO_NAME]=ON
    > make
    > make install

默认硬件平台安装路径: <openPOWERLINK_DIR>/hardware/lib/generic/<CMAKE_SYSTEM_PROCESSOR>/<BOARD_NAME>/<DEMO_NAME>

目标Altera Cyclone V SoC ARM

为Altera Cyclone V SoC生成的二进制流来自 NIOSII command shell。 为Cyclone V SoC ARM bsp和预加载生成,执行下列步骤。

-# 打开一个"SoC embedded command shell".

-# 初始化硬件平台创建系统

    > cd openPOWERLINK/hardware/build/altera-c5socarm
    > cmake -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../../../cmake/toolchain-altera-c5socarm-eabi-gnu.cmake ../..

该命令后,CMake将搜索可用硬件平台并以下面的消息形式报告所有发现的平台:

    Found hardware platform: DEMO_C5SOC_MN_SOC_SHMEM_GPIO set to OFF!
    Found hardware platform: DEMO_[BOARD_NAME]_[DEMO_NAME] set to OFF!

-# 创建硬件平台,所有驱动库置debug:

    > cmake ../.. -DCMAKE_BUILD_TYPE=Debug -DDEMO_[BOARD_NAME]_[DEMO_NAME]=ON
    > make
    > make install

将为demoDEMO_[BOARD_NAME]_[DEMO_NAME]build硬件平台。多平台可以通过每个平台的CMake定义来一起创建。

-# 创建硬件平台,所有驱动库置release:

    > cmake ../.. -DCMAKE_BUILD_TYPE=Release -DDEMO_[BOARD_NAME]_[DEMO_NAME]=ON
    > make
    > make install

默认硬件平台安装路径: <openPOWERLINK_DIR>/hardware/lib/generic/<CMAKE_SYSTEM_PROCESSOR>/<BOARD_NAME>/<DEMO_NAME>