As an
Embedded Software Engineer, you will be part of the operating system team that belongs to an R&D division of u-blox’s Positioning product center. The team is responsible for providing reliable, scalable and secure real-time operating system developed internally at u-blox for its positioning products. We design, implement, test, document and maintain low-level platform software that boots up the chip and manages its resources. That includes, among other things: startup, power management, task scheduling and communication, exception handling, memory management, platform security and device drivers.
Our software runs on embedded processors integrated with several RAM and ROM blocks, specialized signal processing acceleration units and other custom HW, as well as standard peripheral blocks within System-on-a-Chip products. We work closely with several hardware and software teams to help bring up new chips, prototype and implement features, perform system-level testing and optimization. We also cooperate with architecture, product and application engineering teams, receiving feedback about and improving our software.
You will be part of an international multi-site team. In your daily work you’ll be using an agile framework and the following tools to cooperate: Jira, Gitlab, wiki. You will mainly program in C but also will possibly use assembler for ARM (Thumb2), C++, Perl and Python where necessary. You have a general understanding of digital electronics and are able to use, e.g., a Lauterbach debugger and various lab equipment, such as oscilloscopes, signal analyzers, programmable power supplies, etc. for debugging purposes.
The position can be based in Tampere, Finland; Espoo, Finland; or in Athens, Greece. Please state clearly in your application which location you are applying to.
There shall be occasional travel to other u-blox sites within Europe.
Your Responsibilities
- Participate in design, implementation, testing and optimization of operating system software for new and existing platforms of u-blox positioning products
- Review and refactor code, fix issues, collaborate with product and application engineering teams to help improve software
- Create and maintain technical documentation for developed software modules and features
- Take part in design of new SoC platforms, provide input from OS perspective
Your Skills and Experience
- BSc., MSc or specialist diploma in computer science, electrical engineering or equivalent studies
- Familiarity with ARM architecture and SoC technology
- Basic knowledge of digital electronics and experience with lab equipment
- Knowledge of computer architecture in general, as well as of widely used embedded peripheral interfaces, such as UART, SPI, I2C
- Hands-on knowledge of low-level embedded software development using the C programming language
- Sound analytical and problem-solving skills
- Fluency in written and spoken English
- Solid experience with git, Linux command-line environment and basic development tools (make, gcc- and/or clang-based toolchains, doxygen, etc.)
Bonus Point
- Good understanding of operating system design concepts, as well as experience in development of OS internal mechanisms
- Good understanding of algorithms, data structures, time and memory complexity
- Knowledge in GNSS technology
- Knowledge in software testing, test automation, continuous integration concepts
Please apply with your CV and motivation letter and clearly state the location you are applying to: Tampere, Finland; Espoo, Finland; or Athens, Greece.