What are the responsibilities and job description for the Software Engineer position at GO FOTON CORPORATION?
A highly skilled Embedded Software Engineer to develop and maintain software for embedded systems. The role involves working across Linux-based applications, hardware interfacing, firmware collaboration, and PC-side tools to support device configuration, monitoring, diagnostics and basic management of them.
KEY RESPONSIBILITIES:
- Develop and maintain industrial-grade embedded Linux applications (C/C , Python)
- Customize Linux distributions (Yocto)
- Develop and debug device drivers and kernel modules
- Interface with hardware peripherals (UART, SPI, I2C, USB, Ethernet)
- Collaborate with firmware engineers and understand MCU interactions
- Develop interfaces to external applications through ex. SNMP etc.
- Develop PC applications/tools for configuration, visualization, and firmware updates
- Support full product lifecycle from concept to production
PC APPLICATION DEVELOPMENT
-
Develop desktop tools for device configuration, firmware updates, and diagnostics using technologies such as:
- C / Qt
- Python (PyQt, Tkinter)
These tools interact with embedded devices via USB, serial, or network interfaces.
- Develop basic desktop applications and/or API for managing the equipment.
HARDWARE & FIRMWARE INTERACTION
-
Work closely with hardware and firmware teams to:
- Understand schematics and data sheets
- Validate system behavior and signal integrity
- Debug issues across hardware/software boundaries
- Interface with microcontrollers and SoCs
- Perform system-level debugging using tools like GDB, JTAG, logic analyzers
- Optimize performance for CPU, memory, and I/O
PREFERRED SKILLS
- Experience with Yocto or Buildroot
- Familiarity with Linux kernel and driver development
- Experience with GUI frameworks (Qt, .NET, or Python-based GUIs)
- Experience with web-based technology (webserver, Database, Web GUI).
- Experience with debugging tools (oscilloscope, logic analyzer)
- Understanding of networking protocols (TCP/IP, sockets, SNMP)
- Familiarity with fiber optics network
- Knowledge of firmware and RTOS concepts
ESSENTIAL EDUCATIONAL/EXPERIENCE REQUIREMENTS
- Bachelor’s or Master’s degree in Computer Engineering, Electrical Engineering, or Computer Science
- 3 years of experience in embedded systems development
ESSENTIAL SKILLS/TRAITS
- Strong programming skills in C/C
- Experience with Embedded Linux systems and tools
- Knowledge of communication protocols (UART, SPI, I2C, CAN, Ethernet)
- Experience with version control systems (Git)
- Strong problem-solving and debugging abilities
- Strong focus on reliability, safety, and manufacturability in product design.
COMMUNICATION SKILLS
- Strong verbal and written communication skills
- Ability to collaborate across hardware, firmware, and software teams
- Capable of documenting designs and presenting technical information
WORK LOCATION
- This is primarily an on-site role due to hands-on development
- On-site presence required for lab work, debugging, and collaboration
TRAVEL
- Occasional travel may be required for supplier visits, testing, or customer support.
WORK ENVIRONMENT
- This role involves cross-functional collaboration with hardware, firmware, and QA teams. Engineers will work in a lab environment with embedded boards, test equipment, and development tools.
- To collaborate well with global internal and external teams, early morning or late evening online meetings may be required.