Position: Middle Embedded Engineer
Category: C++
English level: intermediate
Years of experience: 6


Architecting embedded systems from simple to high performance.

Depending on the requirments, choosing the hardware, dev tools, program architecture (from super loop to RTOS or GPOS).

Implementing the basic operating algorithm - [periodic] or [event driven] read from input devices (sensors, buttons, network interfaces, etc.), digital processing, and update output devices (actuators, display, network interfaces, etc.) within prescribed time interval.

Real time operation. Scheduler, tasks, priorities, interrupts, preemtion. Drawing timing diagrams.

Super loop implementation.

RTOS tasks scheduling, use of primitives (mutexes, semaphores, queues, event flags, timers, etc.).

Avoiding typical critical situations: missing timing deadlines, asynchronous access to a shared resource, deadlock, priority inversion, memory leaks, heap fragmentation, etc.

-------

- Methodologies, frameworks: SDLC, Scrum, ASPICE;

- Requirements engineering: system, software functional and non-functional requirements;

- Architecture: Context, System, Hardware, Software block diagrams, modularity;

- Software design: top-down design, structural programming, flowcharts, statecharts;
- Algorithms and Data structures;

- Programming languages: C (confident), C++(basic), assembler(confident) ;
- IDEs: STM32CubeIDE, System Workbench, Visual Studio Code, Keil, IAR;
- Build: gcc, make, Buildroot;
- Source control: Git (GitHub, GitLab, Bitbucket);

- Software platforms: 
RTOS (RTX, FreeRTOS);
Embedded Linux (using (cli, utils, etc.), building (BusyBox, Buildroot, etc.), booting (U-boot), development (system programming, device drivers)); 
Slightly: QNX, Android;

- Testing and debugging skills (logs, JTAG, oscilloscope, logic analyzer, etc.);

- Architectures: Cortex M0/M0+/M3/M4, Cortex A8; 
- MCUs: STM32, EFR32, ESP32, AVR;
- ASICs: (under NDA)
- MPUs: AM335x;
- Hardware platforms: STM32 Discovery, STM32 Nucleo, BeagleBone Black;
- Peripherals: GPIO, ADC, DAC, SPI, UART, I2C, CAN, DMA, etc.
- Input / output devices: buttons, analog/digital/smart sensors, LEDs, displays, actuators (relays, etc.), memories (Flash, EEPROM), etc.; 
- Modules (NFC, ZigBee, Wi-Fi, GSM, Ethernet, etc.);

- Digital, analog electronics;
- Assembling, soldering skills;

- English: Intermediate (B1);
- German: Elementary (A1).