Are you interested in taking responsibility for a good design of the software, from basic driver level to the high layers and user interfaces?

Do you enjoy building an innovative product, from brainstorming the system requirements, defining specifications with the team, designing and implementing code, integrating, testing and debugging and finally having the satisfaction of seeing the entire system starting to work as designed?

Do you feel pride for a well-designed modular software architecture so you can easily port modules to a new platform or drop in an alternative module with similar function and seeing the system work in a different configuration?

Do you enjoy reviewing each other's work in a small team to find issues sooner and save frustration and delay later?

What You Will Bring to eMotorWerks:

You take responsibility for all software related areas of the product, from low-level drivers to embedded applications and communication interfaces.

You develop firmware, from helping define the requirements to successful testing phase for the embedded product based on the Linux OS, with peripherals interfaced via USB, serial, SPI and I2C

You can work with hardware engineers to bring up new boards, debug potential hardware issues, give input to hardware architectures, board schematics/layout and key component selection from the software perspective.

Requirements:

• Demonstrated ability and willingness to make critical system-level design decisions and drive projects from start to finish with minimal supervision

• Demonstrated ability to dive into a project and deal with the uncertainties of new product development, and get hands-on quickly

• Proven ability to perform all low level SW development for custom boards running Linux, including boot loader, U-Boot, kernel, drivers, and applications

• 4+ years of experience in developing embedded systems with excellent C programming and scripting languages skills

• Experience with board bring up, Linux kernel, driver, application development and in debugging crash dumps

• Fluency with the GCC toolchain, Make, buildroot, git, Bash • Experience with Serial interfaces & protocols: RS-232, I2C, SPI, PLC, and Wireless interfaces such as WiFi, Bluetooth, NFC, RFID, cellular

• Familiarity with Network programming using sockets or higher level abstractions and File systems such UBIFS, JFFS2

• Excellent communication skills, and willingness to participate with positive attitude in a team environment

• Bachelor’s degree (Masters preferred) in Electrical Engineering/Computer Science or equivalent.