Are you an experienced Software Developer with a strong background in Embedded Software Development ? At ARM we are looking for highly motivated individuals who have a professional approach to Software Development. You would join a growing team of likeminded individuals that share a passion for contributing to the future of computing and wherever that ambition may lead. You will help ARM maintain its leadership in the low-power embedded market and will play an essential role in helping ARM grow in the robotics segment.
In this role, you will be a member of the ARM Platforms Software team and will be responsible for developing and building our robotics software ecosystem around ARM's current and next generation products.
- Analysis and deep understanding of contemporary robotics software solutions, in particular those built using open-source software
- Porting robotics software onto ARM reference hardware designs
- Profiling system performance, identifying bottlenecks and evolving mitigation strategies
- Validating the functionality, security and safety of the system
- Designing system improvements and working with the associated hardware and software teams to implement them
- Pushing software improvements back to the relevant open-source software projects as a reference for ARM partners
- Working with ARM’s OS, OEM and Silicon Partners to drive standards that enable the optimisation, differentiation and fast evolution benefits of ARM’s Partner Model
- Providing technical advice and direction internally to ARM as well as ARM Partners and relevant robotics platform implementation related projects
ARM is a leader in low power embedded solutions and you can expect to be developing embedded software which will maintain this leadership.
As an active member of an extended Software Development group you can expect to be working face to face with some of the greatest household names in our industry to help develop, optimize and deliver the software needed to support ARM's cutting edge IP, as well as helping ARM grow its role in new market segments.
A successful candidate will be flexible, with a variety of software development skills and a commitment to extend the breadth and depth of their knowledge.
Education & Qualifications
Good university degree (or equivalent), ideally in a numerate subject, although other graduates would be considered if they have relevant experience.
Essential Skills & Experience
- Knowledge of a leading RISC based computer Architecture
- Experience of software profiling, instrumentation and optimization
- Strong understanding of complex multi-component embedded systems
- Demonstrable low level device driver development or integration experience
- Proficiency with optimizing apps, workloads, and with compilers
- Expert knowledge of C/C++ development
- Understanding of how to rigorously test software and design software for test
- Experience of the software development lifecycle: has taken complex software from concept, to production and maintenance
- Strong interpersonal and communication skills: Excellent written and spoken English; can write coherent documentation; can influence and build consensus
- Ability to work independently and in a distributed team
- Ability to work face to face with key partners and their internal development programs
- Professional and enthusiastic approach to work
- Flair for lateral thinking and problem solving
- Pro-active and self-motivating
- Willingness to be flexible and accept new challenges
Desirable Skills & Experience:
- Experience with Robotics software and systems
- Experience with Linux
- Familiarity with System-on-a-Chip architectures
- An understanding of embedded power management techniques and security technologies.
- Experience with at least one leading RTOS
- Experience with GIT/Gerrit configuration management principles
- Familiarity with open-source project development cycles and contribution processes
- Familiarity with testing methodology and automated testing systems
- Experience with device driver development
- Experience with assembly programming (not necessarily ARM)
- Knowledge of software design techniques and how to maintain compatibility