创建
创建openPOWERLINK
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解决方案需要以下步骤:
- 创建硬件平台 (该步用于嵌入式目标平台)
- 创建openPOWERLINK协议栈库
- 创建必要的openPOWERLINK驱动 (该步仅用于分块的协议栈版本)
- 创建你的应用(或已交付的demo应用)
平台特定创建信息
请阅读相关文档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.
- Windows平台上打开
创建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.
- Windows平台上打开
创建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"
Platform
和 Configuration
参数可修改为编译不同平台和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(双处理器)与后台程序通信。
创建openPOWERLINK Demo应用
创建一个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。
- Windows主机平台上打开
创建可执行程序
> 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。
- Windows主机平台上打开
创建可执行程序
> 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>