- Company Name
- Celestica
- Job Title
- Engineer, Software
- Job Description
-
**Job Title:** Engineer, Software
**Role Summary:**
Design, develop, test, deploy and maintain embedded firmware and application software for high‑performance products. Work independently on low‑level programming, driver development, and system integration while collaborating with cross‑functional teams to meet quality, reliability, and safety standards throughout the product lifecycle.
**Expactations:**
- Deliver functional, optimized code that satisfies design, performance, and safety requirements.
- Follow Agile/Scrum processes and meet defined milestones and gate deliverables.
- Participate in hardware bring‑up, board integration, and cross‑disciplinary reviews.
- Maintain accurate, up‑to‑date documentation and support continuous improvement initiatives.
- Communicate effectively with customers, project managers, and engineering peers.
**Key Responsibilities:**
1. Design and implement firmware and software for microcontrollers/Microprocessors, SOCs, and peripherals.
2. Develop device drivers (SPI, I2C, UART, CAN, USB, Ethernet) and RTOS tasks (FreeRTOS, RT‑Thread).
3. Optimize memory, power, and CPU usage for constrained embedded environments.
4. Perform board bring‑up, hardware‑software integration, and debugging using JTAG/SWD, oscilloscopes, logic analyzers.
5. Implement communication protocols and ensure compliance with industry standards (e.g., DO‑178C).
6. Create automated test scripts and build systems using Python.
7. Collaborate with cross‑functional teams to refine designs, incorporate feedback, and resolve reliability issues.
8. Document architecture, APIs, driver interfaces, and test procedures.
9. Support troubleshooting, failure analysis, and design of experiments for defect resolution.
10. Contribute to continuous improvement of development processes and tooling.
**Required Skills:**
- Proficient in C/C++ and assembly for embedded firmware.
- Solid experience with bare‑metal and RTOS development (FreeRTOS, RT‑Thread).
- Knowledge of ARM Cortex, PIC, AVR microcontroller architectures and peripherals.
- Hands‑on with I2C, SPI, UART, CAN, USB, Ethernet, and custom wireless protocols.
- Experience with embedded Linux (driver development, kernel configuration, filesystem).
- Familiarity with JTAG/SWD, oscilloscopes, logic analyzers, and hardware debugging tools.
- Proficient in Python for build scripts, test automation, and data analysis.
- Version control expertise (Git) and experience with SDLC for embedded products.
- Strong technical writing and documentation skills.
**Required Education & Certifications:**
- Bachelor’s degree in Computer Engineering, Electrical Engineering, Computer Science or equivalent.
- 3+ years of embedded firmware/software development experience.
- Knowledge of DO‑178C or equivalent safety‑critical standards.
- Certifications such as Certified Embedded Systems Professional (CESP) or equivalent preferred.