DESPRE COMPANIE

Our company, CBN Agro Tech, has taken on a mission to help farmers protect their stored grains against spoilage by providing them with the latest technology and IoT equipment to remotely monitor their grain storage facilities in real-time, track inventory levels, and receive alerts if any issues are detected.

We develop custom electronics for sensing and automation, plus a cloud-based application enabling our customers to access their data from anywhere using their computer or mobile device.

DE LA ACEEAȘI COMPANIE
Junior Embedded Firmware Developer (for microcontrollers)
Stagiu plătit la CBN Agro Tech (1000) · Începe după sesiune
Categorii:
  • – Embedded & Internet of Things
Oraș:
  • room București

We wish to put a junior on the path to becoming a good system-level software engineer, to be able to develop reliable firmware for any microcontroller architectures (we use AVR and multiple different ARM Cortex-M chips) and interface with a plethora of electronic components / equipment (e.g., temperature sensors, motors, industrial protocols, serial / wireless communication modules etc.).

You will be under the mentorship of a skilled embedded senior with over 7 years of experience of programming MCUs, while also having a Teaching Assistant position at U.P.B. (Automatică și Calculatoare).

You will:

  • Develop firmware for various (mostly, custom-made) microcontroller-based boards;
  • Read technical datasheets for various components and write peripheral device drivers (e.g., chip-to-chip communication, flash memory, multiplexers, sensors etc.);
  • Learn many electronics interfacing protocols (UART, I2C, SPI, OneWire, RS485 etc.);
  • Develop custom MCU bootloaders that safely do remote equipment upgrades;
  • Learn to do speed / space optimizations, as expected in an embedded software setting;
  • Maintain multiple board revisions and make customizations in a modular (organized) fashion;
  • Debug low-level hardware problems using JTAG / multimeters / oscilloscopes / logic analyzers;
  • Test and test again before going into production ;)
  • Understand how most electronic systems work!

Requirements:

  • Finished or currently enrolled in a relevant degree program in computer science or a related field;
  • Moderate C programming skills (at least: have a good understanding of types, pointers, structs, bitwise operators, libc functions + some basic C preprocessor knowledge);
  • Command line experience with compilers & build tools (i.e., IDE agnostic); GCC, compilation flags, linker, makefiles / cmake;
  • Be knowledgeable of computer architecture concepts such as registers, instructions, memory organization etc.;
  • Basic programming experience with some MCU platform (Arduino / AVR or any ARM Cortex-M based architecture will do);
  • Basic gdb debugging experience;
  • Medium Python language skills;
  • Basic Linux skills;
  • Basic electronics knowledge (e.g., but not limited to: Kirchhoff's laws, understand what a resistor / capacitor / transistor does, what is a logic level etc.);
  • Organizational skills (e.g., writing documentation & unit tests);
  • Experience with VCSes (git / mercurial / svn);
  • Optional: experience with embedded communication protocols (SPI, I2C, UART, RS485) is a plus!
  • Optional: experience with reading technical datasheets!
  • Any RTOS experience is a plus!