Embedded Software Engineer
Rev. 170721
As an Embedded Software Engineer you’ll be part of the development team of our core product, ubiworx™, a software framework that runs on embedded systems to form IoT Gateways that bridge sensors and actuators to data storage and reporting systems in the cloud to form complete end-to-end IoT enabled solutions. You will be in a team of up to 5 engineers and you will contribute to the design, development, implementation, testing and documenting of software, working with colleagues of various disciplines, like electronics, in an exciting and international environment.
Main Tasks and Responsibilities
- Develop/modify/adapt Linux device drivers and board support packages for new processors, memory chips, I/O chipsets, I/O interfaces and boards e.g. x86, ARM, FLASH, DRAM, Ethernet, WiFi, ZigBee, 2G, 3G, CAN, SPI, I2C, I2S,GPIO, USB and PCIe.
- Develop applications that demonstrate and validate new embedded chipsets and boards.
- Debug code at run-time using JTAG or ITP debuggers.
- Profile and optimize the run-time performance of code.
- Create and execute automated unit test, integration test and system test scripts.
- Ensure software meets functional, performance and any standards-based expectations.
- Travel to customersites to integrate, test, commission and demonstrate software.
Essential Skills required
- Master or Bachelor Degree in Computer Engineering, Computer Science or a similar discipline.
- Up to three (3) years of experience in the design and development of software through all stages of the software development lifecycle, from concept through delivery to customer.
- Architecture and design of software using formal methodologies, e.g. UML.
- Advanced C coding of real-time embedded software solutions.
- Linux device driver, kernel and user space application development.
- Multi-thread, multi-process, multi-core processor application development.
- Run-time debugging, performance profiling and performance optimisation of code.
- Strong understanding of electronics and computer architecture fundamentals, e.g. microprocessors (ARM, x86), I/O chipsets, memories, digital buses and I/O interfaces.
- A proactive problem-solver that works well within a team to get complex work done in a professional and timely manner.
- Strong communication skills, written and oral, particularly in English.
- Coding in C++, PHP, Python, Perl, Linux Shell Script (e.g. Bash) or assembler.
- Experience in comms networking protocols, e.g. TCP/IP, UDP, SIP, RTP and Ethernet.
- Programming for other embedded real-time operating systems, e.g. Zephyr, VxWorks and QNX.
- Knowledge of security, cryptography and authentication protocols, e.g. SSL, IPsec, AES, SHA.
- Experience of software version control systems and bug trackers, e.g. Git, Redmine, Jira.
- Knowledge of IoT network protocols, e.g. MQTT and WSN technologies.
What do we offer you?
At Emutex you will collaborate with an international team of colleagues who are all passionate about IoT and technology. You will grow your expertise in a challenging and exciting environment where you will work closely with highly experienced engineers and customers. We have flexible working hours, short communication lines and we do give room for personal development.
We offer a competitive salary for your level of experience. Performance will be regularly reviewed and merits will be commensurate with successful results and the financial profits we collectively achieve as a team.
Main tasks and responsibilities