Embedded Linux Engineer at Peterson Technology Partners
Richardson, TX
About the Job
Job Description
Position Overview:
We are seeking a skilled Embedded Linux Engineer to join our team. The ideal candidate will have expertise in embedded systems, software development for Linux-based platforms, and experience with various architectures, toolchains, and development environments. The role requires a deep understanding of memory management (e.g., stack vs. heap), global variable storage, and the ability to work with industry-standard tools like GCC, CMake, and Makefiles.
Key Responsibilities:
- Design, develop, and maintain embedded software for Linux-based systems.
- Optimize software for performance and memory efficiency, understanding the nuances of stack and heap usage.
- Work with global and static variables, ensuring efficient storage and access.
- Develop software for various architectures (e.g., ARM, x86, RISC-V).
- Use and customize build systems, including creating and maintaining Makefiles and working with CMake.
- Debug, test, and troubleshoot embedded software using appropriate toolchains and debugging tools.
- Collaborate with hardware engineers to ensure seamless software-hardware integration.
Required Skills and Experience:
- Bachelor's or Master's degree in Computer Science, Electrical Engineering, or a related field.
- Strong programming skills in C/C++ and familiarity with scripting languages (e.g., Python, Bash).
- Experience with at least one embedded architecture (e.g., ARM Cortex, x86, PowerPC).
- Proficiency in using development toolchains like GCC, GDB, and cross-compilers.
- Hands-on experience with build systems (e.g., CMake, Makefiles).
- Solid understanding of memory management principles, including stack vs. heap allocation.
- Knowledge of where global variables are stored in an application.
- Familiarity with Linux kernel development and drivers is a plus.
Preferred Qualifications:
- Experience with real-time operating systems (RTOS) and their integration with Linux.
- Understanding of hardware protocols like SPI, I2C, UART, and CAN.
- Knowledge of version control systems (e.g., Git) and CI/CD pipelines.
- Exposure to debugging tools like Valgrind, strace, and Wireshark.
Soft Skills:
- Strong problem-solving skills and attention to detail.
- Effective communication skills to collaborate within a cross-functional team.
- A proactive approach to learning new technologies and adapting to project requirements.