Arbetsbeskrivning
Role Summary
Play a key role in supporting the development, testing, and debugging of embedded software that brings electronic systems to life.
This position involves hands-on interaction with hardware, writing and modifying low-level code, and assisting with the integration of firmware into physical devices.
We seek a technician to help bring our custom camera hardware to life.
The NanoCam X-Series hardware is just a shell until the firmware makes it functional — and that's where you come in.
Typical Responsibilities:
- Firmware Development: Writing and modifying C/C++ code for the ARM processor to control the CMOS sensor, handle data, implement communication protocols.
- Hardware Bring-Up: Working closely with the electronics technician to test and debug initial hardware functionality by writing small test programs.
- Driver Development: Writing low-level drivers for peripherals and interfaces.
- Debugging: Using debuggers to find and fix software bugs.
- Version Control: Managing code using systems like Git.
Must-have Skills
Proficiency in C/C++ Programming:
- Skilled in writing, reading, and modifying embedded C/C++ code for microcontrollers and low-level systems.
- Understanding of Microcontrollers and Embedded Systems:
- Familiar with ARM Cortex-M architectures and common development environments.
- Hardware Interface Knowledge:
- Basic working knowledge of hardware interfaces and protocols such as I2C, SPI, UART, GPIO, and CAN.
- Debugging and Diagnostics:
- Capable of using JTAG/SWD tools, logic analyzers, multimeters, and oscilloscopes to debug firmware–hardware interactions.
- Ability to Read Schematics & Datasheets:
- Understands electronic schematics, component datasheets, and block diagrams to support firmware-hardware integration.
Version Control:
- Comfortable working with small components and precise firmware configurations that impact physical behavior.
- Adheres to electrostatic discharge (ESD) protocols and basic lab safety procedures when handling sensitive hardware.
- Strong written and verbal communication skills for documenting firmware behavior, writing comments, and working with cross-functional teams.
Adaptability & Team Collaboration:
- Willingness to learn new tools, processors, or RTOS platforms.
Works well independently or in support of a hardware/firmware team.
Digital Tool Proficiency:
- Familiarity with embedded development tools, IDEs, digital documentation platforms and ticketing systems.
Contribution to Products:
- Develops and maintains the firmware that drives product functionality, including communication, sensor control, and startup routines.
- Supports hardware bring-up by writing test routines and helping identify physical or logical issues.
- Maintains a well-organized firmware development and testing environment, contributing to clean and repeatable build cycles.
- Develops the core functionality, that enables communication, and makes the NanoCam X-Series devices actually work.
- Develop the core functionality of the device (X100, X200, XPro and XUltra models) that Enable communication between hardware components and complementary web/mobile apps.
- Work directly with our hardware team to prototype, test, and ship working systems
What you will do:
- Firmware Development: Write and modify C/C++ code/logics for ARM-based microcontrollers to control CMOS sensors and manage data flow.
- Hardware Bring-Up: Collaborate with electronics technicians to test new hardware by developing low-level test programs.
- Driver Development: Implement and debug low-level drivers for peripherals and interfaces.
- Debugging: Use tools like JTAG/SWD probes to track down bugs, test edge cases, and ensure stability in hardware–software integration.
- Version Control: Keep code clean, track changes, and collaborate using Git.
What Success looks like
Technical Accuracy:
- Writes clean, efficient, and well-documented C/C++ firmware that functions as intended with minimal bugs.
- 90%+ of initial test cases pass without needing major rework.
- Demonstrates a solid understanding of microcontroller peripherals and low-level hardware interactions.
Reliability:
- Completes tasks and deliverables on or before assigned deadlines 90% of the time.
- Follows coding standards, testing protocols, and version control procedures with high consistency.
- Takes ownership of assigned modules or test scripts and maintains them without frequent supervision.
Team Collaboration:
- Participates actively in stand-ups, code reviews, and integration sessions with hardware and software teams.
- Communicates blockers or issues clearly within 24 hours of discovery.
- Provides at least one documented contribution per sprint cycle (e.g., bug fix, test function, driver module).
Continuous Improvement:
- Learns and applies at least one new tool, protocol, or platform per quarter (e.g., JTAG debugging, RTOS basics, Git workflows).
- Regularly incorporates peer feedback and shows visible improvement in code quality and troubleshooting efficiency.
- Maintains a personal development log or project journal to track learning progress and challenges.
Documentation & Reporting:
- Keeps firmware changelogs, test results, and hardware integration notes updated and accessible.
- Achieves 100% traceability of test results to firmware versions during validation cycles.
- Writes or contributes to internal documentation/wiki entries at least once per month.
Experience:
1-2 years of hands-on experience in an embedded systems or electronics development environment.
Exposure to embedded firmware development using C/C++ for microcontrollers (ARM Cortex-M, AVR, or similar).
Experience with hardware bring-up, including writing basic test programs to validate functionality of boards and peripherals.
Any prior experience with PCB assembly, repair, or testing is considered a strong advantage.
Background
- Ongoing or completed studies in Computer Engineering, Electrical Engineering, Embedded Systems, or a related field
Language requirements
- Swedish – Basic to fluent proficiency required (B1-B2 level or higher)
- English -- Basic to fluent proficiency required (C level or higher)
Certifications (Optional/Preferred)
- C/C++ Programming Certification Courses from platforms like Chalmers University of Technology, KTH (Royal Institute of Technology), or (Coursera, Udemy) focusing on embedded C/C++ and ARM
- ESD (Electrostatic Discharge) Awareness Certification