ASIS is looking for firmware engineers with varying levels of experience who are driven and motivated by our unique problemset. These roles require dynamic team players who enjoy working with a diverse range of stakeholders and delivery teams as well as individually on a range of operational technology projects. ASIS technologists will be able to deliver outcomes and meet tight deadlines in demanding environments. Successful candidates will have the relevant technology skills, are strong verbal and written communicators and are comfortable with stakeholder engagement. Relevant tertiary qualifications and demonstrable experience will be highly regarded. ASIS develops cutting edge embedded systems for use in diverse environments to the highest levels of reliability and security. As a core part of a team developing full stack solutions to a variety of problems, firmware engineers contribute their knowledge of designing and implementing software to be executed on microcontrollers. Firmware provides managed access to low-level hardware peripherals, fine grained power control and interfaces to higher level components. Familiarity with industry best practise tools, techniques and technologies for current and emerging embedded systems and an understanding of engineering analysis to determine the optimal solution are critical to the role of a firmware engineer. Opportunities for engagement with partners across Australia and the world, and ongoing professional development will enable currency and continuous evolution in the role. We have positions open at APS Level 5, Level 6 and EL1. A candidate at Level 5 would be expected to have one to two years real-world experience and will be working under supervision. A Level 6 candidate would be expected to have more experience and operate with limited supervision within a core group of developers. An EL1 candidate would be expected to be a specialist in their field and lead a group of firmware engineers. The key duties of the position include Role responsibilities The following is an overview of key responsibilities and tasks: Contribute to systems level design by analysing the impacts of firmware on system design. Analyse and develop build environments for controlled firmware builds. Prototype and demonstrate firmware designs on reference design hardware. Design, implement and test firmware systems as part of a development team. Apply best practice configuration management and continuous integration processes. Engage with hardware design practitioners to develop hardware/firmware systems. Engage with higher level software practitioners to develop firmware/higher level software systems. Evaluate new tools and methodologies for improved firmware development. Understand current and emerging Instruction Set Architectures. Contribute to a development team. Contribute to engineering analysis from a firmware perspective. Core skills The following is an overview of skills required to succeed in the role (not all are needed): Experience with the ARM instruction set architecture including Thumb extensions. Experience with the C programming language including pointer usage. Familiarity with software development tools and their roles (editor, compiler, linker, debugger). Experience with bare-metal bring-up of embedded systems including memory management. Experience with RTOS or Real Time Executives and Inter Process Communication. Experience developing with register level hardware peripherals. Understanding of low power design techniques including power gating. Familiarity with the typical busses and interfaces used in embedded systems, including FPGA based interconnects. Experience with the use of debuggers to understand program flow and architecture. Experience with hardware test equipment to verify firmware operation. Education and qualification requirements The following education, qualifications and/or experience will be highly regarded (not all are needed): Bachelors degree in computer science/computer engineering/electronic engineering, or equivalent practical experience. Linux based GCC development toolchains for ARM targets Linux kernel development and cross compilation Understanding of advanced debugging techniques such as instruction level trace Integration with FPGA based peripherals Reverse engineering of ARM and MIPS based low level executable code An interest in continuing development, opportunities for Rust/RISC-V/MIPS