Software Designer/Engineer - Embedded SystemsStatus: Full-time
Location: Hamilton, ON CANADA
Job Overview:We are looking for an Embedded Systems Engineer to join our software engineering team in Hamilton, Ontario, working on a state of the art gyro-stabilized camera system. The development team is responsible for all embedded firmware and some associated PC tools which drive the stabilized gimbals. This role will be responsible for designing, implementing, and optimizing control systems to ensure the camera system performs accurately and reliably across its multiple modes of operation. Key tasks include conducting simulations, performing real-time testing, and collaborating with cross-functional teams to integrate control systems with sensors and actuators.
Key Responsibilities- Design and implement gimbal control systems
- Develop Embedded Linux software on application processors - write and port kernel drivers, edit device trees, and integrate userspace components
- Bring up new boards alongside hardware engineers: turn schematics into a booting, working system
- Debug across the stack with oscilloscopes, logic analyzers, JTAG, and kernel tracing
- Work with software, hardware, and test engineers to develop new features and support new devices
- Debug complex software to improve software quality
- Profile and enhance software performance
Qualifications:- Bachelor's or Master's degree in Electrical Engineering, Computer Engineering, Computer Science, or a related field, or equivalent experience
- 3+ years of experience working on microcontrollers or control systems for gimbaled positioning systems
- Eligible to meet Controlled Goods Program requirements
Required Skills- Strong background in control theory, C++ and C programming, and an interest in camera systems
- Experience with linear algebra, coordinate frames, rotations and projective geometry
- System performance optimization and analysis, bode plot generation and analysis
- Deep understanding of Ethernet/IP Networking including packet level debugging
- Production experience with FreeRTOS on STM32 (or a closely comparable RTOS / Cortex-M platform)
- Familiarity with CAN, SPI, I2C, USB, TCP/IP
- Embedded C firmware and device driver development for microcontrollers and their peripherals
- Experience with non-blocking, threaded programming
- Real-time debugging with and without the use of a JTAG debugger
- Strong skills in object-oriented design
- Excellent communication, documentation, and people skills to support production and customer service departments
- Ability to learn quickly, think on your feet and innovate
Desired Skills and Experience:- Experience with Linux, GNU & LLVM Tools
- Strong C, with a working understanding of memory layout, concurrency, interrupts, and the constraints of resource-limited systems (Preferably Misra C experience)
- Writing or porting kernel drivers, writing/editing device trees, and working with a build system like Yocto or Buildroot
- Experience with ARM-based embedded linux systems (Nvidia Jetson or similar)
- Motor control beyond the block-diagram level FOC, sensorless observers, space-vector modulation
- Familiarity with networking concepts and protocols (IPv4, IPv6, Multicast)
- Knowledge of version control systems (e.g., Git) and build tools (e.g., Make, CMake), as well as Jira
- Experience with digital video - processing, encoding, and transmission
- Knowledge of cameras and optics
- Experience with GPS and inertial sensors
Schedule:- Monday-Friday with occasional evenings and weekends as required to accommodate project deadlines.
- Travel within Canada and internationally during testing phases.