Description and Requirements
Work Type: Hybrid
Position Type: Contract - 12 Months
Location: Ottawa
Compensation Range: $85 - $98 ( Per Hour)
Our client, is seeking a "HSM - Embedded Software Engineer".
The position is responsible for
Responsibilities:
Design, implement, test, and document parts of the Firmware containerized microservices running in an embedded Linux based system ARM-based platform and also to the development of the manufacturing Yocto based image to help factory operators to perform HW testing.
Design, implement, test, and document other components of the HSM (Hardware Security Module) embedded software according to quarterly objective.
- You will join the HSM Embedded Software Development team
- You will work in a very dynamic environment and will heavily interact with the hardware and software engineering teams
- You will participate in requirements analysis, design discussions, planning sessions and effort estimates.
- You will heavily invest in documenting and testing your designs including test automation
Qualifications/ Skill Set:
Skill Set 1:
- Embedded Software Development: Solid work experience in embedded software development in Linux/U-Boot.
- Programming Languages: Proficient in C/C++, Python, and Linux shell scripting.
- Hardware Bring-Up: Experience with new board bring-up.
- Hardware Interfaces: Experience writing software using hardware interfaces such as I2C, SPI, UART, SMBus, PCI-E, NVMe, NOR Flash, DDR, EEPROM, GPIO, USB.
- Linux Kernel: Linux kernel configuration, root FS, device tree, systemd.
- Linux Kernel Modules/Drivers: Experience writing new Linux kernel modules and drivers.
- Build Systems: Experience with build systems, Yocto, and Gitlab.
- Multi-threading/IPC: Good understanding of multi-threading and inter-process communication.
- System Design: Ability to design complex systems and write functional and design specifications.
- ARM SoCs: Experience with ARM SoCs.
Skill Set 2:
- Embedded Software Development: Solid work experience in embedded software development in Linux.
- Programming Languages: Proficient in Go, Python, and Linux shell scripting. Experience with C/C++.
- Linux Kernel: Linux kernel configuration, root FS, device tree, systemd.
- System Design: Ability to design complex systems and write functional and design specifications.
- API Technologies: Experience with REST and gRPC.
- Containerization: Experience with Docker/Podman Containers.
- Gitlab: Gitlab usage, pipelines creation.
All interested applicants who meet the qualifications listed above are invited to submit a resume by clicking "Apply Now".
The indicated pay range for this position is a good-faith estimate based on the qualifications necessary for the position, including experience, training, and other considerations permitted by law. Additionally, it is emphasized that the pay band mentioned herein is the one established by the client company. Factors that may be used when making an offer may include a candidate’s skills, experience and geographic location, the expected quality and quantity of work. Most candidates will start at the bottom half of the pay range, with the upper end reserved for candidates with extensive experience and skills and who live in geographic markets commanding a higher starting pay. An employee’s pay history will not be a contributing factor where prohibited by local law.
This information is subject to change and serves as a general guideline for compensation discussions. Actual offers may vary based on specific circumstances and company policies.