Senior Software Engineer
Annapolis Micro Systems, Inc. is seeking an intelligent and versatile Senior Software Engineer to work in a team that identifies customer problems and creates high-performance software solutions. Our team has built a reputation for products that incorporate image processing, image manipulation, large-scale disk and database access, fast and intuitive GUI design, and robust performance into highly productive applications.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. You will be an integral part of the team, designing, implementing, and supporting client applications and services that enhance the efficiency of the system and the end-user.Enjoy the benefits of working for a small privately-held company with on-site production test, manufacturing, hardware, and software design. The close coupling of all aspects of design and production under one roof allows us to create ultra-high performance products and systems at a rapid pace while maintaining the highest possible quality. Daily interaction with other departments provides a first-rate opportunity to further develop your career.Join us and become part of the future of computing technology!Essential Duties and ResponsibilitiesDevelop, test, deploy, and maintain software productsDesign and test Device Drivers for Windows and LinuxDesign and test API, User ExamplesDesign interfaces to complicated ASICsDesign and test VxWorks BSPs and ApplicationsEmbedded development and deploying operating systems on our productsInterpreting Hardware Schematic DiagramsDesign Object-Oriented Software ArchitecturesCapture requirements by interacting with customersAutomate build, test, and deployment of software productsProvide customer support of software productsManage software releasesRequirementsB.S. in Computer Engineering, Electrical Engineering, or Computer ScienceLanguages: C/C++, JavaCompilers: GCC, Microsoft Visual Studio,Platforms: Linux, VxWorks, Windows, AIXTools: Make, PetaLinux, Subversion, Python, Perl, EclipseSound understanding of Object-Oriented Principles and DesignExperience with real-time embedded environments (RTOS): VxWorksDesired- Considered an expert in writing Device Drivers for supported operating systems:Linux (ARM, PPC, and x86 architectures)Windows-In-depth knowledge of supported Operating Systems and Hardware architectures-IPMC and Chassis Manager (ChMC) development:VITA 46.11 complianceSOSA alignmentIPMI Tier 1 and 2 support-Experience with Ethernet Protocols (Layer 2 and 3):Marvell, MellanoxSwitchDevOpenFlow-High-speed networks:1/10/40/100 Gigabit EthernetSDR, DDR, QDR, FDR IBPCIe Gen 3 and Gen 4NVME and NVMEoFRDMA over Ethernet (RoCE and NFS over RDMA)-Debugging of Embedded Hardware and Software-Experience Developing Portable, Embedded, and High-Performance SoftwareInterrupt HandlersMT ApplicationsHigh-Performance DMA