We have all thought about this at some point in our career: Now, you want to create a suitable project to see if you can explore this idea further or productize it. But which software architecture should I start with? Espruino? Arduino? Micro Python? Segger embOS? MicriumuC/OS-II? And what is the difference between uC/OS-II and uC/OS-III? Should you adopt an open source architecture with a lower initial cost or a commercial solution that requires upfront costs to speed up your design process? What is a software architecture? In this document, the “software architecture†is interpreted as “a specific way of writing softwareâ€. For example, Arduino provides a specific way of writing program code that allows fragments of software to be reused across multiple projects. The software architecture consists of several different parts and is defined by the following components: the programming language, the application programming interface (API), and the connection of certain toolsets. For example, in the case of Arduino and Espruino, the software architecture can be tightly connected to the tool, or it can be separated as in the case of Micrium and FreeRTOS. What is an operating system? So how do you choose a software architecture? First of all, we need to be more explicit about the interpretation of some terms, we have begun to mention the term operating system (OS). What you really need to write is code that can execute your specific requirements, which will distinguish your product from other products. However, you still need to rely on other parts of the software, such as the ADC driver or the file system stack of the SD card. Portions of these software are often referred to as software components. Here is a more substantial metaphor, you can imagine your software components are like bricks, and then the operating system is considered cement. The shape of the bricks is defined in the operating system and how they will interact with other bricks, so when you add more components to the software, they will continue to work together perfectly. This sounds pretty good, but do you really need an operating system? Increasing the operating system also puts an extra load on it, which consumes thousands of bytes of flash memory, adds latency to the response of the event, and takes a little time to learn how to write programs in the operating system environment. Deciding which software architecture to use will determine whether your ideas can be pushed on time or on budget, or put your investment at risk. The general rule of thumb is that if your target flash capacity is 128 KB or higher and you need communication capabilities, you will need some stack (USB, Ethernet, SDIO, CAN, Wi-Fi, BLE). You'd better use the operating system. One of the most important things in the operating system is the scheduler. A scheduler is a component that is used to allocate resources and process time for different tasks that might compete for the same resources. In general, the scheduler has two ways of working, and this is what "real time" means in real-time operating systems (RTOS). Real time means that a specific task will be executed at a specific time. Suppose you get a RF packet that you need to process. Regardless of what your device is currently doing, the core of the real-time operating system will leave its current task and complete this high-priority task. This type of behavior is not the most efficient way to utilize the processor, but for example, in motor control applications, the most important consideration in communication stacks and applications is the issue of reaction time. Comparison of commercial and open source solutions For example, if you have figured out whether you need a real-time operating system and start building software requirements. As you probably know, you need a USB stack and an Ethernet stack with an external MAC/PHY driver to connect your device to the Internet. But where do you start? You really only need to download the latest FreeRTOS template for your preferred microcontroller, and continue to download the open source software and put it on the device? Or do you just need to find a commercial supplier with the software you need and get a complete software portfolio? To make more informed decisions, we often talk about the concept of a total cost of ownership (TCO) for a given solution. The so-called total cost of ownership includes not only the monetary value you pay for the software, but also the time spent looking for solutions, assembling different components, integrating different components into your project, and developing, testing, and producing. . In general, what we see is the total cost of ownership (TCO) of a business solution, which will be lower than the solution for building an open source component. But since commercial solutions involve initial costs, these vendors usually require a fee of between $10,000 and $100,000, depending on the components you need, in the early stages of using the solution. On the other hand, downloading FreeRTOS and starting to assemble your own solution, in some applications with dense resources, the money it spends is relatively cheaper. Deciding on the best solution for your project will depend heavily on whether it is the easiest way for you to make cash or to "pay" for the total cost of ownership. Volvo 60Hz Diesel Generator,Volvo 60Hz Volvo Generator,Volvo 60Hz Power Generator Set,60Hz Diesel Generator Set Shanghai Kosta Electric Co., Ltd. , https://www.generatorkosta.com