Difference between revisions of "Yocto Support for NVIDIA Jetson Platforms"

From RidgeRun Developer Connection
Jump to: navigation, search
m (Software Development cost)
m (Product evolution)
Line 111: Line 111:
  
 
You do not need to reconfigure your entity OS from scratch, you only configure your platform setting to match the new hardware and you will be ready to go.  
 
You do not need to reconfigure your entity OS from scratch, you only configure your platform setting to match the new hardware and you will be ready to go.  
 
 
 
  
 
When creating your product every penny counts! This means you need to keep your costs low in both hardware and software perspectives. Choosing cumbersome technologies for your development team makes it difficult to progress faster and thus increases the development cost. In the same way, using technology that consumes too many resources such as CPU, storage or memory, makes your product to increase its price and thus, reduces your company profits.  
 
When creating your product every penny counts! This means you need to keep your costs low in both hardware and software perspectives. Choosing cumbersome technologies for your development team makes it difficult to progress faster and thus increases the development cost. In the same way, using technology that consumes too many resources such as CPU, storage or memory, makes your product to increase its price and thus, reduces your company profits.  

Revision as of 11:12, 8 September 2020



  Index Next: Setting up Yocto


Nvidia-preferred-partner-badge-rgb-for-screen.png



The goal of this wiki guide is to provide the instructions to configure, build, and install Yocto in NVIDIA platforms. The tutorial uses the meta-tegra layer for Yocto

Why choose Yocto?

When you first have an idea and want to create a demo or proof-of-concept, you often start with something that exists and is working, so you can focus on your unique design. For example, with NVIDIA’s Jetson embedded SoCs, they come with a pre-built file system making it easy to get started. When you have your idea working, ideally on hardware that is close to your anticipated embedded hardware platform, then what? Some companies add to their demo code and attempt to turn it into a product. This might work for simple products, but for many ideas, this will lead to products that are not reliable, difficult to manage, and create a downstream support nightmare. Once their first product is released and the support issues arise, these companies want to get to next-generation as soon as possible, still without realizing what is needed to create a supportable product.

All these problems point to the traditional embedded systems’ market goals:

EmbeddedGoals.png

In order to address these problems and make your project successful you need to choose the right tools not only for the present but for future project development. Here we list some of the primary considerations when selecting your system’s software.

Software Development cost


Sw cost.jpg

Despite using an out-of-the-box Operating System might look like an easier and faster solution for your product, it might quickly become a nightmare when working on your final product and start adding sophisticated features. Not being able to control the details of your software nor sharing them among your developers easily, is the start of the end. Your development team will take much longer developing on a platform that requires a lot of documentation for reproducing the development environment and changing the code to add new features and customize your system.

During development, going forth and back among different software revisions and changes is a common scenario. Without a proper source code versioning mechanism all these software changes this becomes impossible.

A pre-build OS lacks reproducibility, and all the software pieces will be spread, reproducing the system on another’s PC or even reverting a software change becomes a “mission impossible” task. All this makes development slower, inefficient, and, most importantly, expensive.

Hardware design cost


Hw cost.jpg

Typically a pre-build OS comes with lots of default applications and unnecessary firmware, including kernel drivers, system configurations, and in some cases unnecessary user interfaces such as Ubuntu. All of this has a first direct impact on storage space, which translates to bigger storage requirements.

In the second place, unnecessary software leads to additional tasks for your CPU, so your system won’t be only focused on what makes your product unique, but also in dummy and useless tasks. If you are planning to get the most of your system, every CPU cycle counts!

As a collateral effect of the additional software occupying your CPU, is the memory usage. All processes, including those that are not required, will be consuming your RAM; this will increase the requirements for your system’s memory for correct operation.

Lastly, the summary of all these additional requirements is converted into extra hardware parts or unnecessary more powerful ones, leading to an increment in the power consumption, which translates into more complex circuitry, more significant PCB area, and ultimately, a less portable device. You really don’t want your product to look like a 80’s cell phone right!?

Product performance and user experience


User experience.jpg

Developing a product in an embedded system is not the same as developing an application which runs on your desktop PC. If you do not use the most of your hardware acceleration you will end up with low performance applications and the user experience for your product will be the worst.

Embedded devices can perform even better than a general PC but they require to properly use their hardware resources. Conventional OSs such as Ubuntu have been designed for desktop usage and they do not look for this kind of optimizations. Using a custom OS such as Yocto, allows you to design your product using the hardware acceleration such as GPU, VPU, DMA, and others, providing a high performance result and an excellent user experience.

Customer support


Software update.jpg

Once your product is in the market begins the most critical part of the journey, customer services and bug fixing. You will likely start to receive hundreds of bug reports or feature requests, and you need to make sure this can be done easily, safely, and quickly. For this to happen, you need a reliable update mechanism and an efficient software version control flow.

Using hardware-specific OSs such as Yocto, allows you not only to track every change in your system and revert faulty modifications, but also to integrate specific update mechanisms that will work efficiently for your product use case, having control over every system action.


Software security


Software security.jpg

Depending on your field of action, cybersecurity can be one of the pillars of your product. Not having control over what applications are being executed or getting the latest security patches would make your product vulnerable.

Yocto provides a high level of granularity in the packages used for your system and you can quickly update any of them as soon as a new security patch is available from the package’s developer. If no update is still available, you can also easily tackle this yourself since you are in total control of the code your are running in your system.

Product evolution


Software evolution.jpg

Since you control all the software layers running in your system in Yocto, and you can easily replicate and modify it, porting your software to a newer hardware platform to create the next generation of your product becomes an easy task.

You do not need to reconfigure your entity OS from scratch, you only configure your platform setting to match the new hardware and you will be ready to go.

When creating your product every penny counts! This means you need to keep your costs low in both hardware and software perspectives. Choosing cumbersome technologies for your development team makes it difficult to progress faster and thus increases the development cost. In the same way, using technology that consumes too many resources such as CPU, storage or memory, makes your product to increase its price and thus, reduces your company profits.




  Index Next: Setting up Yocto