For our TOPCON Positioning Solutions BU - Germany or Italy we are looking for a
Lead Software Engineer (C++/Real Time Systems)
The position is Hybrid
we require that the employee visits the office in Geisenheim ( Germany) or Concordia Sulla Secchia (IT) at least 2 days per week, on average
Functional duties:
- Hybrid work in an international (Germany, Italy, Russia, USA) team of developers on the firmware based on RTEMS RTOS intended to geodetical-grade GNSS receivers with a rich functionality.
- Working during normal CET working hours
- Attending physical office will be required occasionally (the schedule is defined based on the local office policy and agreement with the technical team leader)
- Requirement analysis, designing solutions, effort estimation, actual implementation
- Program architecture development, support of existing implementation and adding new functionality
- Work is possible either on Linux or Windows development machine
- Depending on the skills and individual preference working on tasks ranging from business logic development to low level system programming, for example:
- System and application development for Sparc LEON architecture using RTEMS 5 and targeting proprietary ASIC with multiple cores
- Extending programmable API intended for customers and external software developers
- Collaboration with teams of our Linux system developers, DSP FreeRTOS developers, microcontrollers firmware developers on delivering functionality
- Supporting settings storage subsystem
- Supporting networking functionality
- Adding functionality to u-boot bootloader including device initialization
- Working on firmware update feature in u-boot
- Support of multicore execution
- Implementing reliable recovery bootloader to put into ASIC fuses
- Support of drivers for NAND, SD, CAN, Ethernet, USB controllers
- Work with HW teams on testing procedures for various HW subsystems
- Development of data and message exchange library between LEON, ARM and CEVA cores (OpenAMP-based).
- Development application-specific message exchange protocols (IMU, digital radio and others)
- Development of internal messaging APIs to communicate with peripheral devices via SPI, i2c buses (like IMU).
- Diagnosis of HW issues in cooperation with our ASIC developers and other HW developers
- Working on various runtime defects (work with stack traces, hardware breakpoints and hardware debuggers)
- Performance optimization
- Providing help for engineers working on implementing the mathematical algorithms in code
Requirements:
- Experience working in a team in a shared code ownership environment, responsibility and wide knowledge of the programming
- Long term commitment to the work
- University degree Software, Electrical, Computer Engineering ore related
- Good English or good Russian. Based on the location: basic German or basic Italian.
- Experience in C++ development from 5 years.
- Experience with basic development tools and version control (git + pull requests), issue-tracking, continuous integration, continuous delivery, refactoring, and static and runtime code checking.
- Ability to understand existing program architecture and existing source code
- Ability to extend the extend the existing code
- Experience with bare-metal and/or RTOS (RTEMS, FreeRTOS) development
- Ability to read digital schematics
- Experience working with oscilloscope and hardware debuggers (JTAG)
Nice to have:
- Understanding GNSS
- Experience with microcontrollers and/or FPGA programming
- Interrupt-driven programming, understanding multitasking in microcontrollers and in RTOS, understanding how cashes work
- Understanding basic program architecture principles (coupling vs cohesion, composition, inheritance), OOP principles (SOLID), design patterns
- Experience with code optimization (performance, memory consumption)
- Experience troubleshooting run-time issues in embedded systems
- Experience developing programming APIs and documenting them.
- Development for Sparc architecture
- Experience with RTEMS
- Experience with RTC programming, working with SPI, i2c, UART, CAN
- Experience with OpenAMP, mailbox
- Knowledge of networking protocols like UDP, TCP/IP, FTP
- Experience with data transmission protocols
- Basic understanding of HDL and FPGA programming
- DSP programming experience (Blackfin, CEVA)
- Automated unit testing
- Static code analysis
- cmake
- Advanced С++, including С++ templates
- Some experience with Linux development
Topcon is an equal opportunity employer. All applicants will be considered for employment without attention to race, color, religion, sex, sexual orientation, gender identity, national origin, veteran, or disability status.