Additional NI Software Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
metux

cRIO image development kit

Status: New

Many folks have huge trouble with building extra packages for the cRIOs (that are either missing or outdated), not to mention reproducible deployment and configuration management.

 

In industrial environments, we need a very high degree of customizability and reproducability, which the current nilrt distro just cannot provide. Setting up such an environment from scratch is a huge work for users, which usually aren't Linux embedded expert.

 

Therefore I'd suggest an fully automatized deployment of development environments, which are also easily customizable for the user. Major keypoints are:

 

a) development environment setup:

* container-based solution that can put together an environment automatically, using well-proven standard technology (eg. docker, ansible, ...)

* executable documentation: use declarative approaches, that are easy to understand and allow automatic documentation (eg. for verification / validation)

* use a recent, well-maintained standard distro (inside the container), and use off-the-shelf standard tools where possible

* fully tracable source control via git

* easily customizable: the user can fork off his own configuration from the appropriate upstream release, customize to his needs and later rebase to newer upstream releases if wanted

* automatic setup of package mirrors, binary repositories, product specific local deployment and HIL environments, etc.

b) target build environment:

* highly reproducable - even after very long time (eg. also allows automatic source code mirrors, etc)

* executable documentation - the configuration can be easily understood and used for generating documentation

* based on a Linux embedded experts community

* supports building for several (including customer-specific) target platforms

* supports easy configuration / customization of installed packages, as well as features selection and tuning of individual packages

* supports easily adding own software

* supports maintaining customized system configuration with image building

* fully tracable source control via git

--> the natural choice is using PTXDist (fast, reliable, reproducable, excellent expert community)

 

I'd estimate about 6 man-month (for a lone developer) for the initial stable release of the core system, plus another 6 mm for additional tasks like user documentation, examples, target specific configurations, etc.

 

Costs: about 200k $ (including extra buffer)

Equals sales price of about 25..30 avg. cRIO units. (RIO break even likely at about 50 units).

 

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
7 Comments
metux
Member

Extra revenue can be generated by extended consulting and support contracts.

 

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
crossrulz
Knight of NI

You might want to have a look at the Replication and Deployment (RAD) Utility.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
JoshuaP
Active Participant
metux
Member

@crossrulz: I'm talking about a toolkit for building and deploying the cRIO images themselves (not the VI stuff).

 

@JoshuaP: the bb layers are just a small part of the story.

(and nibb.sh has trouble running non-interactively -- a no-go)

There're also several prerequisites that currently have to be fulfilled manually.

 

I'm thinking of fully automatic deployment of an complete environment (eg. in containers), so one could easily pick out an (maybe even older) project and run the build automatically. Including repo server setup, etc.

 

Configuring bb or adding packages isn't entirely easy for the average c programmer. We see that in the numerous forum postings, where people try to somehow do it by foot (even attempting to compile on the target). This really can be made much easier. For example some menuconfig.

 

Anyways, I wouldn't use the complex and slow bb - on my 4xi7 machine, it takes about 10mins to just parse the recipes. The tool of choice for linux embedded certainly is ptxdist. (or, if the target machine is as big as an older PC and you don't need heavy customization, just take Debian).

 

By the way: just had a try according to the official instructions, and it failed miserably. 

 

(bb) (devuan)nekrad@orion:~/src/ni/nilrt$ bitbake world
WARNING: /home/nekrad/src/ni/nilrt/sources/openembedded-core/meta/recipes-core/util-linux/util-linux_2.29.1.bb: Variable key RDEPENDS_${PN}-hwclock ( hwclock-init) replaces original key RDEPENDS_util-linux-hwclock ( niacctbase).
Parsing recipes: 100% |################################################################################################| Time: 0:08:57
Parsing of 2911 .bb files complete (0 cached, 2911 parsed). 3808 targets, 506 skipped, 0 masked, 0 errors.
WARNING: No recipes available for:
/home/nekrad/src/ni/nilrt/sources/meta-cloud-services/meta-openstack/recipes-support/openldap/openldap_2.4.39.bbappend
/home/nekrad/src/ni/nilrt/sources/meta-measured/recipes-kernel/linux/linux-intel_4.%.bbappend
/home/nekrad/src/ni/nilrt/sources/meta-nilrt/recipes-devtools/mkinitcpio/mkinitcpio_git.bbappend
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing PROVIDES 'gtkmm' (but /home/nekrad/src/ni/nilrt/sources/meta-openembedded/meta-gnome/recipes-extended/gparted/gparted_0.27.0.bb DEPENDS on or otherwise requires it)
ERROR: gtkmm was skipped: missing required distro feature 'x11' (not in DISTRO_FEATURES)
ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'gparted', 'gtkmm']

I really wonder why it even wants to build gparted on the arm target.

Anyways, I wonder why one would need a GUI on a cRIO controller, anways.

 

That's the point where I really loose the desire to play any further (we don't buy any NI products anyways, as they're completely useless for us, w/o drivers ...)

 

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
crossrulz
Knight of NI

"I'm talking about a toolkit for building and deploying the cRIO images themselves (not the VI stuff)."

 

That is exactly what RAD does.  It basically makes a zip file containing all of the files on the cRIO, not just the rtexe.  This includes drivers and environment settings.  You can also include a black list when creating an image.  And then the deployment just does the opposite: wipe out the hard drive and copy all of those files into the cRIO.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
metux
Member

Okay, does that also include everything from bootloader to kernel and all the userland packages ? 

Can I easily add new packages, reconfigure existing ones (including kernel and bootloader), etc ?

Can I patch up individual packages (eg. kernel) to my needs ?

Does it support building package repos (including signatures, etc) and systems management ?

 

--mtx

Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering
edjones93
NI Employee (retired)

Most of what you describe seems like SystemLink, it even uses containers with SaltStack and can deploy a whole "State" as we call it.

I don't see how you'd deploy a kernel through something net based - it needs a kernel to get onto the network.

From what you describe, are you considering this for Non-NI hardware as well?

I did build a demo a while back for something similar where I had Jenkins automate my builds (which can be automated to build from Git), create a Package using the NI Package Manager through a pre-configured build specification and the LabVIEW CLI. Then it would upload this to SystemLink and from SystemLink you could also use the API to automate the deployment (I did not include this because I saw more value in keeping this out of the automation). BUT you can select groups of cRIO's and deploy all at once - something RAD can't do.

 

It's also web based so easy for uses to get access to and learn.

If you don't buy NI products then why are you asking for these features you don't intend to use? The community asked for GUI, so we gave them GUI - this is an optional feature.

 

Very very few people play around with the Kernel, what does your company develop that would require modifying everything from your application to bootloader?