About u-blox u-blox (SIX:UBXN) is a global provider of leading positioning and wireless communication technologies for the automotive, industrial, and consumer markets. Our solutions let people, vehicles, and machines determine their precise position and communicate wirelessly over cellular and short range networks. With a broad portfolio of chips, modules, and a growing ecosystem of product supporting data services, u-blox is uniquely positioned to empower its customers to develop innovative solutions for the Internet of Things, quickly and cost-effectively. With headquarters in Thalwil, Switzerland, the company is globally present with offices in Europe, Asia, and the USA.
As a Senior 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 for a wide variety of u-blox positioning products. We design, implement, test, document and maintain low-level platform software that boots up the system and manages its resources. That includes, amongst other things: startup, power management, task scheduling and communication, exception and interrupt handling setup, memory management, security services 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 Scrum and the following tools to cooperate: Jira, Phabricator, git, wiki. You will mainly program in C but also will 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 lab equipment for debugging purposes. The position shall be based in Tampere, Finland or in Thalwil, Switzerland. There shall be occasional travel to other u-blox sites within Europe.
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, as well as 5+ years in the following topics Good understanding of operating system design concepts, such as synchronization primitives, inter-task communication, scheduling disciplines, etc. Good understanding of algorithms, data structures, time and memory complexity Knowledge of computer architecture in general, familiarity with ARM architecture, knowledge of embedded peripheral interfaces Hands-on knowledge of low-level embedded software development with real-time operating systems 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 Other programming and scripting languages, such as C++ and Perl Knowledge in GNSS technology Knowledge in software testing, test automation, continuous integration concepts Experience with agile methodology, especially Scrum