Principal Firmware Engr
Job Description
Development and porting of Board Support Packages (Boot loader & Linux kernel) for ARM architecture which includes developing and modifying device drivers, configuration files, I/O initialization and startup routines, memory management, OS configuration, extensions to kernels, boot loaders, etc.
Perform board bring-ups and hardware validation/ debugging. Development of custom utilities which can useful for benchmarking of target hardware or help application and verification team.
Performing hardware/software unit level tests and/or functional integration tests. Development of multi-threaded user space applications.
Technical Skill [Required]:
10+years
Principle Firmware Engineer
- Working knowledge of software integration for complex SOC from vendors like TI, NXP, Infineon, Renesas, Microchip, SiLabs and ST Micro.
- Experience on SOC Board bring up and boot.
- Experience on low level drivers for complex SOC including Flash, DDR and peripherals
- Experience writing software for microcontrollers like ARM Cortex-A, Cortex-M, PIC or DSPs.
- Experience with low-level device drivers for SPI, I2C, PWM for various SOC.
- Expert knowledge of C/C++ in embedded software environment
- Must possess detail knowledge of Linux Device Drivers, subsystems and Linux Environment.
- Operating Systems:
- Linux. Good understanding of device drivers, file systems, memory management and OS internals.
- Experience with microcontroller RTOSes like FreeRTOS/uCos/emBOS etc.
- Tools:
- JTAG based hardware emulators, Hardware debugging tools e.g. Oscilloscope, Logic Analyzer, Protocol Analyzers, Kernel debugging tools e.g. ftrace, GIT, Subversion, GIT based code maintaining tools e.g. GitLab.
- Structured development processes where requirements analysis is performed, user stories, acceptance criteria, test strategies, traceability techniques are incorporated
Non-technical skills [Required]:
- Excellent communication and teamwork skills
- Ability and experience working in a self-directed mode and as part of a team
- Ability to lead and direct activities of a team
- Ability to status, advocate or provide feedback in clear, concise terms – both in written and oral forms of communication