NI Linux Real-Time Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

9068 Conditional Disable and OS/Processor

Solved!
Go to solution

Hello,

If I want to put a conditional disable structure in LabVIEW for the OS or Processor for the 9068, what is the condition string in LabVIEW for each?

Old examples:

OS = VxWorks

Processor = PowerPC

Thanks,

Graham

0 Kudos
Message 1 of 11
(6,541 Views)

Hey Graham,

It should be:

OS == Linux

Sanjay C.
Embedded Software Product Manager| National Instruments
Message 2 of 11
(4,514 Views)

Thanks Sanjay,

Any idea what the Processor field would be? This is more critical for us to be safe since I assume OS == Linux could imply both x86 Linux and ARM Linux.

0 Kudos
Message 3 of 11
(4,514 Views)
Solution
Accepted by topic author GrahamB

Hey Graham,

You can use "CPU == ARM"

Also, to be clear -- why the concern between x86 and ARM? Are you developing code that would execute on both a Desktop system and an RT system? The "OS == Linux" shoud suffice if you have code that is portalbe between just RT systems.

Sanjay C.
Embedded Software Product Manager| National Instruments
0 Kudos
Message 4 of 11
(4,514 Views)

We are developing a LabVIEW library which calls a .DLL/.SO/.OUT that will run on Windows, VxWorks, Linux on x86, PowerPC, and ARM so we have to be a bit careful. The issue is because we call a C function which returns data with different endinaness depending on the architecture. The library right now doesn't run on any x86 based Linux, but I just wanted to be thourough now in case we ever do in the future.

Thanks for your help,

Graham

0 Kudos
Message 5 of 11
(4,514 Views)

Hi Graham,

Could you please provide some details about the way you performed loading a user lib ".so" targeting the ARM:

- Did you mean to target the zynq of the 9068 with an external so lib?

- Did you mean loading it directly from a vi on RT side?

I wanted to use a Call Library node inside a vi linked to the cRIO target but I face an issue : the required input is waiting for a dll only.

Regarding my project, I fix it in a "non 100% labview" way using a rt system call to a wrapper directly embedded in the cRIO. But I was looking for something "less dirty" regarding the standard way of working with Labview...

0 Kudos
Message 6 of 11
(4,514 Views)

s.boria,

What you could do is create you LVRT application with Call Library Nodes that are pointed to "Foo.*" (will resolve to Foo.dll on Pharlap ETS, Foo.out on VxWorks, and will try both Foo.so and libFoo.so on Linux). For the 9068, make sure that the library is placed in /lib or /usr/lib for the CLN to be able to locate the library for loading.

Alternately, you could change the string passed into the CLN based on target defines and, in that case, provide the full, on-target path for the 9068, allowing you to place the library anywhere on the filesystem on the target.

If you have some more questions, don't hesitate to ask (or you could track me down at NIWeek if you're attending)

0 Kudos
Message 7 of 11
(4,514 Views)

Hi Brad,

Thanks for this magic trick I didn't know ! I tested that and it works well on a very basic dll sample I made just now, so I think I will unplug quite soon my own wrapper after more complex test (reentrant call for example). The only point which is quite strange is that I had to close then reopen project to have a load from the target (and have access to function name). Closing node GUI didn't get the data in... Could you confirm that this is a "normal behavior" linked to the CLN?

Furthermore is it possible to add this tips entry in the official doc of the released version?

Or even better to implement this "joker mode" in the node interface directly instead of just "dll" (and in the import shared wizard too)?

Regards,

Seb

0 Kudos
Message 8 of 11
(4,514 Views)

s.boria wrote:

...

Closing node GUI didn't get the data in... Could you confirm that this is a "normal behavior" linked to the CLN?

Furthermore is it possible to add this tips entry in the official doc of the released version?

Or even better to implement this "joker mode" in the node interface directly instead of just "dll" (and in the import shared wizard too)?

Regards,

Seb

Seb,

Since the VI itself stays loaded in memory while deployed to the RT target, the old library will continue to be loaded as well. You could alternately un-deploy and re-deploy to get the same effect.

This functionality is already pretty well documented. I think that just automatically doing anything would prevent some flexibility (how many times when your computer does something automatically that you don't want it to? and how frustrating is it when you can't do anything to prevent it from doing that automatic action?)

Message 9 of 11
(4,514 Views)

My apologies, I didn't see the link at the end of F1 hel "call code written in text-based programming languages." ! Thanks for the link!

Regarding the automatic action, I totally agree with you. Nevertheless, a warning info to tell that a new deploy is required or an additional "refresh node content button" should perhaps provide an additional help to get a more genuine behaviour...?

Thanks anyway for this tip and the link!

0 Kudos
Message 10 of 11
(4,514 Views)