Got a love for coding? Hardware design? IT project management? We're with you. Whatever you want to do, do it at the highest level. Arm technology is a driving force behind 95% of the planet's connected devices – from your smartphone to VR headsets to the world's fastest supercomputer. You'll master your craft while working with the biggest names in tech.
Graduate Embedded Platforms Software Engineer
About the role
We are looking for enthusiastic Graduate Electronics or Embedded System Engineer to join Arm’s Hardware Platform team, who are working at the forefront in the following embedded areas:
- Development and validation of physical hardware platforms, based around Arm’s custom system-on-chip (SoC) and FPGAs.
- Creating software to test Arm systems both in simulation and in hardware (FPGA & Silicon)
- Porting existing simulation/emulation RTL validation software to real hardware
- Create and maintain Build environments & Automation tooling to ensure we supply high quality products
- Software design and implementation of reference firmware for Arm processors and systems – for example working on the software to enable our cutting-edge CoreLink secure subsystems
- Software stack development to enable Arm IP. This includes implementing HALs, drivers, connectivity, security, power and control components
- Board support firmware using STM32 and LPC11 microcontrollers
- Operating system development (Linux, mbedOS, FreeRTOS, etc)
- Development of reference software and demos for Arm Partners to use and replicate in their own products.
- Support and maintenance
If you’re interested in:
- The potential to work on all aspects of product development, from specification to customer release.
- Eager to learn, willing to give anything a go.
- 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
- Working alongside system hardware designers to develop the best platforms to support Arm’s partners
Then we have a role for you!
What will I be accountable for?
As a Graduate, you will be placed in a development team at Arm’s offices in Cambridge, UK 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 solve are ones that are yet unknown to the general community.
What skills, experience and qualifications do I need as an Embedded Software Intern?
Essential Skills & Qualities
- 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++
- Basic understanding of digital and analogue electronics and circuit diagrams
- Understanding of hardware description languages, such as Verilog/VHDL.
- 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
- Knowledge of common hardware interfaces, USB, SD Card, Ethernet, RS232, SPI, I2C and drivers
- Embedded hardware debug using oscilloscopes
- Bare metal C application development
- IDE and compilation technology, e.g. Eclipse and Keil MDK
- RTOS development or validation
- Knowledge of other languages, such as shell, Perl, Python, Java, Haskell or any assembly
- An appreciation of how and why version control software is useful
- Some knowledge of Linux operating system kernel or device drivers
- 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
- Excellent written and spoken English; can write coherent documentation
How do I stand out?
What additional beneficial extracurricular 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…