Annapolis Micro Systems, Inc. is seeking an intelligent, versatile software engineer to join our Software Design Team.
Our accelerator products employ FPGA technology to provide computing capabilities far beyond what general-purpose processors can provide. Members of our Software Design Team work as part of a group to create interfaces between conventional processor platforms and our FPGA based accelerators, develop and support IP product development of High-Speed Protocols using FPGAs, such as PCIe, Infiniband, and 100Gbit Ethernet, as well as develop very high-speed protocol switch products. In addition, you will work with and develop on various microprocessor platforms.
Our new Product line will offer unprecedented processor interconnection bandwidth and performance. Your contributions will help us continue to lead our industry and expand our market!
Responsibilities:
- Develop, Maintain, Test, and Deploy Embedded Software Products
- Design Object-Oriented Software Architectures
- Design and Test API and User Level Examples
- Design and Test Device Drivers for Linux Kernel
- Design Interfaces to Supportive ASICs including, but not limited to: ADCs and DACs; SPI, I2C, USB, DP devices; RS232, RS485
- Configure and Deploy Operating Systems
- Design and Test VxWorks BSPs and Applications
- Interpret Hardware Schematic Diagrams
- Manage Software Releases and Version Control
- Produce Software Documentation
- Facilitate New Product Development through Requirements Review
- Automate Build, Test and Deploy Software Products
- Provide Second-Tier Customer Support of Software Products
Requirements:
- Bachelors degree in Computer Engineering, Computer Science, or a related field
- Have received, or are willing to receive, a government-mandated vaccine
- U.S. Citizenship
- Languages: C/C++, Java, Python, Bash
- Compilers: gcc, meson, cmake
- Platforms: Linux, VxWorks, Petalinux, Windows
- Tools: make, Eclipse, Yocto, gdb, Matlab™
- Object-Oriented Principles and Design
- Markup Language: XML/YAML/JSON
- Jama – requirements capture tooling
- Experience with real-time embedded environments (RTOS)
- Strong communication skills
- In depth knowledge of Supported Operating Systems and Hardware architectures
- Interrupt Handlers
- High Performance DMA
- Multi Thread Safe Software
- High Performance Portable Software supported between multiple OS’s.
- Experience with High-speed networks: 1/10/40/100 Gigabit Ethernet; PCIe Gen 3 and Gen 4; NVME
- Expertise in writing drivers for supported operating systems - Linux (ARM, PPC and x86 architectures)
- Debugging of embedded Hardware and Software
Desired Technical Background:
- ASIC experience including: AMD/Xilinx Zynq MPSoC, RFSoC, and Versal ASoC; Intel Agilex SoC Series experience; Microcontrollers; Intel processors including UEFI BIOS
- Additional Tool Knowledge: AMD/Xilinx XSDK™ and VITIS™ Software; TensorFlow with Versal™ AI Engine; Network APIs: REST and gRPC; Real-time embedded environments (RTOS) including VxWorks
- Expertise in writing drivers for supported operating systems - Windows
- Expertise in Writing Bootloaders: FSBL, UBOOT, UEFI BIOS, Slimbootloader
- IPMC and Chassis Manager (ChMC) development: VITA 46.11 compliance; SOSA alignment; IPMI Tier 1, 2, and 3 support
- Experience with Ethernet Protocols (Layer 2 and 3): Marvell, Mellanox; SwitchDev; OpenFlow; RDMA over Ethernet (RoCE and NFS over RDMA)
- Strong communication skills both internal and customer facing
- Understanding of issues from technical and business point of views