We are happy to announce the official beta of openPOWERLINK 2.0!
The new release of the stack has been restructured to simplify its architecture and improve its modularity while still maintaining compatibility with previous versions. A special focus has been set on cleanly separating the application-near "user part" (stack library) from the time critical "kernel part" (stack driver). This step allows moving the time critical part to a dedicated communication processor (e.g. in an FPGA) or into a Linux kernel module, thus delivering high performance while keeping the stack API in user-space and therefore application development as simple as possible.
openPOWERLINK 2.0 has been refactored and restructured and is now fully documented using Doxygen. The build process has been optimized by separating the stack build from the demo application build. This makes it easier to integrate and update the stack in existing applications in the future. Most platforms are using CMake as a common build system.
The development of the 2.x-series is based on openPOWERLINK 1.8.2. Later changes in the 1.x-series are mostly due to be integrated into the final release of 2.0 which is scheduled for April.
openPOWERLINK 2.0.0-b1 is available via:
We are looking forward to your feedback!
The openPOWERLINK 2.0 development team
I tested the simple CN and MN communication using the beta verion 2.0...
CN and MN are installed on two linux PCs (64bit and 32 bit) in user space mode.
After starting the communication I repeatedly get the E_DLL_INVALID_FORMAT error. Using the 1.8.4 version everything is working good. But I have this problem with the 2.0 version. I compiled and installed the stack and the MN and CN application successfull and I thought it should be straight forward....Am I forgetting something there?
Thanks for reporting!
Please change line 217 in /apps/demo_cn_console/src/main.c to:
initParam.isochrTxMaxPayload = 36;
initParam.isochrTxMaxPayload = 36;
Then, the MN + CN demos are running together out of the box.
Of course, this will be fixed in the final version!
thats not enough! Also the following line (223) has to be changed in main.c:
initParam.presActPayloadLimit = 40;
Not 40 but 36.
Now it is running and wireshark says everything OK! :)
I have a problem when building the application demo_cn_embedded
(on Windows 7) for the target Microblaze. I am using a XPS system
on a different Spartan 6 development board, so I migrated my design to the
new order structure according to the example avnet-s6plkeb/cn-single-gpio.
Building the Hardware Platform and the Stack Libraries works fine, but
when building the application mb-gcc throws an error:
Linking C executable demo_cn_embedded.elf
C:/Xilinx/14.5/ISE_DS/EDK/gnu/microblaze/nt/bin/mb-gcc.exe -mlittle-endian -mcpu=v8.50.a -Wl,-T -Wl,D:/stack_2_0_0/apps/demo_cn_embedded/build/xilinx-microblaze/lscript.ld -Wl,-Map,demo_cn_embedded.map "CMakeFiles/demo_cn_embedded.elf.dir/src/main.c.obj" "CMakeFiles/demo_cn_embedded.elf.dir/src/app.c.obj" "CMakeFiles/demo_cn_embedded.elf.dir/src/event.c.obj" "CMakeFiles/demo_cn_embedded.elf.dir/D_/stack_2_0_0/apps/common/src/lcd/lcd.c.obj" "CMakeFiles/demo_cn_embedded.elf.dir/D_/stack_2_0_0/apps/common/src/gpio/gpio-microblaze.c.obj" "CMakeFiles/demo_cn_embedded.elf.dir/D_/stack_2_0_0/apps/common/src/lcd/lcdl-null.c.obj" -o demo_cn_embedded.elf -LD:/stack_2_0_0/hardware/lib/generic/microblaze/board-sp6/cn-demo-axi/bsppcp/pcp/lib D:/stack_2_0_0/stack/lib/generic/microblaze/board-sp6/cn-demo-axi/liboplkcn.a D:/stack_2_0_0/hardware/lib/generic/microblaze/board-sp6/cn-demo-axi/bsppcp/pcp/lib/libxil.a D:/stack_2_0_0/hardware/lib/generic/microblaze/board-sp6/cn-demo-axi/libomethlib/libomethlib.a
mb-gcc.exe: error: CMakeFiles/demo_cn_embedded.elf.dir/src/main.c.obj CMakeFiles/demo_cn_embedded.elf.dir/src/app.c.obj CMakeFiles/demo_cn_embedded.elf.dir/src/event.c.obj CMakeFiles/demo_cn_embedded.
elf.dir/D_/stack_2_0_0/apps/common/src/lcd/lcd.c.obj CMakeFiles/demo_cn_embedded.elf.dir/D_/stack_2_0_0/apps/common/src/gpio/gpio-microblaze.c.obj CMakeFiles/demo_cn_embedded.elf.dir/D_/stack_2_0_0/ap
ps/common/src/lcd/lcdl-null.c.obj : No such file or directory
The object files are present and I have no spaces in my paths.
What else could be a possible reason for this error?
is the object file of lcdl-null.c existing? When your CMake build folder is under apps/demo_cn_embedded/build/xilinx-microblaze please check if the file
$BUILD_FOLDER/CMakeFiles/demo_cn_embedded.elf.dir/D_/stack_2_0_0/apps/common/src/lcd/lcdl-null.c.obj really exists?
yes, the six object files which are listed in the error message
really exist. There is no error while building these objects
(the output of my verbose makefile regarding the objects is
in the attached file make.txt).
This seems to be very strange. Do you also have the problem when building the provided demo "avnet-s6plkeb/cn-single-gpio"?
I just tried to use the provided demo, but the behaviour is exactly the same.
Building the Hardware Platform and the Stack Libraries works fine also for the
avnet-s6plkeb, but when building the application, the same error occurs
while linking the executable.
It seems like the last call of mb-gcc.exe which causes the error
in the line after the echo "Linking C executable demo_cn_embedded.elf")
is executed out of the wrong directory. Because when I "manually"
execute the same command (copied from the makefile) in the $BUILD_FOLDER,
the generation of the .elf-file works fine. I will simply use this little
workaround until the final release of 2.0 :)
can you give me more details about this problem? For example it would be good to see what commands you are writing into the terminal. When you call make in which folder are you in when the Linking fails and in what folder is it working?
Can you please also try to decrese the lengh of the path the openPOWERLINK stack is located in. (e.g: move the stack to C:\openPOWERLINK)
I always had the stack in D:/stack_2_0_0/, so this is not the problem.
The command in the makefile is:
C:/Xilinx/14.5/ISE_DS/EDK/gnu/microblaze/nt64/bin/mb-gcc.exe -g -mlittle-endian -mcpu=v8.50.a -Wl,-T -Wl,D:/stack_2_0_0/apps/demo_cn_embedded/build/xilinx-microblaze/lscript.ld -Wl,-Map,demo_cn_embedded.map $(demo_cn_embedded_elf_OBJECTS) $(demo_cn_embedded_elf_EXTERNAL_OBJECTS) -o demo_cn_embedded.elf -LD:/stack_2_0_0/hardware/lib/generic/microblaze/spartan-sp601/cn-test-axi/bsppcp/pcp/lib D:/stack_2_0_0/stack/lib/generic/microblaze/spartan-sp601/cn-test-axi/liboplkcn_d.a D:/stack_2_0_0/hardware/lib/generic/microblaze/spartan-sp601/cn-test-axi/bsppcp/pcp/lib/libxil.a D:/stack_2_0_0/hardware/lib/generic/microblaze/spartan-sp601/cn-test-axi/libomethlib/libomethlib_d.a
I just figured out that it works if I remove the full path to mb-gcc.exe
in the makefile and call it simply with "mb-gcc -g -mlittle-endian ...."
Thanks for your suggestions!