Embedded Software Engineer
BLACK DIAMOND NETWORKS INC
San Diego, United States of America
1 month ago
Role details
Contract type
Temporary contract Employment type
Full-time (> 32 hours) Working hours
Regular working hours Languages
English Experience level
SeniorJob location
San Diego, United States of America
Tech stack
ARM
Booting (BIOS)
C++
Communications Protocols
Nvidia CUDA
Computer Engineering
Software Debugging
Linux
Linux on Embedded Systems
Embedded Software
Ethernet
Field-Programmable Gate Array (FPGA)
Internet Protocol Security (IP SEC)
Linux kernel
Multiprocessing
OpenCL
PCI Express
Real-Time Operating Systems
Reduced Instruction Set Computing
RSA (Cryptosystem)
Software Configuration Management
Software Systems
Systems Integration
Universal Asynchronous Receiver/Transmitter
Network Switches
Serial Peripheral Interface
Information Technology
U-Boot
Job description
The essential functions include, but are not limited to the following:
- Design and implement embedded software for multi-core processors integrated with FPGAs (e.g., Xilinx, Microsemi, Microchip, Vorago).
- Develop software for ARM Cortex and RISC-V processor architectures.
- Implement C/C++ code for embedded Linux, Linux networking, and real-time operating systems (RTOS).
- Configure and customize Linux kernel, system settings, and bootloaders (e.g., U-Boot, GRUB).
- Implement RFC-compliant networking and security protocols (e.g., IP, TLS, IPsec).
- Integrate with interconnect standards such as SPI, I2C, UART, GPIO, PCI, PCIe, Ethernet, and SpaceWire.
- Apply cryptographic systems (AES, RSA, ECDSA, ECDH) to ensure secure software solutions.
- Lead the development and testing of reusable, high-quality embedded software modules.
- Establish Secure System best practices are followed at the Architecture, Design and code levels.
- Translate complex system and customer requirements into robust software designs.
- Interpret various government security standards as they apply to the design and development of products.
- Support integration and debugging of software with hardware platforms.
- Track features, defects, and releases through formal software configuration and release processes.
Requirements
- Bachelor's Degree in related field (Electrical or Computer Engineering, Computer Science) is required.
- 9 or more years related experience in developing embedded software.
- Advanced proficiency in C/C++ for embedded systems and low-level driver development.
- Deep experience with embedded Linux systems, kernel configuration, and system bootloaders.
- Strong understanding of RTOS-based development and real-time constraints.
- Demonstrated experience interpreting schematics and hardware documentation for driver development.
- Proficient in networking and communications protocols, including implementation of secure communication standards.
- Familiarity with cryptographic principles and their application in embedded systems.
- Experience with software integration, debugging, and system-level validation.
- Familiarity with parallel-processing frameworks such as OpenCL or CUDA is a plus.
- Excellent problem-solving, documentation, and technical communication skills.
- Proven ability to mentor and supports junior engineers in a collaborative environment.
- Active U.S. Security Clearance required.