Embedded Linux application with Cloud tunneling and Reverse Proxy.
INTRODUCTION
The Cloud Tunnel project was focused on enhancing the functionality of Hikvision cameras by implementing a Cloud tunneling and Reverse Proxy solution through an Embedded Linux application.
DESCRIPTION
The Cloud Tunnel project focused on developing an Embedded Linux application with Cloud tunneling and Reverse Proxy capabilities to facilitate broadcasting camera feeds securely over the internet. This involved migrating the firmware from Go to C++ to optimize memory utilization and meet the stringent constraints of the camera's hardware.
SOLUTION
The primary challenge addressed by the project was optimizing the firmware to fit within the strict memory constraints of the Hikvision camera, which had only 1MB of FLASH and 3-4MB of RAM. To achieve this, the firmware was migrated from Go to C++ 14, resulting in significant memory savings.
Key optimizations included:
Static Linkage: OpenSSL and Boost libraries were statically linked to reduce dependency overhead and minimize memory usage.
Integration of Lightweight Libraries: The Plog library, a lightweight header-only logging library, was integrated to provide essential logging functionality without adding excessive overhead.
Dynamic Linkage: C++ runtime and glibc were dynamically linked to optimize memory utilization further.
Executable Compression: The UPX executable compressor utility was utilized to compress the binary, reducing its size to approximately 750KB in FLASH memory.
RESPONSIBILITIES
iomico assumed responsibility for the comprehensive optimization of the firmware, encompassing the following key tasks:
Firmware Migration: Migrated the firmware from Go to C++ 14 to leverage the language's performance and memory optimization capabilities.
Memory Optimization: Implemented various strategies, including static linkage, lightweight library integration, and executable compression, to optimize memory utilization and meet hardware constraints.
Testing and Validation: Conducted rigorous testing and validation to ensure the stability, reliability, and performance of the optimized firmware across different hardware configurations.
Documentation and Reporting: Prepared comprehensive documentation outlining the optimization strategies employed and their impact on memory utilization and performance.
TECHNICAL DETAILS
Platform: Embedded Linux
Features: Cloud tunneling, Reverse Proxy, Yamux protocol implementation, MDNS implementation, Binary size and in-memory optimization
Language: C++ 14
CONCLUSION
The successful migration and optimization of the Cloud Tunnel firmware from Go to C++ 14 represent a significant achievement in enhancing the functionality and performance of Hikvision cameras. By optimizing memory utilization and meeting stringent hardware constraints, iomico has enabled the seamless integration of Cloud tunneling and Reverse Proxy capabilities, empowering users to securely broadcast camera feeds over the internet with minimal resource overhead.
Our services
Embedded Software Development
Industry
Security
Technology
C/C++
Team
3 embedded software developers