Bachelors/Masters Degree in Engineering
Position : BSP Engineer
Total experience : 4+ yrs to 10 yrs
Desired Skills And Experience
4+ years of experience in application development, drivers development.
At least 4 years of working experience in the design and development of u-boot and Linux kernel subsystems and drivers.
Excellent programming skills in C/C++ and Hands-on experience in ARM-based SoC.
Experience in BSP and Boot loaders
Linux Device drivers Development and knowledge of RTOS.
Device drivers experience preferably for following devices: UART, I2C, I2S, SPI, GPIO, PCIe, MMC, USB etc.,
Hands-on experience on WIFI and SDIO has added advantage.
Strong debugging skills.
About Divistha Networks
Company background and Vision
We at Neysa believe that good software is one where you don’t have to (necessarily) read the full manual. Good software is intuitive, inviting and accommodating. Most importantly, good software should make life easy. That’s easier said than done, though. Good software is hard to write. For the end user to be required to do the least amount of work, the developer has to do the most. To get the most out of a computer system, the code should be as native as possible. Neysa is out to build the most intuitive network management software ever, and we hope you would write code to bring that vision to life.
Day in the life In this role...
Work with time-sensitive and streaming data for analysis, filtering and sorting, for example, the C++ STL. Create parallel processing architectures which can scale up and down on demand. Interact with external systems and handle their idiosyncrasies in a live, data-heavy, time-constrained environment. Provide a resilient and predictable platform for upper-layer applications. Come up with bespoke solutions for real-world data handling problems. Handle cryptography and communication security over untrusted channels.
On day one, we'll expect you to... Have a deep understanding of object-oriented programming, socket programming and memory management techniques. Have experience with multi-threaded and multi-core programming and it’s associated concurrency, locking and synchronisation techniques. Be aware of interprocess communications (IPC/gRPC) and message queueing. Be comfortable with mathematical functions and the associated libraries in system programming. You also should be unafraid to use math to optimise your code. Understand synchronous and asynchronous communication, and when to use what. Be comfortable in handling low level byte handling operations.
What separates the best from the rest
You will need to have... The initiative to work on your own, at your own pace, but on a schedule. The courage to iterate, re-iterate and the re-re-iterate till you get it right. And then defend your design philosophy. Think through all the possible applications of your work, and then make sure it performs awesome in every one of them. Making the right algorithm choices based on design requirements. Write good, commented and (hopefully) error-free code. Logic failures are acceptable, but poor error handling is not.
What you can expect
The best equipment which complements your talents. The best tools in the business for you to bring your creations to life. A great environment. Flexible work hours, and flexible work locations. You will need to be in office though. The opportunity to make your mark and shape the future. And have fun…
The Technical Skill Tree
Things you must know…
C, C++, Java, system programming, stream programming, socket programming, Linux Internals, Hooks and System Call and Kernel APIs. Locking and synchronising techniques like mutexes, atomics, deadlocks and races and ways to avoid them. “Safe” programming, exception handling. String input/output and manipulation, data structure(hash tables, graphs, stacks, queues, trees, binary trees) and operations on them. System memory management, instruction reordering and memory order.An “code-based” understanding of the TCP /IP stack and other networking protocols.
Great if you know....
Garbage collection in C++, thread-safe and type-safe programming, hierarchal exceptional handling. Specialised algorithms for data collection, analysis and presentation. Understanding of the REST, protobuf, XML, JSON and other data interchange formats. Understanding of cryptographic libraries, key management concepts, and symmetric and asymmetric encryption. STL containers, API service creation, “daemons”, operating system services, microservices,
We'll help you out on ...
Web servers, system administration, website management, code management systems, code debugging systems. CI/CD, Automation frameworks. Version management tools.
The Neysa Team
Neysa is founded by a team which has nurtured a multi-million dollar business from it’s inception and grown it to be the best in its industry. We are problem solvers at heart, and we get our kicks when our ideas are out there, taking a crack in the real world. Never accepting the status quo, we have always pushed the boundaries of what is possible. And changed our lives, the people we work with and the community in which we operate.
• Working knowledge of any one RTOS for example Micrium OS (uCOS), FreeRTOS
• Working knowledge with SiLabs, STMicro, NXP controllers based on Cortex M3, M4, M0+ low power mode
• Peripherals: I2C, SDIO, UART, SPI, Timers, DMA, BT, BLE
• Must have working knowledge of memory optimization and low power
• Good to have: Understanding of MISRA C guideline
• Good to have knowledge of Radio sub GHz protocols
Develop, design, and implement embedded applications.
· Prepares appropriate documentation as required by internal product development processes
· Conducts and participates in design, code and test reviews and inspections, as well as the feasibility, efficacy and compliance to functional and regulatory standards.
· Works closely with the software team, the software verification team, the functional manager and the project manager.
· Collaborates with distributed, cross-functional teams to ensure products meet quality, performance, scalability, reliability and schedule goals.
· Investigates software, hardware, and system problems using a variety of techniques and provides innovative solutions.
· Conduct and participate in reviews and inspections for all elements in the firmware lifecycle to ensure that our code quality and customer satisfaction goals are achieved
· Integrate and validate new product designs
· Provide post-production support
- B.Tech. / M.Tech. (any stream)
· Good knowledge in firmware development field with more than 3 years of experience
· Basic knowledge of software life cycle, algorithm and data structure.
· Excellent knowledge of OS, coding techniques, IP protocols, interfaces and hardware subsystems
· Adequate knowledge of reading schematics and data sheets for components.
· Ability to understand the electrical schematics and work closely with electrical team.
· Experience with Real Time Operating Systems and Embedded Linux.
· Mode of network connectivity - good idea about GSM/GPRS, Wifi, Ethernet mode of connections. TCP, MQTT, HTTP mode of connection will be a big plus
· Protocols Like UART, SPI, I2C, CAN, MODBUS, TCP/IP, USB, Bluetooth.
· Experience in modules like Wi-Fi, BLE, Lora WAN, ZIGBEE, RF etc.
· Should have experience in working with TFT and LED displays.
· Extensive experience in micro-controller/microprocessor (like ARM Cortex M, ESP32, STM Chips, NXP, BeagleBone , ESP chips, BeagleBone black, STM Chips, Atmega chips etc.)
· Familiarity with software configuration management tools, defect tracking tools, and peer review (GIT, SVN)
· History of driving project execution and timely delivery while ensuring a quality focus.
· Experience writing / interfacing with device drivers.
· Experience in Agile development processes and philosophies.
· Strong documentation and writing skills
· Basics of embedded system development
· Embedded C/C++
· Scripting Lang - Python
· Basics of wireless communication
· Strong Problem-Solving Skills
· Analytical Skills (Good Aptitude)
· Communication Skills
- Developing HMI application in Qt or similar UI frameworks
- Develop C++ or Rust backends for the HMI
- Understand and optimize potential performance bottlenecks
o Acceptance criteria: Shall have working experience in creating architectures for at least
Shall be strong in Object-Oriented Design and Thinking.
Shall be strong in documenting software architecture and communicating the same using UML.
Shall be strong in decomposing larger system into smaller units with clear implementation
dependencies marked for planning.
Shall be strong in effort estimation techniques.
Shall possess strong Problem Solving and Analytical Skills.
Shall be strong in C or C++ programing language experience.
Shall possess good understanding of either Linux or QNX or Android Operating Systems
Shall have a strong experience in developing software using in POSIX APIs.
Shall have a strong understanding on Networking, socket programming and working experience
in at least one of the IPC Frameworks like DBUS, SOME/IP, Binders etc.
Working experience with test framework and automation projects such as Robot Framework.
Knowledge on various software licenses and their compatibilities.
Shall posses strong knowledge in bootloaders, system startup, power management, persistency
management, health management and diagnostics framework for automotive systems.
Shall have a good knowledge on Functional Safety.
Shall have a good understanding hardware and processor internals.
Nice to haves:
Knowledge or working experience in AUTOSAR and / or Adaptive Autosar.
Understanding of GNU/Linux and its device driver framework.
Knowledge in “Secure Programming Techniques” is a plus.
Understanding in ARM Trusted Frameworks, Bootloaders & Virtualization Solutions is a plus.
Involvement in open-source projects in the past is a plus.
Knowledge in Package management and installers.
Candidate shall be responsible for the overall quality of the module that he/she is responsible
Candidate shall be responsible for requirement elicitation and architecture of the module for instrument cluster in a production program
Candidate shall help the PM/architect in estimation
What You Need :
Expertise in C++ for more than 6 years
Experience in Automotive is preferred
Understanding of CAN/LIN protocol
Experience with unit testing tool (GTest/ LDRA etc.)
Experience in design tools like Rhapsody is desirable
Experience in Object-Oriented design and Multithreaded programming
Strong analytical and problem solving skills
Strong understanding of computer systems e.g. operating systems, networks, performance optimization, etc
Degree in Computer Science or Computer Engineering or related field
Independent team player with an eye for details and report on status and planning of own work.