Embedded Linux Software Engineer

Rev. 180214

As an Embedded Linux Software Engineer you will be responsible for enabling Linux to run on new embedded systems for our international customers. Flavours of Linux distributions scoped in your work will include ubilinux™ (based on Debian), Ubuntu™ and Yocto™. Embedded systems will comprise mainly of Intel and ARM Architecture based CPUs and SoCs. Your work will require you to have deep knowledge and understanding of the Linux kernel and accompanying Board Support Packages (BSP) which will contain device drivers, ranging from memory drivers, to interface and communications drivers. You will adopt, modify, integrate and validate this software to ensure it functions reliably on the embedded systems. As you grow in your role you may also get the opportunity to work with MCU based embedded systems where you will enable light weight real-time operating systems (RTOS) to function on them

 

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

 

 

  • Bachelor’s Degree in Computer Engineering, Computer Science or a similar discipline.
  • Minimum of 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. This can include experience gained in a Master’s Degree project and internship – the experience must be relevant to software development.
  • Strong understanding of electronics and computer architecture fundamentals, e.g. microprocessors (ARM, x86), I/O chipsets, memories, digital buses and I/O interfaces.
  • Strong C coding experience for embedded software solutions.
  • Linux device driver, kernel and user space application development.
  • Real-time, multi-thread, multi-process, multi-core processor application development.
  • Run-time debugging, performance profiling and performance optimisation of code.
  • Experience in networking protocols, e.g. TCP/IP, UDP and Ethernet
  • Key influencer, decision maker and source of innovation and creativity.
  • Architecture and design of software solutions using formal methodologies.
  • A proactive problem-solver that works well within a team to get complex work done in a professional and timely manner.

 

 

Advantageous Skills

 

 

  • Coding in C++, PHP, Python, Perl, Linux Shell Script (e.g. Bash).
  • 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.

Go To Top