About the role
With a number of positions to fill, we are looking for enthusiastic software engineers to join Arm’s software teams who are working at the forefront in the following embedded areas:
- Software design and implementation of reference secure firmware for Arm processors – for example working on the software to enable our state of the art CoreLink secure subsystems
- Software stack development to enable Arm IP. This includes implementing HALs, drivers, connectivity, security, DRM, Functional safety, power and control components.
- Operating system development (Linux, Zephyr, FreeRTOS, mbedOS, Android, etc)
- Software optimisation for Arm architectures (JIT compilers, Android, ...)
If you’re passionate about:
- The challenges of bringing up a new development board
- How to build, test and debug full software stacks on hardware that hasn’t yet been manufactured
- Gaining a deeper understanding of system architecture and performance, or
- How to scale a solution for a single developer into an automated real-time regression farm
- Upstreaming code to opensource projects
Then we have a role for you!
What will I be accountable for?
As a Graduate, you will be placed in a development team where you will have a mentor, and be able to get to grips with the problems ranging across many software areas. You will be working across all aspects of the software lifecycle whilst being supported by and learning from the rest of the team. You will also be offered the opportunity to explore other teams within Arm during your first 12 months with us, as part of our Graduate Rotation programme.
Whilst a lot of our work does involve Open Source software, many tasks require working with development platforms, or simulated hardware environments where features are being developed and tested before the physical devices have been built, so the problems you will be expected to understand and tackle are ones that are yet unknown to the general community.
What skills, experience and qualifications do I need as an Embedded Software Engineer?
- A passion for embedded computing that goes beyond your studies
- A creative and structured approach to problem-solving
- Knowledge of low level C and/or C++
- Comfortable communicating within a small team
- A desire for learning and self-improvement
Desirable Skills and Qualities
The following skills are not essential for this role, but experience in any of the following areas would enhance your application:
- Knowledge of a leading RISC based computer architecture ideally Arm
- An appreciation of how and why version control software is useful
Evidence of Open Source project interaction or contribution (patches, bug reports, …)
- Operating system kernel or device drivers
- Application development
- Compilation technology, JIT (Just In Time) compilers…
- Android, ChromeOS, RedHat, Debian internals/middleware development
- Linux development or validation
- Zephyr, FreeRTOS, other RTOS development or validation
- Low level device driver development and integration experience
- An appreciation of some of the ways in which computer architectures differ
- An understanding of embedded power management techniques or security technologies
- An understanding of radio protocol standards such as Bluetooth and/or Wireless LAN
- Hands on experience with hardware and software debuggers
- Knowledge of other languages, such as shell, Perl, Python, Java, Haskell or any assembly
- Excellent written and spoken English; can write coherent documentation
How do I stand out?
What additional helpful extra-curricular activities do you participate in whether this be self-study, community participation or volunteering. Examples of this being
- Projects undertaken outside of formal study
- Showcasing involvement in open source projects in the form of pointers to patches, repositories, bug reports…