Our Development Philosophy
Summit Embedded's mission is to deliver embedded software without over-complicating it. We follow a simple process to produce simple software. We also prefer low-cost & open-source hardware & tool chains.
At Summit, we embed the Agile Software Manifesto in everything we do (pun intended):
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
The Agile Manifesto, © 2001, the Agile Manifesto Authors, reproduced from agilemanifesto.org
These four principles are printed on a sticker affixed to each laptop we issue our employees!
Before the first line of code is even written, large companies often dedicate teams of engineers to crank out massive requirements documents detailing every function of software. This approach works well when making small changes to an existing product. At Summit, however, we love to work on the most challenging & innovative new ideas. Our clients have just a high-level idea of how their device will work, but look to us to recommend the hardware, toolchain, and detailed technical requirements. Often times our clients have an idea that has never been attempted before, and they're not even sure if it's possible. So we don't expect them to provide line-by-line requirements for every piece of code.
Let's focus on a specific case study to understand how Summit Embedded will approach your problem:
A client came to Summit Embedded with a new kind of LCD screen that they wanted to implement in a harsh environment. They wanted to select a Linux-capable CPU that was as basic as possible - to optimize both cost and physical packaging. But snappy rendering of high-quality graphics was also a priority.
We implement the Agile Software Manifesto using a phased approach:
Phase 0: Is the idea even possible? And will it fit in our budget?
In this phase, we work with our client to understand what they want at a high level, and develop a plan to work out the details.
This is an example of our focus on “customer collaboration over contract negotiation”. There are many "unknowns" at this stage, so it’s too early to deliver a quote for the entire project. Instead, we deliver a plan to solve those "unknowns".
In our case study, the main unknowns were 1) Which CPU is the best balance of cost, size, and power and 2) Is it even possible to make a driver for the LCD? We knew it was possible, but the amount of effort was an "unknown". We recommended several development platforms to try, including a Toradex Verdin Dev Board and a Raspberry Pi 5 Compute Module Dev Kit.
Disclaimer: RaspberryPi's of years past have earned a (much deserved) reputation as a prototyping platform that isn't suitable for production. However, the new RaspberryPi 5 model makes great strides toward dispelling that reputation. Contact Us to learn more about how NVMe capability & the compute module form factor have changed the game for RaspberryPi.
Phase 1: Create a working proof-of-concept.
In this phase, we spend a small budget to buy hardware to test. At the end of the phase, our unknowns are now known. There is a real device that our client can demo to investors. The demo won't be polished enough for a booth at a trade show, but it proves the idea can be done.
This is an example of our focus on “working software over comprehensive documentation”. The number one priority is to build something real and prove that the idea works. We will also document everything thoroughly, of course. But it’s likely that there will be a few “lessons learned” from this step and documentation will change.
In our case study, we used the Qt platform to test the graphics performance of each CPU family. We selected the Toradex Verdin SoM to ensure the final product would meet the environmental (temperature) requirements. For the LCD driver, we partnered with our PCB design firm to develop adapter boards to connect this new kind of LCD screen. Summit Embedded led the Linux driver development for both DSI-based and LVDS-based interfaces. While the DSI solution included the cost & complexity of an additional SN65DSI84 bridge chip, having a second driver option helped de-risk this phase of the project.
Phase 2: Demo-ready prototype
In this phase, we finalize the smaller details of the design. The last phase gave us confidence that we have the right components in the system. Now we can design custom PCB’s, enclosures, wire harnesses, motor mounts, and create a product that is polished enough for a booth at a trade show.
At this point, the breadth of the project grows significantly as more help comes in to finalize each piece of the system. It’s the most important time to prioritize “individuals and interactions over processes and tools”. Processes and tools are crucial, of course. But each group of experts may use different tools. Altium’s PCB design tool can’t link pinouts to code that is generated with STM32’s CubeIDE. It’s more important that the team communicates openly and works to solve problems quickly.
In our case study, our PCB design partner laid out all the components in a custom carrier board. Our mechanical partner designed an enclosure and performed thermal analysis. Summit Embedded tested & adapted software as needed to support our development partners. We also implemented additional software features that weren’t yet needed in Phase 1. As expected, each of these pieces required multiple iterations. The project stayed on schedule by testing each revision of hardware quickly and with close communication.
Phase 3: Production-Ready
We finalize everything else needed to deliver products to customers. The previous phase gave us a final product. Now we need to assemble devices at scale, provision serial numbers & private keys, generate user manuals, and apply for relevant certifications.
This is the point where “responding to change over following a plan” is crucial. While Summit has a great track record of satisfied customers & on-time delivery, dates & deliverables always change during every project. By Phase 3, the device is much different (much improved!) from the original plan. But all stakeholders are anxious to get the product out to customers. We know it’s all-hands-on-deck to deliver something quickly, yet with high quality so that long-term support does not become a nightmare.
In our case study, the client had facilities to assemble & ship devices. The client also spun up a software team to implement automated testing on the application code. Summit Embedded implemented the infrastructure to provision & log devices. We also implemented Over-the-air update & remote support services (MeshCentral & Mender in this case). Our PCB partner conducted electrical validation testing. Our mechanical design partner conducted a series of environmental tests to ensure the device would meet the harsh environmental requirements - mainly extreme heat, cold, and vibration in this case.