Senior/Principal Embedded Software Engineer
Company:
NoblePeak Vision is a privately held company developing breakthrough night vision camera core and image sensor products in the visible-light, NIR and SWIR bands of the electromagnetic spectrum. NoblePeak Vision’s target markets are in commercial security/law enforcement, transportation, and industrial, scientific and medical applications.
Responsibilities:
Develop and maintain embedded software for 32-bit microcontrollers to configure, control, and augment camera hardware resources including FPGAs, analog video encoders, lens motors, and temperature monitoring and control systems. Create closed-loop control systems for automatic features such as exposure control, focus, and image enhancement. Coordinate and support multiple command/control interfaces and protocols. Build development kits including embedded APIs and PC-based SDKs, perform product customization, and assist applications engineers with customer integration. Create simple embedded UIs using OSD character generation and video overlay (EFIGS+CJK internationalization a plus). Work independently and collaborate with a small group of systems and applications engineers, FPGA engineers and PCB designers to create high-quality cost-, resource-, and power-efficient systems through rapid design iteration. Assist operations team with design and implementation of testing and diagnostic software for camera manufacturing and OEM integration. Create clear, concise design documents, work breakdowns, effort estimates, and make-vs.-buy analyses to support project and resource planning.
Qualifications: B.Sc. or M.Sc. in computer science, computer engineering, or related fieldUS citizen or permanent resident
Required Skills and Experience: 5+ years of embedded software development in C/C++ and assembly3+ years of Win32 software development in C/C++ with wxWindows (preferred), MFC or similar tools, especially with real-time video acquisition and displayExperience with 32-bit embedded toolchain including bootloaders and field upgradeability, especially ARM, Altera Nios II and/or Xilinx MicroBlazeDeveloping for interrupt-driven systems and lightweight RTOS environmentsIntegration of register-configured and memory-mapped devices such as FPGAs, DACs, ADCs, codecs, and RTCsProgrammed or DMA-based I/O with interfaces such as DRAM, Flash, I2C, SPI, RS232, USB2.0, and CANClosed-loop control systems design and optimizationDemonstrated hands-on problem-solving skills using debuggers, logic analyzers, oscilloscopes, signal/pattern generators and similar lab equipmentWriting self-documenting source code, especially with automated tools such as Doxygen, DOC++ or ROBODocSource code/configuration management using tools such as Subversion, Mercurial, git, CVS, or ClearCaseDefect tracking using tools such as Trac, Bugzilla, Mantis, RT, or ClearQuest
Desired Skills and Experience:Multi-target automated build and regression testing system development with SCons, CMake, GNU autoconf/make, Tinderbox, or similar toolsFailsafe Flash filesystems for high-reliability operationExposure to infrared, CMOS or CCD image sensors, especially image, video and color processing algorithmsRAD or test system design with LabVIEWModeling, code generation, and testing with MATLAB/Simulink or similar toolsFamiliar with secure authentication schemes and cryptographyWindows software installation tools such as WiX or InstallShieldVLIW/SIMD architectures, hardware accelerators, and/or custom instructions
|