Softeq is looking for Senior Software Engineer in the embedded department.
This position will require collaborating with a multi-disciplinary team to provide embedded software for custom hardware solutions. Analyze, design, program, debug and modify the firmware for execution of drivers, board support packages and other custom embedded platforms. Work often involves analog and digital hardware and real-time operating systems. Position requires knowledge of and exposure to hardware design and strong C programming skills.
Essential Job Functions/Responsibilities:
- Develop and modify BSPs (including porting and integrating kernel device drivers)
- Board bring-up as well as debugging and validation of new hardware
- Design and implement systems using C, C++ and a variety of languages (e.g. bash, Python, Java). Experience with various frameworks & OS’s including bare metal systems.
- Write code from high-level embedded applications down to register-level device drivers.
- Utilize a variety of processors and hardware peripherals (e.g. PWM, ADC, DAC, CAN, UART, etc.).
- Write and execute complete testing plans, protocols, and documentation for assigned portion of the application; identifies and debugs, and creates solutions for issues with code and integration into the application architecture.
- Collaborate and communicate with management, internal, and outsourced development partners regarding firmware design status, project progress, and issue resolution.
- Analyze designs to determine design, implementation and integration activities required based on general objectives and knowledge of overall architecture of product or solution.
- Collaborate and support project managers in Agile/Scrum settings.
Requirements (Education, Experience, Knowledge, skills, & abilities)
- 5+ years degreed experience in software development required.
- Expertise in multiple firmware design tools (GCC, Keil, IAR, clang).
- Strong C programming skills.
- Knowledge of firmware testing methodology, including writing and execution of test plans, debugging, and testing scripts and tools.
- Full understanding of SPI, I2C, USB 2+, RS232, CAN;
- Experience developing for the Linux kernel. Knowledge of basic principles of the kernel, DT, bootloader and how the system works.
- Experience in developing AOSP up to 8.x including automotive build configuration.
- Experience in Android system developing. Knowledge of boot sequence, services, HIDL, security policies
- Experience with acoustic echo cancellation, forward error correction, packet loss concealment, auto gain control, noise reduction, audio codecs
- Experience with RTOS (real-time operating systems).
- Experience with collaboration tools (i.e. GIT, JIRA, and Confluence) and software configuration tools
- Demonstrated ability to take initiative to identify and solve complex system level issues.
- Demonstrated ability to work collaboratively, both within and outside one's own workgroup.