Designing and developing several system level software and firmware for embedded systems, such as GNU, UNIX, Linux, Window CE, embedded Android and RTOS (Run Time Operating System).
Designing and developing various Linux and Windows applications using C/C++, multi-thread, Winsock, MFC, JSON, XML, OpenGL and DirectX.
Designing and developing drivers for peripherals such as HDMI, TCP/IP, WiFi, USB, RS232, RS485, IR, SPI, CAN, I2C and Telnet.
Writing C/C++ libraries for network, database systems, encryption, decryption, sorting and search.
Working and debugging in embedded environment using JTAG, GDB and Trace 32.
Working with High-level Languages, such as C/C++, VHDL, System C, and Assembly languages, such as, ARM, RISC, MCS51, PIC, ATTiny.
Working with Xilinx and Altera FPGA and CPLD programming and debugging with high frequency signals.
Research, design, develop, and test operating systems-level software.
Set operational specifications and formulate and analyze software requirements.
Applying principles and techniques of hardware schematics, computer science, engineering, and mathematical analysis.