Previous Job
Software Engineer
Ref No.: 18-12936
Location: brea, California
Start Date / End Date: 03/06/2018 to 09/05/2018
Job Title: Software Engineer
Duration: 6 Months
Location: Brea CA
Positions: 4


Objective: To develop low level device software for testing hardware.
Linux, C, driver experience is must. See the 4 short-listed profiles for reference of customer selection.
Detailed Job Description and key skills are highlighted in yellow:
  • Strong Competency in C.
  • Competency in at least one Assembly Language.
  • Familiarity with U-Boot (from a developer perspective)
  • Strong competency with Linux software development.
  • Strong Familiarity with Linux device Drivers.
  • Strong understanding of I2C, SPI, and MDIO.
  • Fair understanding of digital electronics.
  • Ability tread and understand circuit schematics.
  • Ability to effectively use a Volt/Ohm meter and an Oscilloscope.
  • Ability to effectively use a Logic analyzer.
  • Ability to perform at least basic electronics debugging/troubleshooting.
  • A good understanding of microprocessor internals (mostly the registers).
  • An understanding of memory regions, and their uses (heap, stack, IVT, code).
  • Working knowledge of hexadecimal numbers and hexadecimal math.
  • Excellent knowledge of what interrupts are and how they work in code.
  • An understanding of the different kinds of memory (RAM, ROM, Flash), the differences between them and how they are read, written, accessed.
  • Ability to use a debugger to perform at least simple operations such as setting breakpoints, single stepping, examining variable values, examining memory, examining registers - and understanding the when tenable and disable interrupts when single stepping using a debugger.
  • Ability to debug multi-tasking code.
  • The ability tread and understand datasheets, and produce driver code for a given device based on the information contained in its datasheet.
  • How to develop and debug code for peripherals such as UARTs, A/D & D/A converters, timers, PWM generation from a timer, real-time clocks, etc.
  • A good understanding of DMA (Direct Memory Access), and how to implement it for systems which have DMA capability.