Embien has been in the business of designing products of varying complexity – some running on a simple 8-bit MCU and others on powerful multi-core 64-bit processors. Having the capability to develops the system as a whole, in many use cases, we will have to go for Commercial Off the Shelf (COTS) modules for the designs. Such an approach provides a great deal of benefits such as less development complexity, better availability of design resources, proven support ecosystem resulting in quick product realization time, and less cost. But the downside is that we will have to manage with the limitations of the modules. For example, the memory available in the module might be just enough that when some feature additions are done, the need increases and modifications become difficult. In such cases, we will need to reduce memory utilization if possible. This page discusses one such instance where Embien helped optimize the overall resource usage by performance tuning on a Tegra TK1 based product and also in its automated deployment system development.
Embien has been developing products with COTS modules for its customers taking advantage as mentioned above. Generally, the approach is to develop a four-layer carrier board with necessary peripherals and form factor. The COTS module abstracts the complex routing for DDR RAM, PCB assembly, etc.
For one of our designs, we used Abaco Systems mCOM10-K1 a Small Tegra K1 COMExpress Type10 module that is powered by NVIDIA Tegra TK1 SoC. The Tegra TK1 is an embedded SoC with quad-core ARM Cortex-A15 processor and GPU with 192 SM3.2 CUDA cores. Useful for deploying computer vision and deep learning applications, Jetson TK1 runs Ubuntu Linux. With this module as a core, a custom carrier card is developed matching the physical and interfacing requirements. The system had 2GB of DDR3 RAM and 4GB of eMMC Flash.
The project was successfully executed and deployed in the field. Later as a part of customers innovation and evolving market needs, some new features were to be added. The proposed updates needed more memory and processing resources. The customer was contemplating redesigning the product and involved Embien in the decision making to leverage its versatile experience in this area and deep understanding of the system.
Embien analyzed the RAM and Flash memory consumption and profiled it to utmost details. We profiled and removed unused drivers in the L4T kernel considering future application updates as well. After a great deal of deliberations and validations, the unused packages in the Jetpack are removed without affecting the functionalities. For some of the packages, less resource-intensive equivalents were identified and replaced with. Since Tegra K1 runs on Ubuntu, it uses Unity GUI which occupied a good percentage of space in file system memory. As the system had a very minimal user interface requirement, we removed it and developed a minimalistic GUI relevant for the end application. We had automated the profiling and optimization process and brought down the flash consumption effectively by 1GB which is close to 25% of the total memory and 33% of original consumption. This saved a lot for the customer both in terms of cost and time considering the other way is to redesign the whole product. Other customizations such as custom cronjobs, error reporting mechanisms, on-boot validations etc. were also done.
In addition to Linux performance tuning, Embien also profiled and optimized the business logic implementation. NVIDIA provided a tool called Tegra System profiler is used to analyze the overall run time resource usage. The application is redesigned to use the GPU effectively. Other third-party tools such as Valgrind are used to check for run-time memory leaks and validated.
Apart from this, Embien also helped the customer in the deployment process. The process is divided into two major activities – development and production. The development process involves pulling in the data from the repository, compiling the sources, and performing extensive testing. Some of the activities done includes,
After this is done and the results are validated, the production process begins. The binaries provided by the development team are used as input and the automated deployment system programs each of the boards with it. Then a different set of validation tests starts that checks various performances and metrics for about 24 hours. Once this is done successfully, the suite automatically consolidates the results and marks the board for further integration. If any errors are detected, the test aborts and reports are used to analyze the failure and is fixed.
As an added requirement, Embien also supported the on-field upgrade mechanism. Since the overall system has very limited physical access, the only access available is over ethernet. The technician can connect his laptop and initiate the update process after due authentication. There are different levels of updates – application only, the kernel only, both application and kernel, with and without bootloader. The overall process is protected against failures such as invalid images, intermittent power failures, etc. A gold recovery partition is kept that contains a basic working image which will be used in case of critical failures during update. This partition itself can be updated independently. Changes are done at different levels right from u-boot, kernel, root file system and the JetPack programming scripts.
This case study is one of many examples when Embien helped develop and deploy flexible, future-ready products concerning performance, scalability, adaptability, etc. Partner with us to build strong business acumen and cutting-edge professional expertise in your process and address challenges in product development landscape.
Embien has been working in the NVIDIA technologies and Tegra development kits for the past few years with hands-on experience in Jetson TK1, TX1 and TX2 systems. Our team’s expertise in associated technologies spans driver development, boot loader customization, fail-safe recovery mechanisms, space optimization, CUDA framework developments, GStreamer plugin developments etc. Engaging with Embien for NVIDIA centered developments will bring down your product realization time significantly and get real-time service around the world.